Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
236
Добавлен:
20.02.2016
Размер:
133.12 Кб
Скачать

[2.3.1] Многопоточность

Каждая исполняющаяся в NT программа представляется как процесс.

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

Единицей исполнения в NT является поток (thread). Начальный поток создается при создании процесса, и затем он может создать дополнительные потоки.

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

[2.3.2] Вытесняющая многозадачность

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

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

Необходимо определить еще 2 термина: диспетчеризация и планирование.

Диспетчеризация(dispatching)– механизм переключения с одного потока исполнения на другой

Планирование(sheduling) – механизм определения потока, который должен выполняться следующим на текущем процессоре.

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

Каждый поток имеет приоритет, также называемый приоритетом планирования, что подчеркивает его важность при выборе для исполнения очередного потока.

[2.3.3] Виртуальная память с подкачкой страниц по требованию [2.3.4] Мультипроцессорная обработка

NT поддерживает только архитектуру с симметричной мультипроцессорной обработкой – SMP. В этой архитектуре все процессоры имеют равные возможности доступа к памяти и периферийному оборудованию, а код ОС может исполняться на любом свободном процессоре.

[2.3.5] Модель модифицированного микроядра

На NT иногда ссылаются как на операционную систему на основе микроядра (microkernel-based operating system). Идея, лежащая в основе концепции микроядра, состоит в том, что все компоненты ОС за исключением небольшой основы (собственно, микроядро) исполняются как процессы пользовательского режима. Базовые компоненты в микроядре исполняются в привилегированном режиме.

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

Недостаток чистой архитектуры микроядра – низкая производительность. Любое взаимодействие между компонентами ОС при такой схеме нуждается в межпроцессном сообщении с длительными переключениями между задачами.

NT использует уникальный подход, известный как модифицированное микроядро. Этот подход является промежуточным между чистым микроядром и монолитной структурой.

Опишем компоненты этой архитектуры (рис.):

В пользовательском режиме работают прикладные программы и набор подсистем, относящихся к одному из двух классов – подсистемы окружения и неотъемлемые подсистемы. Подсистемы и прикладные программы реализованы как процессы, однако способ создания подсистем и интеграции их с ОС недокументирован.

Подсистемы окружения (environment subsystems) – предоставляют прикладным программам интерфейс программирования, специфичный для некоторой ОС (WIN32, POSIX, OS/2, DOS).

Неотъемлемые подсистемы исполняют важные функции ОС. Среди таких подсистем – подсистема безопасности, служба рабочей станции и служба сервера.

Для выполнения задач, которые не могут быть выполнены в пользовательском режиме, все подсистемы ОС NT полагаются на системные сервисы, экспортируемые режимом ядра. Эти сервисы известны как родной API. Этот API состоит примерно из 250 функций, и доступно через модуль ntdll.dll.

Прикладная программа использует интерфейс программирования, предоставляемый какой-либо одной подсистемой окружения, либо использует напрямую «родной» интерфейс программирования.

В режиме ядра работает Исполнительная система NT (NT Executive). Она сама по себе является законченной ОС со своим интерфейсом программирования как для пользовательского режима, так и для режима ядра.

Исполнительная система состоит из набора подсистем, Микроядра и Слоя Абстрагирования от Оборудования. Подсистемы Исполнительной системы и Микроядро находятся в едином модуле – ntoskrnl.exe. Слой Абстрагирования от Оборудования находится в модуле hal.dll. Все загруженные системой драйвера также являются частью исполнительной системы.

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

Соседние файлы в папке Лабы по драйверам