Модуль 4. Требования и цели при разработке современных ОС.


Требования:

  1. Переносимость, т.е. написать ОС на переносимом языке, что позволит быстро переходить от одной архитектуре компьютера к другой
  2. Мультипроцессорная обработка и масштабируемость, т.е. создание ОС как масштабируемых и многопроцессорных позволит запустить одно и то же приложение как на однопроцессорных, так и на многопроцессорных машинах => повышается производительность компьютера за счет распределения работы между несколькими процессорами.
  3. Совместимость с POSIX (переносимый интерфейс ОС, основанный на UNIX). Это означает набор международных стандартов для интерфейсов ОС UNIX-типов. Стандарт POSIX (1988г) поощряет фирмы, реализующие UNIX-подобные интерфейсы, т.е. делающие их совместимыми, чтобы программисты могли легко переносить свои программы с одной системы на другую.
  4. Защита от несанкционированного доступа. Правила защиты включают обязательные требования - защиту ресурсов пользователя от других пользователей и возможность установления квот на системные ресурсы, для предотвращения захвата одним пользователем всех системных ресурсов.

Цели:

  1. Расширяемость, т.е. дополнить и модифицировать при изменении требований рынка.
  2. Переносимость, т.е. в соответствии с требованиями рынка код ОС должен легко переноситься с одного процессора на другой.
  3. Надежность и устойчивость, т.е. система должна защищать себя как от внутренних сбоев, так и от внешнего вторжения, вести себя предсказуемо и у приложений не должно быть возможности повредить ОС или нарушить ее функционирование.
  4. Совместимость, т.е. ее пользовательский интерфейс и интерфейс прикладных программ (API) должны быть совместимы с существующими системами Microsoft.


4.1. Модели, используемые при разработке ОС WinNT.

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

  • клиент-сервер. Служит, чтобы предоставить пользователям разные среды ОС (MS-DOS, OS/2, …, POSIX)
  • объектная. Служит для унификации управления системными ресурсами и выделения их пользователям
  • симметричная мультипроцессорная обработка (SMP). Она максимально использует возможности многопроцессорных машин.

Клиент-серверная модель ОС.

Клиент-сервер - это разделение ОС на несколько процессов, каждый из которых реализует один набор сервисов: распределение памяти, создание процессов, планирование процессов. Каждый сервер (подсистема) выполняется в пользовательском режиме, проверяя в цикле, не обратился ли к нему за обслуживанием какой-либо клиент.
Клиент - это компонент ОС, либо прикладная программа, которая запрашивает выполнение сервиса, посылая серверу сообщение.
Ядро ОС доставляет это сообщение серверу, тот выполняет запрашиваемые действия, после чего ядро возвращает клиенту результаты в виде другого сообщения.
Достоинства:

  1. Авария одного из серверов не нарушает работы остальных частей ОС.
  2. Повышается надежность работы ОС.
  3. Прекрасно соответствует сетевой модели вычислительных систем.

Исполнительная система - это части ОС (часть ядра), в которую входит набор компонентов, реализующих:

  1. Управление виртуальной памятью.
  2. Управление объектами (ресурсами).
  3. Управление вводом/выводом.
  4. Файловые системы.
  5. Взаимодействие между процессами.
  6. Защита от несанкционированного доступа.

Ядро выполняет функции ОС низкого уровня:

  1. Планирование потоков (процессов).
  2. Обработка прерываний.
  3. Многопроцессорная синхронизация.

Объектная модель.
Основная цель при разработке ОС NT - создание программного обеспечения, которое можно было бы легко и дешево изменить.
Объект - это структура данных, физический формат которой скрыт в определении типа. Объект обладает набором свойств, с которыми работает группа сервисов.
Каждый системный ресурс в Windows (файлы, память физические устройства) может совместно использоваться несколькими процессами.
Построение ОС на основе объектов имеет ряд преимуществ:

  1. Доступ ОС к ресурсам и работа с ними унифицирована.
  2. Упрощается защита, т.к. для всех объектов она осуществляется одинаково.

Симметричная мультипроцессорная обработка (SMP).
Многозадачность в ОС - это техника, применяемая ОС для использования одного процессора несколькими потоками управления. Если у компьютера имеется больше, чем один процессор, то от модели многозадачности следует перейти к модели мультипроцессорной обработки.

В асимметричной мультипроцессорной модели обработки (ASMP) ОС и устройства ввода/вывода используют один из процессоров (A); другой полностью отдан под пользовательские потоки => нагрузка распределена неравномерно.
В симметричной модели (SMP) ОС выполняется на любом свободном процессоре или на всех процессорах одновременно; пользовательские потоки и устройства ввода/вывода также распределены между процессорами равномерно.
Преимущества SMP:

  1. Равномерно распределена системная нагрузка.
  2. Сокращается время простоя из-за неисправностей, т.к. при сбое одного процессора код ОС может использоваться на других.
  3. Данная модель переносима на другие типы процессоров.

Структура WinNT:


4.2. Защищенные подсистемы.

Термин "сервер" подразумевает, что каждая защищенная подсистема обеспечивает API (интерфейс прикладных программ), которые могут использовать прикладные программы.
Подпрограммы среды - это сервер пользовательского режима, реализующий API некоторой ОС.
Когда приложение вызывает функцию API, этот вызов доставляется с помощью LPC (локальный вызов процедур) подсистеме среды. Она использует этот вызов и возвращает результаты прикладному процессу, посылая другой LPC.
Самая важная подсистема среды - это подсистема Win32, которая предоставляет API прикладным программам графический интерфейс, управляет всем вводом пользователя и выводом приложений.
Исполнительная система.
Исполнительная система - это часть WinNT, использующаяся в режиме ядра.
Компоненты исполнительной системы:

  1. Диспетчер объектов: создает, поддерживает и уничтожает объекты исполнительной системы.
  2. Справочный монитор защиты - гарантирует выполнение политики защиты на локальном компьютере, оберегает ресурсы ОС, обеспечивает защиту объектов, т.е. ресурсов.
  3. Диспетчер процессов: создает, завершает процессы, приостанавливает и возобновляет их, хранит и выдает информацию о процессах.
  4. Средства локального вызова процедур (LPC): передают сообщения между клиентскими и серверными процессами, расположенными на одном и том же компьютере.
  5. Диспетчер виртуальной памяти (ДВП). Предоставляет каждому процессу большое, собственное адресное пространство и защищает его от других процессов.
    Если память используется слишком интенсивно, то ДВП переносит содержимое выбранного блока памяти на жесткий диск и загружает обратно, когда он снова понадобится (подкачка страниц).
  6. Ядро. Реагирует на прерывания, направляет потоки на выполнение.
  7. Система ввода/вывода. Состоит из групп компонентов, отвечающих за выполнение ввода/вывода на разнообразные устройства:
    • диспетчер ввода/вывода. Реализует средства ввода/вывода, независящие от типа устройства
    • файловая система - это драйверы, принимающие запросы файлового ввода/вывода и транслирующие их в запросы, привязанные к конкретному устройству
    • диспетчер кэша. Повышает производительность файлового ввода/вывода, сохраняя информацию, считанную с диска последней, в системной памяти
    • драйверы устройств. Это низкоуровневые драйверы, напрямую работающие с оборудованием для записи вывода или считывания ввода с физического устройства или из сети
    • сетевые драйверы - это драйверы файловой системы, передающие удаленные запросы ввода/вывода на машины в сети, и принимающие от них такие же запросы.

WinNT - это защищенная ОС, требующая, чтобы у каждого пользователя была своя учетная запись, и чтобы пользователь регистрировался в системе, прежде чем получить доступ к ней.
При включении компьютера загружается ОС, далее необходимо ввести пароль пользователя (1). Затем пароль передается подсистеме защиты, где он сравнивается с паролем, который находится в БД. Если он совпадает, то пользователь допускается к работе в системе (3). Если нет - на экран выводится диалоговое окно, где необходимо повторно ввести пароль.


4.3. Структура объектов (ресурсов).

Для унификации обработки различных объектов, диспетчеру объектов необходимо, чтобы каждый объект (ресурс) содержал в заданном месте несколько полей со стандартной информацией => для разделения стандартных данных от специфических, каждый объект разделен на две части: заголовок и тело.
Диспетчер объектов работает только с заголовком, а другие компоненты исполнительной системы с телом объекта.
Содержимое заголовка объекта.

Имя объекта делает его видимым другим процессам для совместного использования.
Каталог объекта обеспечивает иерархическую структуру, в которой хранятся имена объектов.
Дескриптор защиты определяет кто и каким образом может использовать данный объект.
Расход квоты - задает квоту на использование ресурсов, которая списывается с процесса, когда тот открывает описатель данного объекта.
Счетчик открытых описателей дает сведения о том, кто в данный момент использует объект.
БД открытых описателей дает сведения о том, кто ранее работал с данными объектами.


    • 4.4 Файловая система VFAT (виртуальная FAT)
    • 4.5 Начальная загрузка Windows
    • 4.6 Диспетчер виртуальной памяти
    • 4.7 Управление памятью в ОС Windows


4.4. Файловая система VFAT (виртуальная FAT).

Файловая система содержит 2 драйвера:

  1. Доступ к традиционным дискам.
  2. Доступ к CD-ROM.

Часть системы, которая используется для доступа к обычным дискам, называется VFAT. Она позволяет использовать длинные имена файлов (255 символов). Кроме этого поддерживает и короткие имена (8.3). Длинные имена рассматриваются как правильные, а короткие - псевдонимы.
Для поддержания совместимости VFAT и FAT, на каждый файл, имеющий длинное имя, создается короткое на основе длинного имени следующим образом: пробелы удаляются с уплотнением, недоступные символы заменяются знаком подчеркивания, имя урезается до 6 символов, в конце имени ставится знак "тильда", номер 1, 2, 3 и т.д. и расширение.
Стандартная программа для проверки файловой структуры - ScanDisk.
Выполняет два уровня проверки:

  1. Стандартная. Используется для файловой структуры и папок.
  2. Полная. Дополняет стандартную проверкой поверхности диска на чтение и запись.

Функции ScanDisk:

  1. Собирает утерянные кластеры в отдельные файлы.
  2. Ликвидирует перекрестные ссылки.
  3. Исправляет и пытается исправить длинные имена файлов, если они запорчены.

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

  1. Упреждающее чтение, т.е. система пытается предугадать какие данные жесткого диска потребуются ей в дальнейшем и загружает их в кэш.
  2. Отложенная запись, т.е. информация запоминается в кэш до полной записи ее на диск.
  3. Файл обмена служит в качестве виртуальной памяти, создается автоматически и чем меньше оперативная память компьютера, тем интенсивнее он используется.

Доступ к CD-ROM.
Является компонентом файловой системы CDFS. В DOS доступ к CD-ROM осуществляется специальным драйвером MSCDEX. К CD-ROM применим 1-й вид кэша: упреждающее чтение. Необходимый объем кэша устанавливается в зависимости от типа дисковода.
Корзина.
Это приемник для удаленных файлов. Windows отслеживает содержимое корзины и при ее переполнении удаляет старые файлы. По умолчанию объем корзины составляет 10% от емкости диска. Существует несколько вариантов настройки корзины:

  • не использовать вообще
  • использовать одну корзину на все диски
  • использовать на каждый диск по одной корзине


4.5. Начальная загрузка Windows.

Процесс загрузки имеет 4 фазы:

  1. Boot Strapping (самозагрузка). Это инсталляция BIOS, проверка стандартного оборудования и поиск начального кода ОС. По завершению начальной проверки оборудования BIOS завершает свою работу. После этого с диска загружается boot-сектор ОС.
  2. Драйверы MS-DOS. На этом этапе выполняются инструкции файла io.sys. Для поддержки совместимости с MS-DOS система загружает драйверы DOS.
  3. Реальный режим. На этом этапе ОС загружает 3 файла: win.com, vmm32.exe и system.ini.
    win.com выполняет начальную проверку системы и загружает компоненты ядра Windows.
    vmm32.exe (менеджер виртуальных машин) - осуществляет начальную загрузку драйверов виртуальных устройств и создает все необходимые виртуальные машины.
    system.ini - загружаются драйвера, прописанные в этом файле.
  4. Защищенный режим. В этом режиме vmm переключает CPU в защищенный режим. После этого загружает остальные части ОС в следующем порядке:
    • ядро системы (krnl386.exe)
    • графический интерфейс (gdi.exe, gdi32.exe)
    • загрузка файлов ввода/вывода (пользовательский интерфейс - user.exe, user32.exe)
    • загрузка системных ресурсов (шрифты)

После выполнения указанных шагов vmm загружает компоненты рабочего стола.
После аппаратно-базированной части начальной загрузки появляется сообщение Start Windows. Если в это время нажать F8, то появится стартовое меню, состоящее из 8 пунктов, где можно выбрать режим загрузки:

  1. Normal - нормальный старт Windows.
  2. Logged - отслеживание операций во время загрузки системы. Система создает файл bootlog.txt, который используется для определения ошибок.
  3. Safe Mode - запуск системы в безопасном режиме. Система загружает драйверы мыши, клавиатуры, видеоадаптера.
  4. Safe Mode with network support - загрузка в безопасном режиме с сетевыми драйверами.
  5. Step by Step - пошаговое выполнение загрузки файлов.
  6. Command prompt only - режим командной строки. В нем графическая оболочка не загружается, а появляется командная строка.
  7. Safe Mode command prompt only - безопасный режим, с использованием командной строки.
  8. Загружается предыдущая версия DOS, поверх которой была установлена Windows.


4.6. Диспетчер виртуальной памяти.

Развитие технологии ОС сводилось к поиску того, как сделать процессор занятым большую часть времени, и таким образом выполнять больший объем работы. Многозадачные ОС загружают в память несколько программ и поддерживают высокий уровень загрузки процессора, переключаясь между ними.
Распределение всей доступной памяти между процессами и, в то же время, защита кода и данных одного процесса от других и составляет задачу управления памятью, а в WinNT это управление виртуальной памятью.
Раньше не было возможности выполнять программу, размер которой превышает объем физического памяти компьютера.
Позже программисты стали писать оверлейные программы, которые выгружали одни части своего кода на диск и загружали другие части в память.
Виртуальная память - это централизованная система выгрузки на диск содержимого памяти при ее переполнении. Она позволяет программистам создавать и запускать программы, который требуют памяти больше, чем есть у компьютера. Компонент исполнительной системы NT, отвечающий за виртуальную память - это диспетчер виртуальной памяти (ДВП).
Память компьютера можно описать в двух терминах: физической структуры и логической структуры.
Физическая память организована как последовательность однобайтовых ячеек; байты пронумерованы от 0 до общего размера памяти. Этот набор чисел и составляет физическое адресное пространство компьютера.
Логическая память (виртуальная память) - способ представления памяти для программы и в современных ОС она редко совпадает с физической структурой памяти.
Виртуальное адресное пространство (ВАП) - это набор адресов памяти, которые могут использовать потоки процесса. Каждый процесс имеет отдельное адресное пространство, которое обычно гораздо больше размера физической памяти.
Вывод: диапазон физических адресов для компьютера ограничен объемом имеющейся у него памяти, а диапазон виртуальных адресов ограничен только количеством битов в адресе => несоответствие между физическим и виртуальным адресным пространством приводит к тому, что система виртуальной памяти (ДВП) обязательно должна выполнять следующие 2 задачи:

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

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

Задачи ДВП:

  1. Отображение виртуальных адресов в физические.
  2. Пересылка данных между ФАП и ЖМД.
  3. Обеспечение легкого и эффективного способа совместного использования памяти двумя процессами.
  4. Защита как совместной, так и "частной" памяти от несанкционированного доступа.
  5. (для WinNT) Обработка страничных ошибок от нескольких потоков одновременно.


4.7. Управление памятью в ОС Windows.

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

Эти сервисы позволяют процессу:

  1. Выделять память в два этапа.
  2. Выполнять чтение и запись в виртуальную память
  3. Фиксировать виртуальные страницы в физическую память.
  4. Получать информацию о виртуальных страницах.
  5. Защищать виртуальные страницы.
  6. Сбрасывать содержимое виртуальных страниц на диск.

ДВП устанавливает двухфазный способ выделения памяти - это резервирование памяти (1), а затем ее передача (2).
Зарезервированная память - это набор виртуальных адресов, которые ДВП зарезервировал для использования процессом.
Переданная память - это память, для которой ДВП выделил место в файле подкачки.
Файл подкачки - это дисковый файл, в котором записываются виртуальные страницы, когда их надо удалить из памяти. Поток может либо сразу зарезервировать и передать виртуальную память, либо вначале лишь зарезервировать, передавая по мере необходимости.
Совместное использование памяти.
Виртуальная память представляет собой удобный механизм совместного использования ФАП.
Т.к. у каждого процесса есть отдельное виртуальное адресное пространство, ОС достаточно загрузить в ФАП один раз ту программу, которую используют оба процесса => ДВП будет отображать виртуальные адреса первого или второго процесса на физические фреймы, в которых находится требуемая программа.

Защита памяти.
Существует 4 формы защиты памяти, которые используются в современных ОС:

  1. Отдельное адресное пространство для каждого процесса.
    Аппаратура не позволяет потоку обращаться по виртуальным адресам другого процесса.
  2. Два режима работы: режим ядра, в котором потоки имеют доступ к системному коду и данным; пользовательский режим, потоки которого такого доступа не имеют.
  3. Механизм постраничной защиты, т.е. с каждой виртуальной страницей связан набор флажков, определяющий какие типы доступа к ней разрешены в пользовательском режиме и какие в режиме ядра.
  4. (для WinNT) Пообъектная защита памяти. Всякий раз, когда процесс открывает описатель объекта, справочный монитор защиты WinNT проверяет, имеет ли процесс, пытающийся выполнить операцию соответствующие права доступа.