Операционные системы учебное пособие (1085734), страница 5
Текст из файла (страница 5)
В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.
При свопинге, в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс перемещается между памятью и диском целиком, то есть в течение некоторого времени процесс может полностью отсутствовать в оперативной памяти. Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.
Иерархия запоминающих устройств. Принцип кэширования данных
Иерархия запоминающих устройств. Принцип кэширования данных
Кэш-память - это способ организации совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных, который позволяет уменьшить среднее время доступа к данным за счет динамического копирования в "быстрое" ЗУ наиболее часто используемой информации из "медленного" ЗУ.
Память вычислительной машины представляет собой иерархию запоминающих устройств (внутренние регистры процессора, различные типы сверхоперативной и оперативной памяти, диски, ленты), отличающихся средним временем доступа и стоимостью хранения данных в расчете на один бит.
Элементы архитектуры операционной системы Windows Server 2003
Любая сложная система должна иметь понятную и рациональную структуру, или делиться на модули, имеющие законченное функциональное назначение с четко оговоренными правилами взаимодействия. Ясное понимание каждого модуля существенно упрощает его понимание и развитие.
Широкая функциональность ОС неизбежно приводит к сложности ее архитектуры, под которой понимают структурную организацию ОС на основе различных модулей. Обычно в состав ОС входят исполняемые модули и объектные модули стандартных для данной ОС форматов, библиотеки разных типов, программные модули специальных формата (например, загрузчик и драйверы), конфигурационные файлы, документация и т.д.
Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на другие платформы. Какой либо единой архитектуры ОС не существует, но есть универсальные подходы к структурированию ОС.
Обзор архитектуры
Упрощенная версия архитектуры.
Существуют четыре типа пользовательских процессов:
-
Фиксированные процессы поддержки системы - например процесс обработки входа в систему и диспетчер сеансов
-
Процессы сервисов - носители Windows-сервисов, например, Task Scheduler
-
Пользовательские приложения - бывают шести типов: 64-разрядные, 32-разрадные, 16-разрядные для Win 3.1, 16-разрядные для DOS, 32-разрядные для POSIX и 32-разрядные для OS/2
-
Подсистемы Окружения - реализованы как часть поддержки среды ОС, предоставляемой пользователям и программистам.
В Windows пользовательские приложения не могут вызывать родные сервисы ОС напрямую, вместо этого они работают с одной или несколькими DLL подсистемами. Назначение DLL -трансляция.
Компоненты ядра
Исполнительная система Windows - содержит базовые сервисы ОС, обеспечивающие управление памятью, процессами и потоками, защиту, ввод/вывод и взаимодействие между процессами.
Ядро - содержит низкоуровневые функции ОС (планирование потоков, диспетчеризацию прерываний и исключений, а также синхронизацию процессов.
Драйверы устройств - драйверы аппаратных устройств, транслирующих пользовательские вызовы функций в/в в запросы, специфичные для конкретного устройства, сетевые драйверы и драйверы файловых систем.
Уровень абстрагирования от оборудования (HAL) - изолирует ядро, драйверы и исполнительную систему от специфики конкретного оборудования.
Подсистема поддержки окон и графики - реализует функции GUI.
Ядро
Ядро состоит из набора функций в Ntoskrnl.exe, предоставляющих фундаментальные механизмы (в том числе планирования потоков и синхронизации), которые используются компонентами исполнительной системы и низкоуровневыми аппаратно-зависимыми средствами поддержки (диспетчеризации прерываний и исключений), различными в каждой процессорной архитектуре. Код ядра написан в основном на С, а ассемблер использовали лишь для решения специфических задач, трудно реализуемых на С.
Объекты ядра
Ядро состоит из низкоуровневых, четко определенных и хорошо предсказуемых примитивов и механизмов операционной системы, позволяющих компонентам исполнительной системы более высокого уровня выполнять свои функции. Ядро отделено от остальной части исполнительной системы; оно реализует системные механизмы и не участвует в принятии решений, связанных с системной политикой. Практически все такие решения, кроме планирования и диспетчеризации потоков, принимаются исполнительной системой.
Одна из групп объектов ядра, называемых управляющими (control objects), определяет семантику управления различными функциями операционной системы. В эту группу входят объекты АРС, DPC (deferred procedure call) и несколько объектов, используемых диспетчером ввода-вывода (например, объект прерывания).
Объекты позволяют ядру контролировать обработку данных процессором и поддерживают объекты исполнительной системы. Большинство объектов уровня исполнительной системы инкапсулирует один или более объектов ядра, включая в себя их атрибуты, определенные ядром.
Другая группа объектов под названием объекты диспетчера (dispatcher objects) реализует средства синхронизации, позволяющие изменять планирование потоков. В группу таких объектов входят поток ядра (kernel thread), мьютекс (mutex), событие (event), семафор (semaphore), таймер (timer), ожидаемый таймер (waitable timer) и некоторые другие. С помощью функций ядра исполнительная система создает объекты ядра, манипулирует ими и конструирует более сложные объекты, предоставляемые в пользовательском.
Уровень абстракции
Одной из важнейших особенностей архитектуры Windows является переносимость между различными аппаратными платформами. Ключевой компонент, обеспечивающий такую переносимость, — уровень абстрагирования от оборудования (hardware abstraction layer, HAL).
HAL — это загружаемый модуль режима ядра (Hal.dll), предоставляющий низкоуровневый интерфейс с аппаратной платформой, на которой выполняется Windows. Он скрывает от операционной системы специфику конкретной аппаратной платформы, в том числе ее интерфейсов ввода-вывода, контроллеров прерываний и механизмов взаимодействия между процессорами, т. е. все функции, зависимые от архитектуры и от конкретной машины.
Когда внутренним компонентам Windows и драйверам устройств нужна платформенно-зависимая информация, они обращаются не к самому оборудованию, а к подпрограммам HAL, что и обеспечивает переносимость этой операционной системы.
Драйверы устройств
Драйверы устройств являются загружаемыми модулями режима ядра (как правило, это файлы с расширением .sys); они образуют интерфейс между диспетчером ввода-вывода и соответствующим оборудованием. Эти драйверы выполняются в режиме ядра в одном из трех контекстов:
-
в контексте пользовательского потока, инициировавшего функцию ввода-вывода;
-
в контексте системного потока режима ядра;
-
как результат прерывания (а значит, не в контексте какого-либо процесса или потока, который был текущим на момент прерывания).
В Windows драйверы устройств не управляют оборудованием напрямую — вместо этого они вызывают функции HAL Драйверы, как правило, пишутся на С (иногда на C++), поэтому при правильном использовании процедур HAL они являются переносимыми между поддерживаемыми Windows архитектурами на уровне исходного кода, а на уровне двоичных файлов — внутри семейства с одинаковой архитектурой. Существует несколько типов драйверов устройств.
Драйверы аппаратных устройств, которые управляют (через HAL) оборудованием, записывают на них выводимые данные и получают вводимые данные от физического устройства или из сети. Есть множество типов таких драйверов —драйверы шин, интерфейсов, устройств массовой памяти и т. д.
Драйверы файловой системы — это драйверы Windows, принимающие запросы на файловый ввод-вывод и транслирующие их в запросы ввода-вывода для конкретного устройства.
Драйверы фильтра файловой системы, которые обеспечивают зеркалирование и шифрование дисков, перехват ввода-вывода и некоторую дополнительную обработку информации перед передачей ее на следующий уровень.
Сетевые редиректоры и серверы, являющиеся драйверами файловых систем, которые передают запросы файловой системы на ввод-вывод другим компьютерам в сети и принимают от них аналогичные запросы.
Драйверы протоколов, реализующие сетевые протоколы вроде TCP/IP, NetBEUI и IPX/SPX.
Драйверы потоковых фильтров ядра, действующие по цепочке для обработки потоковых данных, например при записи и воспроизведении аудио- и видеоинформации.
Усовершенствованные модели драйверов
В Windows 2000 была введена поддержка Plug and Play и энергосберегающих технологий, а также расширена модель драйверов Windows NT, называемая Windows Driver Model (WDM). Windows 2000 и более поздние версии могут работать с унаследованными драйверами Windows NT 4, но, поскольку они не поддерживают Plug and Play и энергосберегающие технологии, функциональность системы в этом случае будет ограничена. С точки зрения WDM, существует три типа драйверов.
Драйвер шины (bus driver), обслуживающий контроллер шины, адаптер, мост или любые другие устройства, имеющие дочерние устройства. Драйверы шин нужны для работы системы и в общем случае поставляются Microsoft. Для каждого типа шины (PCI, PCMCIA и USB) в системе имеется свой драйвер. Сторонние разработчики создают драйверы для поддержки новых шин вроде VMEbus, Multibus и Futurebus.
Функциональный драйвер (function driver) — основной драйвер устройства, предоставляющий его функциональный интерфейс. Обязателен, кроме тех случаев, когда устройство используется без драйверов (т. е. ввод-вывод осуществляется драйвером шины или драйверами фильтров шины, как в случае SCSI PassThru). Функциональный драйвер по определению обладает наиболее полной информацией о своем устройстве. Обычно только этот драйвер имеет доступ к специфическим регистрам устройства.
Драйвер фильтра (filter driver), поддерживающий дополнительную функциональность устройства (или существующего драйвера) или изменяющий запросы на ввод-вывод и ответы на них от других драйверов (это часто используется для коррекции устройств, предоставляющих неверную информацию о своих требованиях к аппаратным ресурсам). Такие драйверы не обязательны, и их может быть несколько. Они могут работать как на более высоком уровне, чем функциональный драйвер или драйвер шины, так и на более низком. Обычно эти драйверы предоставляются OEM-производителями или независимыми поставщиками оборудования (IHV).
Системные процессы
В каждой системе Windows выполняются перечисленные ниже процессы:
-
Процесс Idle (включает по одному потоку на процессор для учета времени простоя процессора).
-
Процесс System (содержит большинство системных потоков режима ядра).
-
Диспетчер сеансов (Smss.exe).
-
Подсистема Windows (Csrss.exe).
-
Процесс входа в систему (Winlogon.exe).
-
Диспетчер управления сервисами (Services.exe) и создаваемые им дочерние процессы сервисов (например, универсальный процесс для хостинга сервисов, Svchost.exe).
-
Серверный процесс локальной аутентификации (Lsass.exe).
Процесс System (с идентификатором 8 в Windows 2000 и идентификатором 4 в Windows XP и Windows Server 2003) служит носителем особых потоков, работающих только в режиме ядра, — системных потоков режима ядра (kernel-mode system threads).
У системных потоков имеются все атрибуты и контексты обычных потоков пользовательского режима, они отличаются тем, что выполняются только в режиме ядра внутри системного кода, загруженного в системное пространство, — будь то Ntoskrnl.exe или какой-либо драйвер устройства. Кроме того, у системных потоков нет адресного пространства пользовательского процесса, и поэтому нужная им динамическая память выделяется из куч памяти операционной системы, например из пула подкачиваемых или неподкачиваемых страниц.