Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

2.3.1.6. Исполнительный уровень

Исполнительный уровень находится ниже уровня ядра NTOS. Для его реализации использовался язык программирования С, что снижает затраты на его перенос в системы с другим набором устройств. Все компоненты исполнительного уровня используют в своей работе абстракции управления, которые предоставляются уровнем ядра.

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

Управлением большинства используемых на исполнительном уровне объектов режима ядра занимается диспетчер объектов. В качестве таких объектов выступают драйверы ввода-вывода, устройства, файлы, процессы, потоки, семафоры, таймеры и др. Ядро системы размещает и использует объекты режима ядра в виде определенных структур данных. Эти структуры в Windows имеют много общих черт, так что для их управления используются унифицированные способы.

Диспетчером объектов предоставляются следующие средства: предоставление имен объектам в пространстве имен NT, средства для подсчета ссылок на указатели в режиме ядра и ссылок на дескрипторы, управление размещением и освобождением памяти для объектов, предоставление дескрипторов для доступа к объектам, учет квот, управление жизненным циклом каждого объекта. Таким образом, диспетчер объектов управляет теми структурами данных ядра, которым нуждаются в перечисленных средствах.

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

Новые версии Windows имеется лучше поддерживают работу драйверов устройств в пользовательском режиме (эта модель более предпочтительна для всех новых драйверов устройств). Для Windows уже созданы сотни тысяч разных драйверов, которые обеспечивают работу более миллиона различных устройств. Очевидно, что возникающие ошибки в процессах пользовательского режима менее критичны, чем ошибки в режиме ядра, так как первые приводят лишь только к недоступности устройства, а последние могут привести к полному отказу системы. Поэтому для системы в целом перенос кода драйверов устройств из ядра в процессы пользовательского режима обеспечивает более стабильную работу и повышает отказоустойчивость. Тенденции такого переноса в проектировании операционных систем ускоряются из года в год.

Средства для Plug-and-Play и управление электропитанием также являются составляющими диспетчера ввода-вывода. Информация об обнаружении в системе новых устройств передается специальному подкомпоненту Plug-and-Play, который оповещает службу пользовательского режима (диспетчер Plug-and-Play). Служба производит поиск соответствующего драйвера устройства в системе и загружает его при наличии. Поиск драйвера устройства усложняется сопоставлением версий предполагаемых драйверов и версий аппаратных устройств.

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

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

Архитектура виртуальной памяти с подкачкой на исполнительном уровне реализована диспетчером памяти. Данный диспетчер занимается управлением физическими фреймами, отображением виртуальных страниц на физические фреймы, файлом подкачки, который располагается на диске и используется для хранения виртуальных страниц, не загруженных в память. Кроме этого он также предоставляет средства для серверных приложений (например, систем управления базами данных), а для языков программирования реализует специальные компоненты времени исполнения (например, сборщики мусора).

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

Монитор безопасности в Windows реализует механизмы безопасности, поддерживающие соответствующие международные стандарты в сфере компьютерной безопасности. Эти стандарты регламентирует правила, которые должны соблюдаться в системе (например, правила аутентификации при входе в систему, рекомендации по заполнению нулями выделенной памяти и др.). Монитор безопасности в ядре Windows осуществляет все проверки доступа в системе, реализуя одно из основных правил международных стандартов о едином модуле проверки.

Исполнительный слой содержит также диспетчер конфигурации, реализующий системный реестр. Раздел реестра SYSTEM является самым важным разделом системы. При ее загрузке он также загружается в память. Затем после инициализации исполнительным уровнем своих основных компонентов копия раздела SYSTEM из памяти снова связывается со своей копией, находящейся в файловой системе. Таким образом, для копии раздела SYSTEM на диске уменьшается вероятность получения повреждений.

На исполнительном уровне обеспечением межпроцессного обмена занимается компонент LPC. Для реализации клиент-серверной модели вычислений RPC использует компонент LPC в качестве одного из средств транспортировки данных. В качестве средства переноса данных RPC также использует стек протоколов TCP/IP и именованные каналы.

Предыдущий раздел Оглавление Следующий раздел