
- •1. Понятие операционной системы и цели ее работы
- •Компоненты компьютерной системы
- •Общая картина функционирования компьютерной системы
- •Классификация компьютерных систем
- •Классификация компьютерных архитектур
- •История ос
- •Отечественные операционные системы
- •Облачные вычисления и ос для облачных вычислений(развитие концепций и возможностей ос)
- •Вопрос 2
- •Особенности операционных систем для компьютеров общего назначения (mainframes)
- •Режим разделения времени и особенности ос с режимом разделения времени
- •Системы и ос реального времени
- •Особенности ос для персональных компьютеров
- •Карманные компьютеры (handhelds) и их ос
- •Параллельные компьютерные системы и особенности их ос.
- •Симметричные и асимметричные мультипроцессорные системы
- •Распределенные компьютерные системы и особенности их ос
- •Виды серверов в клиент-серверных компьютерных системах
- •Кластерные вычислительные системы и их ос
- •3. Вычислительные среды
- •Архитектура компьютерной системы
- •Функционирование компьютерной системы
- •Обработка прерываний
- •Архитектура ввода-вывода
- •Вопрос 4
- •Структура памяти
- •Аппаратная защита памяти и процессора
- •Аппаратная защита адресов памяти в системах с теговой архитектурой
- •Организация аппаратной защиты памяти и процессора
- •5. Основные компоненты ос
- •Исполнение программ в ms dos
- •Исполнение нескольких программ в unix
- •Коммуникационные модели
- •6. Уровни абстракции
- •Уровни абстракции ос
- •Структура системы ms dos
- •Структура системы unix
- •Операционные системы с микроядром
- •Виртуальная машина Java (jvm)
- •Цели проектирования и разработки ос
- •Механизмы и политики
- •Реализация операционных систем
- •Генерация операционной системы
- •7. Понятие процесса
- •Состояния процесса
- •Блок управления процессом
- •Переключение с одного процесса на другой
- •Очереди, связанные с диспетчеризацией процессов
- •Переключение контекста
- •Вопрос 8
- •Уничтожение процесса
- •Парадигма (шаблон) взаимодействия процессов: производитель – потребитель
- •9. Коммуникация процессов
- •Непосредственная коммуникация процессов
- •Косвенная коммуникация процессов (про синхронизацию есть немного)
- •Буферизация и очередь сообщений (сокеты)
- •Основные понятия диспетчеризации процессов
- •Вопрос 10 Однопоточные и многопоточные процессы
- •Проблемы многопоточности
- •Потоки posix (Pthreads
- •Потоки в Java
- •Вопрос 12 Основные понятия диспетчеризации процессов
- •Планировщик процессора
- •Критерии диспетчеризации
- •Предсказание длины следующего периода активности
- •Вопрос 13 Диспетчеризация по приоритетам
- •Стратегия Round Robin (rr)
- •Многоуровневая очередь
- •Многоуровневые аналитические очереди
- •Планирование в Solaris
- •Планирование в Windows 2000
- •Вопрос 14 История синхронизации
- •Синхронизация процессов по критическим секциям
- •Алгоритм решения проблемы критической секции
- •Вопрос 15 Синхронизация на основе общих семафоров
- •Семафоры как общее средство синхронизации
- •Общие и двоичные семафоры
- •Решение классических задач синхронизации с помощью семафоров
- •Вопрос 16
- •Мониторы
- •Синхронизация в ос Solaris
- •Синхронизация в Windows 2000
- •Вопрос 17 Проблема тупиков
- •Модель системы
- •Граф распределения ресурсов
- •Поиск тупиков по графу распределения ресурсов
- •Методы обработки тупиков
- •Предотвращение тупиков
- •Избежание тупиков
- •Безопасное состояние системы
- •Вопрос 18
- •19. Управление памятью.
- •Вопрос 20
- •Вопрос 22
- •23. Понятие файла
- •Вопрос 24
Вопрос 24
Монтирование файловых систем
Файловая система – поддерево директорий на некоторой машине, расположенных в одном разделе. Каждая файловая система должна быть смонтирована, прежде чем к ней будет обеспечен доступ. Файловая система монтируется в некоторую точку монтирования (mount point). Монтирование– это подсоединение отдельного дерева (еще не смонтированной файловой системы) к какой-либо вершине (точке монтирования) общего дерева смонтированных и доступных файловых систем.
В системе UNIX имеются команды mount; automount и autodirect, управляющие монтированием. Команда mount позволяет явно задать точку монтирования и файловую систему, монтируемую в эту точку. Список всех смонтированных файловых систем хранится в системном текстовом файле /etc/mnttab (в разных диалектах пути к этому файлу и даже его имя могут различаться). Команда automount запускается при загрузке операционной системы и создает системный процесс-демон automountd, который по содержимому указанного системного файла автоматически монтирует указанные в нем файловые системы при загрузке ОС и следит за их постоянной смонтированностью. Команда autodirect позволяет смоделировать пути к "виртуальным" директориям, которых физически на данной машине не существует, и указать в системном файле /etc/vfstab их "заменители" (в виде путей к реальным директориям, размещенным на локальной машине), что весьма полезно в случае получения большого проекта от заказчика с абсолютными путями, не существующими на Вашей машине.
На рис. 19.9 изображены дерево смонтированных систем с директориями пользователей (a) и еще не смотрированная файловая система (b) с директориями новых пользователей.
Рис.
19.9. Дерево смонтированных систем и еще
не смонтированная файловая система.
Если по команде mount или automount в качестве
точки монтирования файловой системы
(b) указывается поддиректория users, то
возникает картина, изображенная на рис.
19.10.Рис.
19.10. Точка монтирования файловой системы.
Общий доступ к файлам
В многопользовательских системах общий доступ к файлам (sharing) необходим. Общий доступ может быть обеспечен через некоторую систему защиты (protection). В распределенных системах файлы могут использоваться совместно через сеть. Управление общим доступом к файлам в разных ОС различно: например, в Windows утилита Explorer обеспечивает возможность установки общего доступа к заданному файлу или папке с помощью GUI, сделав отметку в соответствующем checkbox, указать сетевое имя данного общего ресурса и указать, возможен ли доступ по чтению и по записи, или только по чтению. В системе UNIX передача файла из заданной файловой системы в общий доступ выполняется командой share.
Network File System (NFS) – распространенная система общего доступа к файлам через локальную сеть, которая подробно рассмотрена в лекции 20.
Интересная возможность общего доступа к файлам имеется в системе Solaris: файловая система, отданная в общий доступ командой share, может адресоваться с помощью пути вида /net/hostname/filesystem, где hostname – имя машины; filesystem – имя файловой системы на ней. Это очень удобно, но может создать проблемы при переносе проекта в другую локальную сеть (как любой абсолютный путь – в данном случае путь содержит имя машины).
Защита файлов
Создатель файла должен иметь возможность управлять cписком допустимых операций над файлом и списком пользователей, которым они разрешены. Это и обеспечивают механизмы защиты файлов. Различаются следующие основные типы доступа к файлу:
Read (для чтения)
Write (для записи)
Execute (для исполнения)
Append (для записи в конец файла, или присоединения)
Delete (для удаления)
List (для вывода списка файлов в директории).
Для управления защитой файлов в UNIX введены удобные и наглядные обозначения, которые мы и рассмотрим.
Различаются следующие режимы доступа: read, write, execute (RWX).
Различаются также три класса пользователей: владелец файла (owner), группа, к которой он принадлежит (group) и весь остальной "мир" пользователей (public). Группы пользователей создаются системным администратором.
Для каждого класса пользователей признаки защиты RWX кодируются тремя битами (или одним восьмеричным числом). Таким образом, набор полномочий для работы с файлом для всех трех категорий пользователей кодируется 9 битами, или тремя восьмеричными цифрами. Например, команда:
chmod 740 my_file
задает для файла my_file следующие полномочия: для владельца – 7 (111): чтение, запись и выполнение; для группы – 4 (100): только чтение; для остальных пользователей – 0 (000): никаких действий над файлом не разрешено.
Для директории полномочия "X" (execute) означает возможность входа в нее командой cd.
Структура файловой системы
Файл - логическая единица распределения памяти. Он является также совокупностью логически взаимосвязанной информации. Файловая система располагается во внешней памяти (на дисках) и организована по уровням. Структура многоуровневой файловой системы изображена на рис. 19.11.
Рис.
19.11. Многоуровневая файловая система.
На верхнем уровне абстракции работают пользовательские программы, использующие высокоуровневые примитивы вида WriteLine(F, X). Уровнем ниже располагаются модули интерфейса логических файлов – логических записей, блоков и операций обмена. Еще ниже следуют модули организации файлов, затем – операции базовой системы файлов. На нижних уровнях располагаются драйверы устройств (управление вводом-выводом) и апппратура (устройства ввода-вывода и их контроллеры).
Блок управления файлом (File control block - FCB) – структура в памяти, содержащая информацию о файле. Типовая структура блока управления файлом представлена в таблица 3.
Таблица 3. Типовая структура блока управления файломполномочия для работы с файлом
даты создания, доступа и модификации файла
владелец файла, группа, список управления доступом
размер файла
блоки данных файла
Виртуальные файловые системы
Виртуальные файловые системы (VFS) обеспечивают объектно-ориентированный способ реализации файловых систем.
VFS обеспечивает единый интерфейс системных вызовов (API) для различных типов файловых систем, которые могут быть очень разными по своей реализации, включая сетевые файловые системы.
Данный API является набором операций над самой VFS, а не над каким-либо специфическим типом файловых систем.
Схема организации виртуальной файловой
системы изображена на рис. 20.1.Рис.
20.1. Схема организации виртуальной
файловой системы.
Методы размещения файлов
Смежное размещение. Термин метод размещения означает метод, с помощью которого размещаются блоки файла во внешней памяти. Различаются следующие основные методы размещения файлов:
Смежное размещение
Ссылочное размещение
Индексированное размещение.
При смежном размещении каждый файл занимает набор смежных блоков на диске. Преимущество данного метода - простота: требуется хранить только одну ссылку (номер блока) и длину (число блоков). Другим преимуществом является возможность произвольного доступа.
Недостатки данного метода следующие:
возможны потери дисковой памяти из-за фрагментации (метод аналогичен общей задаче динамического распределения памяти, рассмотренной ранее);
невозможность увеличения размера файла.
Смежное
размещение файлов иллюстрируется на
рис. 20.2.
Файловые системы, основанные на расширениях
Многие современные файловые системы, - например, Veritas File System, или Vx-FS – основная файловая система в ОС HP-UX фирмы Hewlett-Packard, - используют модифицированное смежное размещение файлов. Дисковые блоки в такой системе размещаются в расширениях (extents). Расширение – это смежный блок на диске. Файл состоит из одного или нескольких расширений. Таким образом, если длина файла не увеличивается, он хранится в виде одной смежной области внешней памяти, что обеспечивает максимальную эффективность доступа. В случае увеличения длины файл представляется списком из основной части и расширений.
Ссылочное размещение файла
При ссылочном размещении каждый файл представляется в виде связанного списка дисковых блоков, которые могут быть разбросаны по диску. Преимущества данного метода:
Простота – необходимо хранить только начальный адрес;
Отсутствие потерь дискового пространства; система хранит списки свободной памяти.
Недостаток - отсутствие произвольного доступа: для доступа к данным файла в общем случае необходимо выполнить просмотр части списка блоков файла.
При ссылочном размещении адрес по файлу представляется в виде (Q, R), где Q – номер блока, к которому выполняется доступ, в связанном списке блоков, представляющем файл; R - cмещение в блоке.
Ссылочное размещение файлов изображено
на рис. 20.3.
Рис. 20.3. Ссылочное размещение файлов.
К файловым системам, использующим
ссылочное размещение, относится файловая
система File-allocation table (FAT), используемая
в MS-DOS и OS/2 и до сих пор используемая в
Windows (рис. 20.4).Рис.
20.4. Файловая система File Allocation Table (FAT).
В системе FAT элемент директории содержит имя файла и адрес его начального блока (кластера) на диске. Каждый блок ссылается на следующий, кроме последнего. Система FAT разработана создателем корпорации Microsoft Биллом Гейтсом в 1976 г. Теперь читателю должно быть понятно, почему операция удаления файла в Windows не "фатальна": она означает лишь удаление элемента директории со ссылкой на начальный кластер файла. Несмотря на это, список кластеров, представляющий файл, можно обнаружить и восстановить ссылку из директории на его начало, хотя и под другим именем. В MS DOS данную функцию выполняла системная утилита unerase (отменить удаление).
Индексируемое размещение
При индексируемом размещении, в отличие от предыдущих, все указатели на блоки файла собраны вместе в индексный блок (i-node, superblock). Используется индексная таблица, ссылающаяся на блоки данных файла. Подобная система используется в системах UNIX, Linux, Solaris.
Пример индексируемого размещения
приведен на рис. 20.5.Рис.
20.5. Индексируемое размещение файлов.
Как видно из схемы, при индексируемом размещении блоки файла могут быть расположены как угодно разрозненно, но индексный блок содержит все ссылки на них. Ссылка на блок данных может быть выбрана непосредственно из индексного блока, без какого-либо поиска.
Определенная опасность такого размещения в том, что на индексный блок ложится критическая нагрузка: если его целостность будет нарушена, файл восстановлению не подлежит. Именно поэтому в UNIX команда rm, удаляющая файл, "фатальна" для него.
Таким образом, при индексируемом размещении файлов необходима индексная таблица. Преимущество такого метода размещения - возможность произвольного доступа; отсутствие внешней фрагментации. Накладными расходами является индексный блок.
При отображении логического адреса в физический, если ограничить максимальный размер файла 256 K словами, а размер блока - 512 слов, то для индексной таблицы требуется только один блок. Логический адрес будет иметь вид (Q, R), где Q - смещение в индексной таблице, R - смещение в блоке.
При отображении логического адреса в физический для файла неограниченной длины (при размере блока – 512 слов) может использоваться ссылочная схема – в список связываются блоки индексной таблицы. В данном случае логический адрес будет иметь вид (Q1, R1), где Q1 = номер блока индексной таблицы; R1 = (Q2, R2), где Q2 - смещение в блоке индексной таблицы, R2 смещение в блоке файла.
В системе UNIX используется комбинированная
схема индексного размещения файлов:
возможна одноуровневая адресация данных
через индексные блоки, двухуровневая
(индексные блоки адресуют другие
индексные блоки, а те, в свою очередь, -
блоки данных), трехуровневая и т.д. Данная
схема иллюстрируется на рис. 20.6.Рис.
20.6. Комбинированная индексная схема
размещения файлов в UNIX.
Управление свободной внешней памятью
Для управления свободной памятью на диске система использует битовый вектор длины n, где n – общее число блоков на диске, каждый бит которого описывает состояние соответствующего блока: bit[i] = 0, если block[i] свободен, 1 – если блок занят. При таком представлении информации о свободных и занятых блоках, номер первого занятого блока вычисляется по простой формуле:
номер первого занятого блока = число битов в слове * число нулевых слов + номер первой 1 .
Битовые шкалы, используемые для управления блоками, требуют дополнительной памяти. Например, при размере блока в 212 байтов и размере диска в 230 байтов (1 GB) длина битового вектора будет равна n = 230/212 = 218 битов (или 32 KB).
При использовании битовых векторов легко получать информацию о смежно расположенных файлах. Для сравнения, при использовании связанного списка свободной дисковой памяти (метод, обычно применяемый в ОС для оперативной памяти), невозможно легко получить информацию о смежных областях памяти, но зато нет лишнего расходования памяти.
Для предотвращения ситуаций рассогласованности информации о свободной дисковой памяти, операционной системе необходимо защищать указатель на список свободной памяти, либо битовую шкалу (в зависимости от способа представления информации о свободной памяти). Битовый вектор должен храниться на диске. Однако его копии в памяти и на диске могут различаться. Нельзя допустить, чтобы block[i] имел такую ситуацию, когда bit[i] = 1 в памяти и bit[i] = 0 на диске. Решение этой проблемы в том, чтоты согласовывать значения битов на диске и в памяти по следующему алгоритму:
Установить bit[i] = 1 на диске;
Разместить block[i];
Установить bit[i] = 1 в памяти.
Представление информации о свободной дисковой памяти в виде списка блоков иллюстрируется на рис. 20.7.
Рис.
20.7. Список свободной дисковой памяти.
Эффективность и производительность дисковой памяти
Эффективность использования дисковой памяти зависит от:
Алгоритмов распределения дисковой памяти и управления директориями;
Типов данных, хранимых в элементе директории для файла.
Для повышения производительности работы с диском используются следующие методы:
Кэширование диска – использование специальной области основной памяти для часто используемых блоков диска;
Освобождение прочитанного (free-behind) и опережающее считывание (read-ahead) – методы оптимизации последовательного доступа к диску, которые заключаются в том, что основная память, в которой хранились копии прочитанных блоков, освобождается, а вместе с очередным блоком файла считываются в основную память и несколько следующих блоков;
Организация виртуальных дисков - улучшение производительности ПК путем выделения области памяти под виртуальный диск (RAM-диск).
25. Аппаратура ввода-вывода (+типовая структура шины)
В настоящее время наблюдается все более и более активное развитие устройств ввода-вывода в компьютерных системах. В значительной степени это объясняется, во-первых, необходимостью ввода, обработки и вывода мультимедийной информации (аудио, видео, цифровых фотографий, отсканированных образов и других изображений), во-вторых, постоянной потребностью в увеличении скорости и емкости устройств вследствие гигантского роста размеров обрабатываемой информации. Еще в 1980-х гг., например, нормой считалось использование гибких дискет (FDD) емкостью 1.44 мегабайта для резервного копирования. Сейчас устройствами FDD настольные и портативные компьютеры вообще не комплектуются, а, что касается резервного копирования, то и устройств емкостью 128 гигабайт может оказаться недостаточно для этой цели.
Обзор аппаратуры ввода-вывода дан в "Особенности ОС для различных классов компьютерных систем. ОС реального времени. ОС для облачных вычислений ". Набор устройств включает, в частности:
клавиатуру и мышь;
жесткие диски (HDD), включая внутренние и внешние;
flash-память;
ленточные стримеры;
компакт-диски BluRay, DVD, CD;
твердотельные накопители на магнитных дисках (solid state disks – SSD);
ZIP drives, JAZ drives – уже устаревающие, но еще используемые устройства для резервного копирования со съемными носителями (их постепенно вытесняет флэш-память, физические размеры модулей которой гораздо меньше, а емкость – больше);
магнито-оптические диски – ныне уже устаревшие устройства для резервного копирования, но долгое время использовавшиеся;
устройства для мультимедийного ввода-вывода: порты и адаптеры IEEE 1394 (Fire-Wire) для подключения цифровых видеоустройств; порты и адаптеры High Definition Multimedia Interface (HDMI) для подключения видеоаппаратуры стандарта High Definition (HD); кард-ридеры для нескольких форматов (SmartMedia и др.) носителей, используемых в цифровых фотоаппаратах;
мониторы, видеокарты (видеоадаптеры) и графические процессоры, в том числе – многоядерные;
принтеры, сканеры.
Основные концепции
Рассмотрим общие концепции аппаратуры и ОС, связанные с устройствами ввода-вывода.
Каждое устройство подключается к компьютерной системе через порт – контроллер и разъем (либо беспроводное устройство) для передачи данных между устройством ввода-вывода и компьютером. Каждый порт имеет свое традиционное обозначение и свой номер в системе. Порт может существовать физически, как разъем для проводного соединения и связанный с ним контроллер порта (например, USB – универсальный порт для подключения широкого спектра устройств; LPT – порт для подключения принтеров и сканеров), либо может быть организован операционной системой как виртуальный порт для унификации обработки внешних устройств. Виртуальные порты, обычно – коммуникационные порты (COM) с большими номерами – например, COM10, COM15, - организуются для обмена с устройствами беспроводной связи – например, мобильными телефонами и органайзерами. Беспроводная связь чаще всего организуется через Bluetooth – радиосвязь на расстоянии до 20 м, в новых стандартах – до 1 км.
Шина (bus) - это цепочка устройств прямого доступа в компьютерной системе, через которую передается информация от одних устройств к другим. Обычно в настольных и портативных компьютерах используется шина PCI (Personal Computer Interface), тактовая частота которой в современных компьютерах 1 – 1.5 GHz. Она фактически и определяет суммарную производительность компьютерной системы. К шине PCI подключены контроллеры внешних устройств и портов.
Контроллер (host adapter) – специализированный микропроцессор для управления внешним устройством и портом. Контроллер внешнего устройства – это устройство управления командами ввода-вывода с данным внешним устройством. Устройства имеют адреса, используемые командами непосредственного ввода-вывода и командами ввода-вывода, отображаемого в память. Каждый контроллер усттройства использует свой буфер памяти для хранения одного или нескольких блоков информации, расположенный либо в специализированной памяти устройства (контроллера), либо являющийся частью оперативной памяти компьтерной системы.
Типовая структура общей шины персонального
компьютера изображена на рис. 21.1.
Рис.
21.1. Типовая структура общей шины
персонального компьютера.
Некоторые пояснения к схеме.
IDE – типовой интерфейс для подключения внутри корпуса компьютера через шлейфы внутренних жестких дисков, устройств CD – и DVD-ROM. Шлейф имеет характерную плоскую форму, шириной 2 -3 см, очень малой толщины, с широким разъемом. В современных компьютерах для внутренних дисков вместо IDE используется более высокоскоростной интерфейс SATA.
Контроллер и шина SCSI – возможность подключения к одному SCSI-порту цепочки (гирлянды) SCSI-устройств (дисков, сканеров, устройств CD-ROM и DVD-ROM и др.), каждое из которых имеет свой, уникальный в данной цепочке, номер – SCSI ID от 0 до 9. Удобство интерфейса SCSI в том, что цепочка организуется из внешних устройств, каждое из которых соединяется SCSI-кабелем со следующим, а последнее устройство в цепочке содержит включенный терминатор, обозначающий конец цепочки. Это удобно при наращивании объема внешней памяти компьютера. SCSI-устройства использовались автором на рабочих станциях SPARC фирмы Sun, которая являлась одним из активных сторонников интерфейса SCSI (Small Computer System Interface).
В таблица 1 приведен пример адресов внешних устройств персонального компьютера.
Таблица 1. Пример таблицы адресов внешних устройств ПК (частично) диапазон адресов устройств ввода-вывода устройство
000-00F DMA-контроллер
020-021 контроллер прерываний
040-043 таймер
200-20F игровой контроллер
2F8-2FF последовательный порт (вторичный)
320-32F контроллер жесткого диска
378-37F параллельный порт
3D0-3DF графический контроллер
3F0-3F7 контроллер гибких дисков (дискет)
3F8-3FF последовательный порт (первичный)
Порты устройств для ПК(см. первый вопрос )
Опрос устройств
Операционная система с помощью прерываний по таймеру организует опрос устройств – периодический анализ состояния каждого внешнего устройства. В процессе работы в состоянии устройств могли произойти изменения, например, пользователь установил флэшку в USB-порт, включил или выключил принтер и т.д. При опросе устройств ОС определяет состояние каждого устройства, которое может быть следующим:
command-ready – готово к выполнению команд;
busy – занято;
error – ошибка.
При выполнении ввода-вывода аппаратура организует цикл busy-wait ожидания ввода-вывода с устройством: если устройство занято, процесс ждет его освобождения.
Прерывания
Линия запросов на прерывания (interrupt request – IRQ) переключается устройством ввода-вывода, которое сигнализирует с помощью запроса на прерывание о начале или окончании ввода-вывода.
Обработчик прерываний получает сигнал о прерывании. Сигнал может быть замаскирован (maskable), чтобы игнорировать или задержать прерывание – например, если прерывание произошло в обработчике другого прерывания.
Вектор прерываний – резидентный массив, содержащий адреса обработчиков прерываний в операционной системе, - используется с целью переадресовки прерывания для обработки соответствующим обработчиком (handler).
Работа с вектором прерываний основана на приоритетах внешних устройств, инициировавших прерывания.
На рис. 21.2 приведена схема ввода-вывода,
управляемого прерываниями.
Рис.
21.2. Ввод-вывод, управляемый прерываниями.
В таблица 2 приведены номера прерываний в процессоре Intel Pentium.
Таблица 2. Tаблица номеров прерываний в процессоре Intel Pentium Номер прерывания Описание
0 ошибка при делении
1 исключение при отладке
2 прерывание по null
3 точка остановки
4 прерывание, обнаруженное INTO
5 исключение по выходу за границы
6 неверный код операции
7 устройство недоступно
8 двойное прерывание
9 переполнение сегмента сопроцессора
10 неверный сегмент состояния задачи
11 сегмент отсутствует
12 ошибка стека
13 общее прерывание по защите
14 отказ страницы
15 (зарезервировано Intel, не использовать)
16 ошибка в операции с плавающей точкой
17 контроль выравнивания
18 контроль аппаратуры
19-31 зарезервировано Intel, не использовать
32-255 маскируемые прерывания
Программный интерфейс ввода-вывода
При проектировании и реализации программного интерфейса (API) ввода-вывода используются принципы уровней абстракци.
Модули операционной системы, реализующие системные вызовы для ввода-вывода, инкапсулируют поведение конкретных устройств ввода-вывода и обеспечивают более абстрактный интерфейс.
Более низкий уровень, уровень драйверов устройств, скрывает различия между контроллерами ввода-вывода конкретных устройств от ядра ОС.
Устройства ввода-вывода различаются по многим параметрам в силу их специфики, например:
Устройство для работы с потоками символов или с блоками;
Устройство последовательного или прямого доступа;
Разделяемое или специализированное (монополизируемое) устройство;
Различия по скорости выполнения операций устройствами;
Устройство для чтения/записи, или только для чтении, или только для записи.
Структура модулей ввода-вывода в ядре,
разработанная и реализованная по этим
принципам, изображена на рис. 21.4.
Рис.
21.4. Структура модулей ввода-вывода в
ядре ОС.
Классификация устройств ввода-вывода по различным характеристикам и их примеры приведены в таблица 3.
Подсистема ввода-вывода в ядре ОС
Операционная система управляет устройствами ввода-вывода.
ОС осуществляет планирование, включая упорядочение запросов на ввод-вывод в очередях к каждому устройству.
ОС обеспечивает буферизацию – запись данных в память в процессе передачи между устройствами. Цели буферизации:
балансировка устройств с разными скоростями;
сглаживание несоответствия размера данных для работы с устройством;
поддержка "семантики копирования".
Как неоднократно отмечалось, для оптимизации работы с внешними устройствами организуется кэширование – использование быстрой память, в которой хранится копия данных (фактически в ней сохраняются наиболее часто используемые блоки). Следует, однако, иметь в виду, что содержимое кэш-памяти - всегда только копия реальных данных, поэтому в некоторых случаях приходится синхронизировать содержимое кэша с содержимым диска, чтобы не допустить рассогласованности информации. Кэширование - ключ к повышению производительности дисковых устройств.
Весьма важна также такая функция ОС, как буферизация вывода (spooling) – задержка вывода на устройство, с целью поддержания целостности информации, выводимой одним и тем же процессом. Типичный пример – печать на принтер.
ОС выполняет также резервирование устройства – обеспечение монопольного доступа к нему. Имеются системные вызовы для занятия и освобождения устройства монопольного доступа. ОС контролирует отсутствие тупиков (deadlocks), которые возможны при монопольном использовании устройств.
ОС выполняет обработку ошибок ввода-вывода. Система поддерживает восстанавление информации после чтения с диска, недоступности устройства, временных сбоев при записи. В большинстве случаев возвращается номер (код) ошибки, в случае, если запрос на ввод-вывод завершается неудачно. В системные журналы записывается информация об обнаруженных проблемах.
Структуры данных для ввода-вывода в ядре ОС
В ядре ОС хранится информация о состоянии для компонент ввода-вывода, включая таблицы открытых файлов, сетевых соединений, состояние символьных устройств. Она представляет собой большое число сложных структур данных (очередей ввода-вывода и таблиц устройств) для контроля буферов, распределения памяти и др. Реализация многих из этих системных структур использует объектно-ориентированные методы и передачу сообщений.
Структура модулей ввода-вывода в системе
UNIX изображена на рис. 21.5.
Рис.
21.5. Структура модулей ввода-вывода в
ядре UNIX.
Жизненный цикл запроса на ввод-вывод
Рассмотрим более подробно процесс чтения из дискового файла. Он состоит из следующих этапов:
Определяется устройство, на котором хранится файл;
Выполняется трансляция имени в представление устройства;
- Физически считанные данные с диска размещаются в буфере;
Данные становятся доступными для запросившего их процесса;
Управление возвращается процессу.
Жизненный цикл запроса на ввод-вывод
изображен на рис. 21.6.
Рис.
21.6. Жизненный цикл запроса на ввод-вывод.