Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Уровень аппаратных абстракций (HAL)
Важнейшая особенность архитектуры Windows это переносимость между различными аппаратными платформами. Ключевой компонент, обеспечивающий такую переносимость, это уровень аппаратных абстракций (hardware abstraction layer, HAL). HAL это загружаемый модуль режима ядра (Hal.dll), предоставляющий низкоуровневый интерфейс с аппаратной платформой, на которой выполняется Windows. Он скрывает от ОС специфику конкретной аппаратной платформы, в том числе ее интерфейсов ввода-вывода, контроллеров прерываний и механизмов взаимодействия между процессорами, т.е. все функции, зависимые от архитектуры и от конкретной машины. Когда внутренним компонентам Windows и драйверам устройств нужна платформенно-зависимая информация, они обращаются не к самому оборудованию, а к подпрограммам HAL, что и обеспечивает переносимость ОС. Ядро (Kernel) Ядро (kernel) – компонент исполнительной системы, управляющий процессором. Выполняет планирование и переключение потоков, обработку прерываний и исключений и мультипроцессорную синхронизацию, а также реализует примитивные объекты, используемые исполнительной системой для создания объектов пользовательского режима. Ядро является основой вычислительной модели и обеспечивает поддержку многозадачности. Оно не определяет определенную политику/стратегию для управления процессами, памятью, файлами и устройствами. Ядро обеспечивает определенный уровень поддержки и его можно рассматривать как набор предлагаемых строительных компонент, который вы можете использовать. Клиенты ядра могут комбинировать эти компоненты для построения более сложных компонент, которые уже будут определять политику/стратегию. Ядро предоставляет объекты и потоки (абстракции вычислений) на основе HAL и аппаратного обеспечения. Приложения, которое является клиентом ядра, использует эти абстракции для взаимодействия с аппаратурой. Для реализации объектов и потоков ядро управляет аппаратными прерываниями и исключениями, выполняет планирование и мультипроцессорную синхронизацию. Объекты (Objects) Ядро содержит набор встроенных типов объектов (классы в объектно-ориентированном программировании). Некоторые типы объектов ядра используются самим ядром. Эти объекты позволяют сохранять и управлять состоянием ядра. Другие объекты используются исполнительной системой, подсистемами и кодом приложений как основа вычислительной модели. Объекты ядра должны быть быстродействующими. Они существуют в режиме ядра в соответствующем контексте, здесь отсутствует проверка безопасности по сравнению с “нормальными” объектами для которых такая проверка производится. При этом необходимо учитывать, что объектами ядра нельзя управлять из программ пользовательского режима, а только используя вызовы функций. Существует две группы объектов ядра: управляющие объекты (control objects) диспетчерские объекты (dispatcher objects). Управляющие объекты (Control objects) Управляющие объекты используются для управления аппаратным обеспечением и другими ресурсами ядра. Когда приложение создает новый процесс, оно требует, чтобы ядро создало управляющий объект процесс. После создания операционная система возвращает приложению описатель (handle) созданного объекта процесса и приложение ссылается на объект, используя этот описатель. Когда приложение манипулирует процессом, оно манипулирует объектом процессом ядра. Существуют другие управляющие объекты: объект асинхронный вызов процедуры (asynchronous procedure call, APC), объект отложенный вызов процедуры (deferred procedure call, DPC) и несколько объектов, используемых системой ввода-вывода, в их числе объект прерывание, объект уведомление питания, объект состояние питания. Диспетчерские объекты (Dispatcher objects) Диспетчерские объекты используются для планирования и синхронизации потоков. Каждый диспетчерский объект имеет встроенные характеристики, которые используются для поддержки синхронизации пользовательского уровня. Объект процесс (управляющий объект) это абстракция вычисления, которая включает адресное пространство и набор ресурсов. Однако в Windows объект процесс не может выполняться. Диспетчерский объект - объект поток это активный элемент, выполняемая вычислительная абстракция. Объект поток имеет свой собственный стек и может выполняться в процессе. Когда любое приложение выполняется оно должно иметь ассоциированный с ним управляющий объект процесс и диспетчерский объект поток. Другие диспетчерские объекты используются для реализации различных форм синхронизации. Потоки (Threads) Как уже упоминалось при обсуждении объектов, поток это абстракция вычислений. В Windows объект процесс определяет адресное пространство, в котором один или более потоков могут выполняться. Каждый объект поток представляет отдельную выполняемую сущность внутри процесса. В UNIX может быть только дин поток, выполняемый в каждом адресном пространстве, т.е. существует только один путь выполнения в адресном пространстве процесса. В других современных ОС (Mach, Chorus и NT) можно создать более одного потока (пути выполнения кода) в адресном пространстве процесса. Потоки называют легковесными процессами. Они существуют в адресном пространстве процесса и совместно используют ресурсы (см. Рис. 8 Процессы и потоки).
Рис. 8 Процессы и потоки Планирование потоков В Windows используется приоритетный, с вытеснением и квантованием времени планировщик. Процессор выделяется потоку на квант времени, вычисляемый как несколько тиков системных часов. Планировщик поддерживает 32 уровня приоритета и соответственно столько же различных очередей планировщика. Как и во всех многоуровневых планировщиках, пока существуют потоки в очереди самого высокого приоритета, потоки только из этой очереди будут назначаться на процессор. Если в этой очереди нет больше потоков, тогда планировщик будет обслуживать очередь второго по величине приоритета и т.д. Значения приоритетов группируются так (см. Рис. 9 Уровни приоритета): · шестнадцать уровней реального времени (16-31 Real-time level) · пятнадцать варьируемых (динамических) уровней (1-15 Variable-level) · один системный уровень (0 System-level), зарезервирован для потока обнуления страниц (zero page thread).
Рис. 9 Уровни приоритета |
Последнее изменение этой страницы: 2017-03-17; Просмотров: 741; Нарушение авторского права страницы