Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Режим ядра   Найти похожие ветки 

 
IfBeginThenEnd   (2005-08-24 09:01) [0]

Если кому не лень, объясните мне темному что это такое...


 
Skyle ©   (2005-08-24 09:51) [1]

А что именно непонятно? Что уже пытался читать по этому поводу?

Объяснить-то можно, нужно узнать, в каких терминах рассказывать.


 
Ega23 ©   (2005-08-24 09:55) [2]

Режим ядра - это то, что не режим пользователя.


 
Внук ©   (2005-08-24 09:56) [3]

Процессор умеет поддерживать 4 уровня привилегий (0-3), которые обычно называют колцами защиты. На каждом уровне позволяется выполнять свой набор машинных команд. В системах Windows используются нулевое и третье колца защиты. В нулевом работает ядро операционной системы, в третьем - пользовательские программы и некоторые драйверы. Программы через API запрашивают сервисы операционное системы, которые ОС в большинстве случаев выполняет в нулевом кольце, переключая уровень привилегий процессора туда-обратно. Отсюда и термин - "режим ядра".
 Вот как загнул :))


 
Skyle ©   (2005-08-24 10:02) [4]

Немного добавлю.

> 3] Внук ©   (24.08.05 09:56)
> Процессор умеет поддерживать 4 уровня привилегий (0-3),

Речь идёт о процессорах x86.

> В системах Windows используются нулевое и третье колца защиты
Опять же для x86. А использует Windows 2 кольца только потому, что писалась также и для процессоров Alpha, у которых колец только 2.
К моменту написания W2k поддержка Alpha была отозвана, но изменить конечно уже ничего было нельзя...

> Вот как загнул :))
А можно я тоже попробую? ;-)
Режим ядра - подвал ОС, в котором любой бешенный указатель может устроить армагеддец кому угодно....

;-)


 
Внук ©   (2005-08-24 10:03) [5]

>>Skyle ©   (24.08.05 10:02) [4]
 Точна :)


 
Внук ©   (2005-08-24 10:06) [6]

Три Кольца - премудрым эльфам - для добра их гордого,
Семь Колец - пещерным гномам - для труда их горного,
Девять - людям Средиземья - для служенья черного
И бесстрашия в сраженьях смертоносно твердого,
А одно - всесильное - Властелину Мордора,
Чтоб разъединить их всех, чтоб лишить их воли
И объединить навек в их земной юдоли,
Под владычеством всесильным Властелина Мордора (с)
:)


 
Игорь Шевченко ©   (2005-08-24 10:07) [7]

Skyle ©   (24.08.05 10:02) [4]

Поэтому при появлении синих экранов рекомендуется сносить кривые драйвера для кривого железа.

Кстати, определение:

"Режим ядра - это привилегированный режим работы, в ко­тором код получает прямой доступ ко всем аппаратным ресур­сам и всей памяти, включая адресные пространства всех процес­сов режима пользователя."


 
IfBeginThenEnd   (2005-08-24 10:10) [8]

Ну кое что понятно, теперь, хотя конечно не все. Теперь мона второй вопрос: чем отличается базовый API от API Win32 и какие приложения или что -то еще, какой API используют?

Вопросы эти все возникают потому как попалась в руки книга Гарри Неббета (Справочник по API функциям), и думаю эти вопросы не последние... Спасибо!


 
Суслик ©   (2005-08-24 10:15) [9]

это описано на 5ой странице руссиновича с соломоном


 
Внук ©   (2005-08-24 10:18) [10]

>>IfBeginThenEnd   (24.08.05 10:10) [8]
 Насколько я понимаю, тут речь идет о том, что Windows поддерживает несколько окружений - например POSIX, ну и Win32 - как основное, но не единственное. Все эти подсистемы работают через какой-то общий базовый API. При этом API Win32 почти всегда просто передает вызовы пользователя этому базовому API. Вот только что и в каких файлах реализовано (kernel32.dll, ntdll.dll, oskernel.sys) - уже не помню.


 
IfBeginThenEnd   (2005-08-24 10:18) [11]

Суслик ©   (24.08.05 10:15) [9]

может быть...
но к сожаленю этой книги под рукой нет и небыло (((


 
Игорь Шевченко ©   (2005-08-24 10:18) [12]


> чем отличается базовый API от API Win32 и какие приложения
> или что -то еще, какой API используют?


Тем, что базовый API используют и другие подсистемы, например, подсистема OS/2 или POSIX


> Вопросы эти все возникают потому как попалась в руки книга
> Гарри Неббета (Справочник по API функциям),


Не рано Неббета читать ?


 
Суслик ©   (2005-08-24 10:22) [13]


>  [11] IfBeginThenEnd   (24.08.05 10:18)
> Суслик ©   (24.08.05 10:15) [9]
>
> может быть...
> но к сожаленю этой книги под рукой нет и небыло (((

крайне советую купить.
Я сам ее не читал (пока). Но до 5й страницы уже прочел - могу в приличном обществе поумничать :)


 
Игорь Шевченко ©   (2005-08-24 10:23) [14]


> Вот только что и в каких файлах реализовано (kernel32.dll,
> ntdll.dll, oskernel.sys) - уже не помню


Во-первых, подсистема Win32 жестко встроена в ядро системы, поэтому подсистемно-независимое ядро в NT-системах это некоторое несоответствие истине. Под ядром имеется в виду начинка ntoskrnl.exe
Сделано это встраивание для увеличения быстродействия.

Во-вторых, все вызовы API приходят в итоге в NTDLL.DLL, кроме оконной и графической подсистемы, которая сама вызывает ядерные функции.


 
MOA ©   (2005-08-24 10:24) [15]

Вот какая штука.
Мы пишем ОС. Мы хотим добиться, чтобы ошибки приложений не влияли (влияли как можно меньше) на работу ОС. И тут мы сталкиваемся с такой проблемой - приложение может "нечаянно" (вследствие ошибки) - модифицировать код или данные ОС (или некорректно обратиться к устройству), если код ОС "виден" приложению.
Традиционное решение следующее. В процессоре организуются минимум два "режима" - "привелигированный" и "пользователя". "В железе" это реализуется как два совершенно независимых набора регистров, включая регистры управления доступом к ОЗУ.
Пусть приложение хочет прочесть файл. Имя файла приложение знает, теперь нужно передать это имя ОС. Однако, доступа к той части ОЗУ, где находится ОС приложение не имеет (мы ведь этого и добивались). Значит, приложение делает так - заполняет именем фапйла и кодом операции некие ячейки памяти, в разных процессорах - по разному, и вызывает программное прерывание. При прерывании в процессор загружается слово состояния процессора, один (два) из битов которого - как раз режим работы процессора, а старое слово - сохраняется. Процессор переходит в режим "система" (т.к. бит в PSW заставляет) и переключается на системный набор регистров.
Теперь необходимо прочитать данные из области приложения - в разных процессорах по-разному, обычно в ассемблере есть команды "обращение в область предыдущего состояния", операция выполняется, формируется код завершения и происходит возврат из прерывания. При возврате считывается старое PSW (Processor Status Word) - бит заставляет переключиться в режим "пользователь" - набор регистров возвращается в режим "пользователь" - едем дальше ;).


 
Внук ©   (2005-08-24 10:25) [16]

>>Игорь Шевченко ©   (24.08.05 10:23) [14]
>>Во-вторых, все вызовы API приходят в итоге в NTDLL.DLL, кроме оконной и графической подсистемы, которая сама вызывает ядерные функции
 Про это было у Юаня. Но я его не осилил пока :)


 
IfBeginThenEnd   (2005-08-24 10:25) [17]

>>Внук ©   (24.08.05 10:18) [10]
>>Игорь Шевченко ©   (24.08.05 10:18) [12]

Cпасибо!!

>>Игорь Шевченко ©   (24.08.05 10:18) [12]
>>Не рано Неббета читать ?

Да может и рано... попалась просто в руки. Интересно. Хотя многое не понятно. Но не считаю что в этом есть что-то зазорное.


 
IfBeginThenEnd   (2005-08-24 10:29) [18]

MOA ©   (24.08.05 10:24) [15]

тож пасибо!


 
Игорь Шевченко ©   (2005-08-24 10:33) [19]

IfBeginThenEnd   (24.08.05 10:25) [17]

Я бы все-таки рекомендовал (если интересен этот вопрос), начать с хорошей книжки Соломона и Руссиновича: "Внутреннее устройство Windows 2000", где объясняются механизмы работы системы. Книжка Неббета объясняет как пользоваться тем или иным механизмом, но практически не объясняет, зачем им пользоваться. Соломон же с Руссиновичем объясняют, зачем, причем очень подробно и с картинками, но не объясняют, как.


 
IfBeginThenEnd   (2005-08-24 10:39) [20]

Игорь Шевченко ©   (24.08.05 10:33) [19]

Спасибо!!! Всегда нравились Ваши ответы!
З.Ы. Иду на Books.ru



Страницы: 1 вся ветка

Текущий архив: 2005.09.18;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.039 c
14-1124523261
Катя_В
2005-08-20 11:34
2005.09.18
Ошибка при регистрации на borland.com


2-1123756104
Гость22
2005-08-11 14:28
2005.09.18
Куда кидать инишку?


1-1124978791
Aleksandr.
2005-08-25 18:06
2005.09.18
Как отловить начало и конец изменения размера панели?


14-1124796782
Antonn
2005-08-23 15:33
2005.09.18
Реализация голосования на сайте


14-1124442990
Vlad Oshin
2005-08-19 13:16
2005.09.18
В свете последних МР, PM пятницы и лампочки на потолке.