Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.01 c
8-1114973295
MxQ
2005-05-01 22:48
2005.09.18
Векторная карта


1-1124806114
iskatel
2005-08-23 18:08
2005.09.18
сканирование каталога и подкаталогов


3-1123486533
Beginner0
2005-08-08 11:35
2005.09.18
Просмотр через HTML?


4-1122356794
Jupiter
2005-07-26 09:46
2005.09.18
Текущая дата в винде


4-1122307063
dima_shapkin
2005-07-25 19:57
2005.09.18
CM_CANCELMODE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский