Предыдущий раздел | Оглавление | Следующий раздел |
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 и именованные каналы.
Предыдущий раздел | Оглавление | Следующий раздел |