Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Основные функции, выполняемые уровнем HAL ОС Windows 2000



Над уровнем HAL располагается уровень, содержащий ядро ОС, а также драйверы устройств. Существуют четыре вида драйверов: (1) аппаратных средств, (2) файловой­системы, (3) фильтров и (4) сетевых устройств переадресации и серверов. Из этих четырех типов только драйверы аппаратных средств имеют непосредственный доступ к физическому оборудованию и согласованно используют механизм HAL.

Назначение ядра заключается в том, чтобы сделать всю остальную часть операционной системы не зависимой от аппаратуры и таким образом легко переносимой на­другие платформы. Ядро получает доступ к аппаратуре через уровень HAL. Оно построено на чрезвычайно низкоуровневых службах уровня HAL, формируя из них абстракции более высоких уровней. Например, у уровня HALL есть вызовы для связывания процедур обработки прерываний с прерываниями и установки их приоритетов, но больше практически ничего уровень HAL в этой области не делает. Ядро, напротив, представляет полный механизм для переключения контекста. Оно должным образом сохраняет все регистры центрального процессора, изменяет таблицы страниц, сохраняет кэш центрального процессора и т. д.

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

С точки зрения остальной ОС переключение потоков автоматически осуществляется более низкими уровнями, так что для более высоких уровней в этом отношении не остается никакой работы. Помимо предоставления абстрактной модели аппаратуры более высоким уровням и управления переключениями потоков ядро также выполняет еще одну ключевую функцию - предоставляет низкоуровневую поддержку двум классам объектов: управляющим объектам и объектам диспетчеризации.

Эти объекты не являются объектами, к которым пользовательские процессы получают дескрипторы, но представляют собой внутренние объекты, на основе которых исполняющая система строит объект пользователя. Управляющие объекты - это объекты, управляющие системой, включая примитивные объекты процессов,объекты прерываний, объекты DPC (Deferred Procedure­Call - отложенный вызов процедуры) и АРС (Asynchronous Procedure Call - асинхронный вызов процедуры). Объект DPC используется, чтобы отделить часть процедуры обработки прерываний, для которой время является критичным, от той ее части, для которой время некритично.

Как правило, процедура обработки прерываний сохраняет несколько аппаратных регистров, связанных с прерывающим устройством ввода-вывода, чтобы их можно было потом восстановить, и разрешает аппаратуре продолжать работу, но оставляет большую часть обработки на потом. Например, когда пользователь нажимает на клавишу, процедура обработки прерываний от клавиатуры считывает из регистра код нажатой клавиши и разрешает прерывание от клавиатуры. Но эта процедура не должна немедленно обрабатывать введенный символ, особенно если в данный момент происходит что-то более важное (т. е. с более высоким приоритетом). Пока обработка клавиши занимает не более 100 мс, пользователь ничего не заметит. Отложенные вызовы процедуры также применяются для слежения за таймерами и другой активностью, для которой не требуется немедленная обработка. Очередь DPC представляет собой напоминание о том, что есть работа, кото-­рую следует выполнить позднее. Объект АРС похож на отложенный вызов процедуры DPC, но отличается тем, что асинхронный вызов процедуры выполняется в контексте определенного процесса. Когда обрабатывается нажатая клавиша, не имеет значения, в каком контексте работает DPC, так как всё, что требуется сделать, - это исследовать введенный код и, возможно, поместить его в буфер в ядре. Однако если по прерыванию потребуется скопировать буфер из пространства ядра в адресное пространство пользовательского процесса (например, по завершении операции чтения модема), тогда процедура копирования должна работать в контексте получателя.

Контекст получателя нужен для того, чтобы в таблице страниц одновременно содержались и буфер ядра, и буфер пользователя (все процессы содержат в своем адресном пространстве все ядро целиком!). Еще один тип объектов ядра - объекты диспетчеризации. К ним относятся мьютексы, события, таймеры и другие объекты, изменения состояния которых могут ждать потоки. Причина, по которой они должны обрабатываться ядром, заключается в том, что они тесно переплетены с планированием потоками, что входит в круг задач ядра.





Дата публикования: 2014-11-04; Прочитано: 410 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...