Форум: "Потрепаться";
Текущий архив: 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.5 MB
Время: 0.01 c