Модуль 4. Требования и цели при разработке современных ОС.
Требования:
- Переносимость, т.е. написать ОС на переносимом языке, что позволит быстро переходить от одной архитектуре компьютера к другой
- Мультипроцессорная обработка и масштабируемость, т.е. создание ОС как масштабируемых и многопроцессорных позволит запустить одно и то же приложение как на однопроцессорных, так и на многопроцессорных машинах => повышается производительность компьютера за счет распределения работы между несколькими процессорами.
- Совместимость с POSIX (переносимый интерфейс ОС, основанный на UNIX). Это означает набор международных стандартов для интерфейсов ОС UNIX-типов. Стандарт POSIX (1988г) поощряет фирмы, реализующие UNIX-подобные интерфейсы, т.е. делающие их совместимыми, чтобы программисты могли легко переносить свои программы с одной системы на другую.
- Защита от несанкционированного доступа. Правила защиты включают обязательные требования - защиту ресурсов пользователя от других пользователей и возможность установления квот на системные ресурсы, для предотвращения захвата одним пользователем всех системных ресурсов.
Цели:
- Расширяемость, т.е. дополнить и модифицировать при изменении требований рынка.
- Переносимость, т.е. в соответствии с требованиями рынка код ОС должен легко переноситься с одного процессора на другой.
- Надежность и устойчивость, т.е. система должна защищать себя как от внутренних сбоев, так и от внешнего вторжения, вести себя предсказуемо и у приложений не должно быть возможности повредить ОС или нарушить ее функционирование.
- Совместимость, т.е. ее пользовательский интерфейс и интерфейс прикладных программ (API) должны быть совместимы с существующими системами Microsoft.
4.1. Модели, используемые при разработке ОС WinNT.
ОС - это сложная программа, в которой детали накладываются друг на друга.
Чтобы система могла обеспечивать желаемые возможности, не нарушая цели проекта, необходима унифицирующая модель.
Модель ОС - это каркас, который связывает в единое целое все средства и сервисы.
Структура WinNT основана на комбинации нескольких моделей:
- клиент-сервер. Служит, чтобы предоставить пользователям разные среды ОС (MS-DOS, OS/2, …, POSIX)
- объектная. Служит для унификации управления системными ресурсами и выделения их пользователям
- симметричная мультипроцессорная обработка (SMP). Она максимально использует возможности многопроцессорных машин.
Клиент-серверная модель ОС.
Клиент-сервер - это разделение ОС на несколько процессов, каждый из которых реализует один набор сервисов: распределение памяти, создание процессов, планирование процессов. Каждый сервер (подсистема) выполняется в пользовательском режиме, проверяя в цикле, не обратился ли к нему за обслуживанием какой-либо клиент.
Клиент - это компонент ОС, либо прикладная программа, которая запрашивает выполнение сервиса, посылая серверу сообщение.
Ядро ОС доставляет это сообщение серверу, тот выполняет запрашиваемые действия, после чего ядро возвращает клиенту результаты в виде другого сообщения.
Достоинства:
- Авария одного из серверов не нарушает работы остальных частей ОС.
- Повышается надежность работы ОС.
- Прекрасно соответствует сетевой модели вычислительных систем.
Исполнительная система - это части ОС (часть ядра), в которую входит набор компонентов, реализующих:
- Управление виртуальной памятью.
- Управление объектами (ресурсами).
- Управление вводом/выводом.
- Файловые системы.
- Взаимодействие между процессами.
- Защита от несанкционированного доступа.
Ядро выполняет функции ОС низкого уровня:
- Планирование потоков (процессов).
- Обработка прерываний.
- Многопроцессорная синхронизация.
Объектная модель.
Основная цель при разработке ОС NT - создание программного обеспечения, которое можно было бы легко и дешево изменить.
Объект - это структура данных, физический формат которой скрыт в определении типа. Объект обладает набором свойств, с которыми работает группа сервисов.
Каждый системный ресурс в Windows (файлы, память физические устройства) может совместно использоваться несколькими процессами.
Построение ОС на основе объектов имеет ряд преимуществ:
- Доступ ОС к ресурсам и работа с ними унифицирована.
- Упрощается защита, т.к. для всех объектов она осуществляется одинаково.
Симметричная мультипроцессорная обработка (SMP).
Многозадачность в ОС - это техника, применяемая ОС для использования одного процессора несколькими потоками управления. Если у компьютера имеется больше, чем один процессор, то от модели многозадачности следует перейти к модели мультипроцессорной обработки.
В асимметричной мультипроцессорной модели обработки (ASMP) ОС и устройства ввода/вывода используют один из процессоров (A); другой полностью отдан под пользовательские потоки => нагрузка распределена неравномерно.
В симметричной модели (SMP) ОС выполняется на любом свободном процессоре или на всех процессорах одновременно; пользовательские потоки и устройства ввода/вывода также распределены между процессорами равномерно.
Преимущества SMP:
- Равномерно распределена системная нагрузка.
- Сокращается время простоя из-за неисправностей, т.к. при сбое одного процессора код ОС может использоваться на других.
- Данная модель переносима на другие типы процессоров.
Структура WinNT:
4.2. Защищенные подсистемы.
Термин "сервер" подразумевает, что каждая защищенная подсистема обеспечивает API (интерфейс прикладных программ), которые могут использовать прикладные программы.
Подпрограммы среды - это сервер пользовательского режима, реализующий API некоторой ОС.
Когда приложение вызывает функцию API, этот вызов доставляется с помощью LPC (локальный вызов процедур) подсистеме среды. Она использует этот вызов и возвращает результаты прикладному процессу, посылая другой LPC.
Самая важная подсистема среды - это подсистема Win32, которая предоставляет API прикладным программам графический интерфейс, управляет всем вводом пользователя и выводом приложений.
Исполнительная система.
Исполнительная система - это часть WinNT, использующаяся в режиме ядра.
Компоненты исполнительной системы:
- Диспетчер объектов: создает, поддерживает и уничтожает объекты исполнительной системы.
- Справочный монитор защиты - гарантирует выполнение политики защиты на локальном компьютере, оберегает ресурсы ОС, обеспечивает защиту объектов, т.е. ресурсов.
- Диспетчер процессов: создает, завершает процессы, приостанавливает и возобновляет их, хранит и выдает информацию о процессах.
- Средства локального вызова процедур (LPC): передают сообщения между клиентскими и серверными процессами, расположенными на одном и том же компьютере.
- Диспетчер виртуальной памяти (ДВП). Предоставляет каждому процессу большое, собственное адресное пространство и защищает его от других процессов.
Если память используется слишком интенсивно, то ДВП переносит содержимое выбранного блока памяти на жесткий диск и загружает обратно, когда он снова понадобится (подкачка страниц). - Ядро. Реагирует на прерывания, направляет потоки на выполнение.
- Система ввода/вывода. Состоит из групп компонентов, отвечающих за выполнение ввода/вывода на разнообразные устройства:
- диспетчер ввода/вывода. Реализует средства ввода/вывода, независящие от типа устройства
- файловая система - это драйверы, принимающие запросы файлового ввода/вывода и транслирующие их в запросы, привязанные к конкретному устройству
- диспетчер кэша. Повышает производительность файлового ввода/вывода, сохраняя информацию, считанную с диска последней, в системной памяти
- драйверы устройств. Это низкоуровневые драйверы, напрямую работающие с оборудованием для записи вывода или считывания ввода с физического устройства или из сети
- сетевые драйверы - это драйверы файловой системы, передающие удаленные запросы ввода/вывода на машины в сети, и принимающие от них такие же запросы.
WinNT - это защищенная ОС, требующая, чтобы у каждого пользователя была своя учетная запись, и чтобы пользователь регистрировался в системе, прежде чем получить доступ к ней.
При включении компьютера загружается ОС, далее необходимо ввести пароль пользователя (1). Затем пароль передается подсистеме защиты, где он сравнивается с паролем, который находится в БД. Если он совпадает, то пользователь допускается к работе в системе (3). Если нет - на экран выводится диалоговое окно, где необходимо повторно ввести пароль.
4.3. Структура объектов (ресурсов).
Для унификации обработки различных объектов, диспетчеру объектов необходимо, чтобы каждый объект (ресурс) содержал в заданном месте несколько полей со стандартной информацией => для разделения стандартных данных от специфических, каждый объект разделен на две части: заголовок и тело.
Диспетчер объектов работает только с заголовком, а другие компоненты исполнительной системы с телом объекта.
Содержимое заголовка объекта.
Имя объекта делает его видимым другим процессам для совместного использования.
Каталог объекта обеспечивает иерархическую структуру, в которой хранятся имена объектов.
Дескриптор защиты определяет кто и каким образом может использовать данный объект.
Расход квоты - задает квоту на использование ресурсов, которая списывается с процесса, когда тот открывает описатель данного объекта.
Счетчик открытых описателей дает сведения о том, кто в данный момент использует объект.
БД открытых описателей дает сведения о том, кто ранее работал с данными объектами.