Вторую часть Windows NT, работающую в режиме пользователя, составляют серверы – так называемые защищенные подсистемы. Серверы Windows NT называются защищенными подсистемами, так как каждый из них выполняется в отдельном процессе, память которого отделена от других процессов системой управления виртуальной памятью NT executive. Так как подсистемы автоматически не могут совместно использовать память, они общаются друг с другом посредством посылки сообщений. Сообщения могут передаваться как между клиентом и сервером, так и между двумя серверами. Все сообщения проходят через исполнительную часть Windows NT. Ядро Windows NT планирует нити защищенных подсистем точно так же, как и нити обычных прикладных процессов.

Поддержку защищенных подсистем обеспечивает исполнительная часть – Windows NT executive, которая работает в пространстве ядра и никогда не сбрасывается на диск. Ее составными частями являются:

·  Менеджер объектов. Создает, удаляет и управляет объектами NT executive – абстрактными типами данных, используемых для представления ресурсов системы.

·  Монитор безопасности. Устанавливает правила защиты на локальном компьютере. Охраняет ресурсы операционной системы, выполняет защиту и регистрацию исполняемых объектов.

·  Менеджер процессов. Создает и завершает, приостанавливает и возобновляет процессы и нити, а также хранит о них информацию.

·  Менеджер виртуальной памяти.

·  Подсистема ввода-вывода. Включает в себя следующие компоненты:

–  менеджер ввода-вывода, предоставляющий средства ввода-вывода, независимые от устройств;

–  файловые системы – NT-драйверы, выполняющие файл-ориентированные запросы на ввод-вывод и транслирующие их в вызовы обычных устройств;

–  сетевой редиректор и сетевой сервер – драйверы файловых систем, передающие удаленные запросы на ввод-вывод на машины сети и получающие запросы от них;

–  драйверы устройств NT executive – низкоуровневые драйверы, которые непосредственно управляют устройством;

–  менеджер кэша, реализующий кэширование диска.

Исполнительная часть, в свою очередь, основывается на службах нижнего уровня, предоставляемых ядром (его можно назвать и микроядром) NT. В функции ядра входит:

·  планирование процессов,

·  обработка прерываний и исключительных ситуаций,

·  синхронизация процессоров для многопроцессорных систем,

·  восстановление системы после сбоев.

Ядро работает в привилегированном режиме и никогда не удаляется из памяти. Обратиться к ядру можно только посредством прерывания. Ядро расположено над уровнем аппаратных абстракций (Hardware Abstraction Level HAL), который концентрирует в одном месте большую часть машинно-зависимых процедур. HAL располагается между NT executive и аппаратным обеспечением и скрывает от системы такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и механизмы взаимодействия между процессорами. Такое решение позволяет легко переносить Windows NT с одной платформы на другую путем замены только слоя HAL.

При создании NT разработчики руководствовались задачами улучшения производительности и сетевых возможностей, а также требованием поддержки определенного набора прикладных сред. Эта цель была достигнута продуманным разделением функций между модулями ядра и остальными модулями. Например, передача данных в файловую систему и по сети производится быстрее в пространстве ядра, поэтому внутри ядра NT выделены буфера для небольших по объему (от 16 до 32 Кб) операций чтения и записи, являющихся типичными для приложений клиент-сервер и распределенных приложений. Размещение этих функций ввода-вывода внутри ядра, может, и портит академическую чистоту микроядра NT, но соответствует цели создания NT.

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

Наиболее важной подсистемой окружения является Win32 – подсистема, которая обеспечивает доступ для приложений к 32-bit Windows API. Дополнительно эта система обеспечивает графический интерфейс с пользователем и управляет вводом/выводом данных пользователя. Также поддерживаются подсистемы POSIX, OS/2, 16-разрядная Windows и MS-DOS.

Каждая защищенная подсистема работает в режиме пользователя, вызывая системный сервис NT executive для выполнения привилегированных действий в режиме ядра. Сетевые серверы могут выполняться как в режиме пользователя, так и в режиме ядра, в зависимости от того, как они разработаны.

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

Основным средством, скрепляющим все подсистемы Windows NT в единое целое, является механизм вызова локальных процедур (Local Procedure Call – LPC). LPC представляет собой оптимизированный вариант более общего средства – удаленного вызова процедур (RPC), которое используется для связи клиентов и серверов, расположенных на разных машинах сети.

Средства LPC поддерживают несколько способов передачи данных между клиентами и серверами: один обычно используется для передачи коротких сообщений, другой – для длинных сообщений, а третий оптимизирован специально для использования подсистемой Win32. Каждая подсистема устанавливает порт - канал связи, посредством которого с ней могут связываться другие процессы. Порты реализуются как объекты.

Windows NT использует защищенные подсистемы для того, чтобы:

·  обеспечить несколько программных интерфейсов (API), по возможности не усложняя при этом базовый программный код (NT executive);

·  изолировать базовую операционную систему от изменений или расширений в поддерживаемых API;

·  объединить часть глобальных данных, требующихся всем API, и в то же время отделить данные, использующиеся каждым отдельным API от данных, использующихся другими API;

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

·  позволить операционной системе расширяться в будущем за счет новых API.

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

Микроядро NT служит, главным образом, средством поддержки для переносимой основной части ОС – набора пользовательских сред. Концентрация машинно-зависимых программ внутри микроядра делает перенос NT на разнообразные процессоры относительно легким. Но в то время, как некоторые микроядра (Mach и Chorus) предполагается поставлять в качестве самостоятельного программного продукта, из операционной системы Windows NT ядро вряд ли может быть вычленено для отдельного использования. Это является одной из причин того, что некоторые специалисты не считают Windows NT истинно микроядерной ОС в том смысле, в котором таковыми являются Mach и Chorus. Те же критики отмечают также, что NT не исключает, как это положено, все надстроенные службы из пространства ядра и что драйверы устройств в NT по минимуму взаимодействуют с ядром, предпочитая работать непосредственно с лежащим ниже слоем аппаратной абстракции HAL.

6.2. Процессы и нити. Алгоритмы планирования

В разных ОС процессы реализуются по-разному. Эти различия заключаются в том, какими структурами данных представлены процессы, как они именуются, какими способами защищены друг от друга и какие отношения существуют между ними. Процессы Windows NT имеют следующие характерные свойства:

·  процессы Windows NT реализованы в форме объектов, и доступ к ним осуществляется посредством службы объектов;

·  процесс Windows NT имеет многонитевую организацию.;

·  как объекты-процессы, так и объекты-нити имеют встроенные средства синхронизации;

·  менеджер процессов Windows NT не поддерживает между процессами отношений типа "родитель-потомок".

В любой системе понятие "процесс" включает следующее:

·  исполняемый код;

·  собственное адресное пространство, которое представляет собой совокупность виртуальных адресов, которые может использовать процесс;

·  ресурсы системы, такие как файлы, семафоры и т. п., которые назначены процессу операционной системой;

·  хотя бы одну выполняемую нить.

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

В Windows NT процесс – это просто объект, создаваемый и уничтожаемый менеджером объектов. Объект-процесс, как и другие объекты, содержит заголовок, который создает и инициализирует менеджер объектов. Менеджер процессов определяет атрибуты, хранимые в теле объекта-процесса, а также обеспечивает системный сервис, который восстанавливает и изменяет эти атрибуты.

В число атрибутов тела объекта-процесса входят:

·  идентификатор процесса – уникальное значение, которое идентифицирует процесс в рамках операционной системы;

·  токен доступа – исполняемый объект, содержащий информацию о безопасности;

·  базовый приоритет – основа для исполнительного приоритета нитей процесса;

·  процессорная совместимость – набор процессоров, на которых могут выполняться нити процесса;

·  предельные значения квот – максимальное количество страничной и нестраничной системной памяти, дискового пространства, предназначенного для выгрузки страниц, процессорного времени – которые могут быть использованы процессами пользователя;

·  время исполнения – общее количество времени, в течение которого выполняются все нити процесса.

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

Объект-нить имеет следующие атрибуты тела:

·  идентификатор клиента – уникальное значение, которое идентифицирует нить при ее обращении к серверу;

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

·  динамический приоритет – значение приоритета нити в данный момент;

·  базовый приоритет – нижний предел динамического приоритета нити;

·  процессорная совместимость нитей – перечень типов процессоров, на которых может выполняться нить;

·  время выполнения нити – суммарное время выполнения нити в пользовательском режиме и в режиме ядра, накопленное за период существования нити;

·  состояние предупреждения – флаг, который показывает, что нить должна выполнять вызов асинхронной процедуры;

·  счетчик приостановок – текущее количество приостановок выполнения нити.

Кроме перечисленных, имеются и некоторые другие атрибуты.

Как видно из перечня, многие атрибуты объекта-нити аналогичны атрибутам объекта-процесса. Весьма сходны и сервисные функции, которые могут быть выполнены над объектами-процессами и объектами-нитями: создание, открытие, завершение, приостановка, запрос и установка информации, запрос и установка контекста и другие функции.

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

В ОС Windows NT нить в ходе своего существования может иметь одно из шести состояний (рис. 23). Жизненный цикл нити начинается в тот момент, когда программа создает новую нить. Запрос передается NT executive, менеджер процессов выделяет память для объекта-нити и обращается к ядру, чтобы инициализировать объект-нить ядра. После инициализации нить проходит через следующие состояния.

·  Готовность. При поиске нити на выполнение диспетчер просматривает только нити, находящиеся в состоянии готовности, у которых есть все для выполнения, но не хватает только процессора.

 

Рис. 23. Граф состояний нити

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

·  Выполнение. Как только происходит переключение контекстов, нить переходит в состояние выполнения и находится в нем до тех пор, пока либо ядро не вытеснит ее из-за того, что появилась более приоритетная нить или закончился квант времени, выделенный этой нити, либо нить завершится вообще, либо она по собственной инициативе перейдет в состояние ожидания.

·  Ожидание. Нить может входить в состояние ожидания несколькими способами: нить по своей инициативе ожидает некоторый объект для того, чтобы синхронизировать свое выполнение; операционная система (например, подсистема ввода-вывода) может ожидать в интересах нити; подсистема окружения может непосредственно заставить нить приостановить себя. Когда ожидание нити подойдет к концу, она возвращается в состояние готовности.

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

·  Завершение. Когда выполнение нити закончилось, она входит в состояние завершения. Находясь в этом состоянии, нить может быть либо удалена, либо не удалена. Это зависит от алгоритма работы менеджера объектов, в соответствии с которым он и решает, когда удалять объект. Если executive имеет указатель на объект-нить, то она может быть инициализирована и использована снова.

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

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

Каждый раз, когда необходимо выбрать нить для выполнения, диспетчер прежде всего просматривает очередь готовых нитей реального времени и обращается к другим нитям, только когда очередь нитей реального времени пуста. Большинство нитей в системе попадают в класс нитей с переменными приоритетами, диапазон приоритетов которых от 0 до 15. Этот класс имеет название "переменные приоритеты" потому, что диспетчер настраивает систему, выбирая (понижая или повышая) приоритеты нитей этого класса.

Алгоритм планирования нитей в Windows NT объединяет в себе обе базовых концепции - квантование и приоритеты. Как и во всех других алгоритмах, основанных на квантовании, каждой нити назначается квант, в течение которого она может выполняться. Нить освобождает процессор, если:

·  блокируется, уходя в состояние ожидания;

·  завершается;

·  исчерпан квант;

·  в очереди готовых появляется более приоритетная нить.

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

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

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


ОГЛАВЛЕНИЕ

Стр.

Введение. Операционная система как система управления ресурсами............ 4

1. Классификация операционных систем........................................................... 4

2. Особенности областей использования операционных систем...................... 6

3. Управление процессами.................................................................................. 9

3.1. Состояние процессов................................................................................ 9

3.2. Планирование процессов....................................................................... 10

3.3. Вытесняющие и невытесняющие алгоритмы планирования................ 12

3.4. Функции планировщика-диспетчера..................................................... 14

3.4.1. Приостановка процесса................................................................... 14

3.4.2. Отсрочка процесса........................................................................... 15

3.4.3. Активизация процесса..................................................................... 16

3.4.4. Ведущие и разделяемые процессами планировщики-диспетчеры 17

4. Средства синхронизации и взаимодействия процессов.............................. 19

4.1. Проблема синхронизации...................................................................... 19

4.2. Критическая секция................................................................................ 21

4.3. Синхронизация процессов на основе семафорных операций.............. 23

4.3.1. Двоичный семафор.......................................................................... 24

4.3.2. Универсальный семафор (считающий семафор)............................ 26

4.4. Семафоры как счетчики ресурсов и синхронизаторы.......................... 26

4.4.1. Алгоритм "Производитель-Потребитель" с буфером на одну запись 28

4.4.2. Алгоритм "Производитель-Потребитель" с буфером большого размера (бесконечным)............................................................................................ 29

4.4.3. Алгоритм "Производитель-Потребитель" с буфером из фиксированного числа записей........................................................................................................ 31

4.5. Тупики..................................................................................................... 32

Приложение

5. Концепции UNIX System V Release 4 (SVR4).............................................. 35

5.1. Управление процессами......................................................................... 35

5.2. Планирование процессов....................................................................... 37

5.3. Управление памятью. Свопинг.............................................................. 39

6. Концепции Windows NT............................................................................... 42

6.1. Структура Windows NT......................................................................... 42

6.2. Процессы и нити. Алгоритмы планирования....................................... 46

Литература........................................................................................................ 52

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4