- •1 Понятие операционной системы 4
- •2 Эволюция и режимы функционирования 10
- •3 Общая архитектура 15
- •4 Управление процессами 23
- •5 Управление памятью 44
- •6 Ввод-вывод и файловая система 65
- •1Понятие операционной системы
- •1.1Назначение и состав системы обработки информации. Понятие виртуальной машины
- •1.2Назначение и функции системных программ
- •1.3Задачи, решаемые операционной системой
- •1.4Операционная система как виртуальная машина
- •1.5Операционная система как система управления ресурсами
- •1.6Оценка деятельности операционной системы
- •1.7Классификация операционных систем
- •Контрольные вопросы
- •2Эволюция и режимы функционирования
- •2.1Непосредственный доступ
- •2.2Пакетный режим
- •2.2.1Однопрограммный (последовательный) режим выполнения пакета
- •2.2.2Многопрограммный режим. Классическое мультипрограммирование
- •2.3Системы информационного обслуживания
- •2.4Режим разделения времени
- •2.5Режим реального времени
- •Контрольные вопросы
- •3Общая архитектура
- •3.1Ядро и вспомогательные модули
- •3.2Ядро в привилегированном режиме
- •3.3Многослойная структура операционной системы
- •3.4Функциональные компоненты операционной системы
- •Контрольные вопросы
- •4Управление процессами
- •4.1Понятия «процесс» и «поток»
- •4.2Создание процессов и потоков
- •4.3Защита ресурсов
- •4.4Планирование и диспетчеризация потоков
- •4.5Состояния потока
- •4.6Мультипрограммирование на основе прерываний
- •4.6.1Назначение, типы и обработка прерываний
- •4.6.2Программные прерывания
- •4.6.3Обработка системных вызовов
- •4.7Синхронизация процессов и потоков
- •4.7.1Цели и средства синхронизации
- •4.7.2Необходимость синхронизации и гонки
- •4.7.3Критическая секция
- •4.7.4Блокирующие переменные
- •4.7.5Семафоры
- •4.7.6Тупики
- •Контрольные вопросы
- •5Управление памятью
- •5.1Функции ос по управлению памятью
- •5.2Типы адресов
- •5.3Свопинг и виртуальная память
- •5.4Страничное распределение
- •5.5Сегментное распределение
- •5.6Сегментно-страничное распределение
- •5.7Разделяемые сегменты памяти
- •Контрольные вопросы
- •6Ввод-вывод и файловая система
- •6.1Управление файлами и внешними устройствами
- •6.2Задачи ос по управлению файлами и устройствами
- •6.3Многослойная модель подсистемы ввода - вывода. Общая схема
- •6.4Логическая организация файловой системы
- •6.4.1Цели и задачи файловой системы
- •6.4.2Типы файлов
- •6.4.3Иерархическая структура файловой системы
- •6.4.4Имена файлов
- •6.4.5Атрибуты файлов
- •6.4.6Логическая организация файла
- •6.5Физическая организация файловой системы
- •6.5.1Диски, разделы, секторы, кластеры
- •6.5.2Физическая организация и адресация файла
- •6.5.3Физическая организация fат
- •6.6Файловые операции
- •6.6.1Два способа организации файловых операций
- •6.6.2Открытие файла
- •Контрольные вопросы
- •Приложение 1. Кэширование данных Назначение кэш-памяти
- •Иерархия запоминающих устройств
- •Принцип действия кэш-памяти
- •Приложение 2. Физическая организация ntfs
- •Структура тома ntfs
- •Структура файлов ntfs
- •Каталоги ntfs
- •Литература
6.3Многослойная модель подсистемы ввода - вывода. Общая схема
Многослойное построение программного обеспечения, характерное для операционных систем вообще, оказывается особенно естественным и полезным при построении подсистемы ввода-вывода. При большом разнообразии устройств ввода-вывода, обладающих существенно различными характеристиками (принтер и диски, графический монитор и сетевой адаптер и т. п.), иерархическая структура программного обеспечения позволяет соблюсти баланс между двумя весьма противоречивыми требованиями. С одной стороны, необходимо учесть все особенности каждого устройства, а с другой стороны, обеспечить единое логическое представление и унифицированный интерфейс для устройств всех типов. При этом нижние слои подсистемы ввода-вывода должны включать индивидуальные драйверы, написанные для конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, предоставляя общий интерфейс если не для всех устройств, то по крайней мере, для групп устройств, обладающих некоторыми общими характеристиками, например для принтеров определенного производителя или для всех матричных принтеров и т. п.
Многослойность структуры, безусловно, облегчает решение большинства перечисленных в предыдущем разделе задач подсистемы ввода-вывода, таких как простота включения новых драйверов, поддержка нескольких файловых систем, динамическая загрузка-выгрузка драйверов и других.
Обобщенная структура подсистемы ввода-вывода представлена на рис. 31. Из рисунка видно, что программное обеспечение ввода-вывода делится не только на горизонтальные слои, но и на вертикальные. Это объясняется тем, что для такого разнообразного мира, как внешние устройства, трудно обеспечить единообразие в разбиении функций управления на слои. Поэтому общий принцип многослойности остается справедливым, однако для устройств определенного типа он реализуется по-разному, со своим количеством слоев и их функциями. В представленной структуре в качестве примера приведены три вертикальные подсистемы, управляющие дисками, графическими устройствами, такими как мониторы, принтеры и плоттеры, и сетевыми адаптерами. Естественно, к этому перечню можно добавить и другие, например подсистему управления символьными терминалами или какими-либо специализированными устройствами, такими как аналого-цифровые и цифро-аналоговые преобразователи.
В каждой вертикальной подсистеме существует несколько слоев модулей. Нижний слой образуют так называемые аппаратные драйверы устройств, название которых отражает тот факт, что они управляют аппаратурой внешних устройств, осуществляя обмен байтами и блоками байтов, и не имеют, как правило, дела с более высокоуровневыми вопросами логической организации данных, например с файлами или сложными графическими объектами. Функции вышележащих слоев в значительной степени зависят от типа вертикальной подсистемы.
Менеджер ввода-вывода. В подсистеме ввода-вывода наряду с модулями, отражающими специфику внешних устройств и образующими вертикальные подсистемы, существуют модули универсального назначения. Эти модули организуют согласованную работу всех остальных компонентов подсистемы ввода-вывода и взаимодействие с пользовательскими процессами и другими подсистемами ОС. Так же как и функции управления устройствами, эти организующие функции распределены по всем уровням, образуя
оболочку. Эта оболочка иногда называется менеджером ввода- вывода. Задачи такого менеджера довольно разнообразны.
Верхний слой менеджера составляют системные вызовы ввода-вывода, которые принимают от пользовательских процессов запросы на ввод-вывод и переадресуют их отвечающим за определенный класс устройств модулям и драйверам, а также возвращают процессам результаты операций ввода-вывода. Таким образом, этот слой поддерживает пользовательский интерфейс ввода-вывода, создавал для прикладных программистов максимум удобств по манипулированию внешними устройствами и расположенными на них данными.
Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, скрывая от драйверов особенности аппаратной платформы компьютера — шину ввода-вывода, систему прерываний и т. п. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме с использованием независимых от шины ввода-вывода адресации и формата, а затем преобразует эти запросы в зависящий от аппаратной платформы формат.
Рис. 31. Структура подсистемы ввода-вывода
Рассмотренный ранее Диспетчер прерываний может входить в состав менеджера ввода-вывода или же представлять собой отдельный модуль ядра. В последнем случае менеджер ввода-вывода выполняет для диспетчера прерываний первичную обработку запросов прерываний, передавая диспетчеру обобщенные сведения об источнике запроса.
Важной функцией менеджера ввода-вывода является создание некоторой среды для остальных компонентов подсистемы, которая бы облегчала их взаимодействие друг с другом. Эта задача может быть решена за счет создания некоторого стандартного внутреннего интерфейса взаимодействия модулей ввода-вывода между собой, который бы дополнял внешние интерфейсы подсистемы с прикладными процессами, другими модулями ядра и аппаратурой. Наличие такого интерфейса существенно облегчает включение новых драйверов и файловых систем в состав ОС. Кроме того, разработчики драйверов и других программных компонентов освобождаются от написания общих процедур, таких как буферизация данных и синхронизация нескольких модулей между собой при обмене данными. Все эти функции берет на себя менеджер ввода-вывода.
Еще одной функцией менеджера ввода-вывода является организация взаимодействия модулей ввода-вывода с модулями других подсистем ОС, таких как подсистема управления процессами, виртуальной памятью и другими.
Наличие стандартного внутреннего межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода-вывода, хотя может несколько замедлить ее работу, так как любое разделение на слои и части приводит к дополнительным операциям при взаимодействии по сравнению с монолитной организацией с прямыми передачами управления.