СОДЕРЖАНИЕ
1.2.1 Ос как виртуальная машина
1.2.2 Ос как система управления ресурсами
1.3 Интерфейс прикладного программирования
1.4 Структура операционных систем
1.4.2 Многоуровневая структура ос
1.4.4 Микроядерная архитектура (модель клиент-сервер)
1.4.5 Обобщение сравнения моделей
2.2.3 Преимущества использования потоков
2.2.4 Реализация потоков в пространстве пользователя, ядра и смешанное
2.2.5 Особенности реализации Windows
3.1 Взаимодействие между процессами
3.1.1 Передача информации от одного процесса другому
3.1.4 Взаимное исключение с активным ожиданием
3.1.5 Примитивы взаимодействия процессов
4.1 Основные понятия планирования процессов
4.2 Планирование в системах пакетной обработки
4.3.2 Приоритетное планирование
4.3.3 Методы разделения процессов на группы
4.4 Планирование в системах реального времени
4.4.1 Планирование однородных процессов
4.4.2 Общее планирование реального времени
5.1 Взаимоблокировка процессов
5.2 Моделирование взаимоблокировок
5.3 Методы борьбы с взаимоблокировками
5.3.1 Пренебрежением проблемой в целом (страусовый алгоритм)
5.3.2 Обнаружение и устранение взаимоблокировок
5.3.3 Динамическое избежание взаимоблокировок
5.3.4 Предотвращение четырех условий, необходимых для взаимоблокировок
6.2 Методы без использования внешней памяти
6.2.1 Однозадачная система без подкачки на диск
6.2.2 Распределение памяти с фиксированными разделами.
6.2.3 Распределение памяти динамическими разделами
6.3 Методы с использованием внешней памяти (свопинг и виртуальная память)
7.1 Алгоритмы замещения страниц
7.2.1 Политика распределения памяти
7.2.3 Совместно используемые страницы
7.2.4 Политика очистки страниц
7.3 Особенности реализации в unix
7.4 Особенности реализации в Windows
8.1 Основные понятия сегментации
8.2.1 Сегментация с использованием страниц: multics
8.2.2 Сегментация с использованием страниц: Intel Pentium
8.3 Особенности реализации в unix
9.1 Принципы аппаратуры ввода-вывода
9.1.3 Отображаемый на адресное пространство памяти ввод-вывод
9.1.4 Прямой доступ к памяти (dma - Direct Memory Access)
9.2 Принципы программного обеспечения ввода-вывода
9.2.1 Задачи программного обеспечения ввода-вывода
9.2.3 Управляемый прерываниями ввод-вывод
9.2.4 Ввод-вывод с использованием dma
9.3 Программные уровни и функции ввода-вывода
9.3.3 Независимое от устройств программное обеспечение ввода-вывода
9.3.4 Программное обеспечение ввода-вывода пространства пользователя
9.3.5 Обобщение уровней и функций ввода-вывода
10.1.2 Raid (Redundant Array of Independent Disk - массив независимых дисков с избыточностью)
10.1.3.1 Компакт-диски с возможностью записи cd-r
10.1.3.2 Многократно перезаписываемые компакт-диски cd-rw
10.1.3.3 Универсальный цифровой диск dvd (Digital Versatile Disk)
10.2 Форматирование дисков (программная часть)
10.2.1 Низкоуровневое форматирование
10.2.3 Высокоуровневое форматирование
10.3 Алгоритмы планирования перемещения головок
10.3.1 Алгоритм "первый пришел - первым обслужен" fcfs (First Come, First Served)
10.3.3 Алгоритмы сканирования (scan, c-scan, look, c-look)
10.5 Стабильное запоминающее устройство
10.6.1 Аппаратная часть таймеров
10.6.2 Программное обеспечение таймеров
11.1.7 Файлы, отображаемые на адресное пространство памяти
12.2.3 Связные списки при помощи таблиц в памяти
12.3.1 Реализация длинных имен файлов
12.3.2 Ускорение поиска файлов
12.3.2.1 Использование хэш-таблицы для ускорения поиска файла.
12.3.2.2 Использование кэширования результатов поиска файлов для ускорения поиска файла.
12.4 Совместно используемые файлы
12.5 Организация дискового пространства
12.6 Надежность файловой системы
12.6.2 Непротиворечивость файловой системы
12.7 Производительность файловой системы
13.1.2 Рок-ридж расширения для unix
13.1.3 Joliet расширения для Windows
13.2 Файловая система ms-dos (fat-12,16,32)
13.2.4 Расширение Windows 98 для fat-32
14.1.2 Блокировка данных файла
14.1.3 Создание и работа с файлом
14.4 Сравнительная таблица некоторых современных файловых систем
14.4.1 Архитектура файловой системы nfs
Прямой доступ к памяти реализуется с помощью DMA - контроллера.
Контроллер содержит несколько регистров:
регистр адреса памяти
счетчик байтов
управляющие регистры, могут содержать: - порт ввода-вывода - чтение или запись - единицы переноса (побайтно или пословно)
Без контроллера происходит следующее:
Процессор дает команду дисковому контроллеру прочитать данные в буфер,
Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания.
Контроллер диска инициирует прерывание
Операционная система начинает работать и может считывать из буфера данные в память

Работа DMA - контроллера
С контроллером происходит следующее:
Процессор программирует контроллер (какие данные и куда переместить)
Процессор дает команду дисковому контроллеру прочитать данные в буфер
Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).
Контроллер DMA посылает запрос на чтение дисковому контроллеру
Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память
Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру
DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
Контроллер DMA инициирует прерывание
Операционной системе не нужно копировать данные в память, они уже там.
После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи.
Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод).
Контроллер прерываний - обслуживает поступающие прерывания от устройств.
Если необработанных прерываний нет, прерывание выполняется немедленно.
Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.

Работа прерываний
Алгоритм работы:
Устройство выставляет сигнал прерывания
Контроллер прерываний инициирует прерывание, указывая номер устройства
Процессор начинает выполнять обработку прерывания, вызывая процедуру
Эта процедура подтверждает получение прерывания контроллеру прерываний
Основные задачи, которые должно решать программное обеспечение ввода-вывода:
Независимость от устройств - например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.
Единообразное именование - имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).
Обработка ошибок - ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.
Перенос данных - синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).
Буферизация
Проблема выделенных (принтер) и невыделенных (диск) устройств - принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.
Три основных способа осуществления операций ввода-вывода:
Программный ввод-вывод
Управляемый прерываниями ввод-вывод
Ввод-вывод с использованием DMA
Рассмотрим их подробнее.
В этом случае всю работу выполняет центральный процессор.
Рассмотрим процесс печати строки ABCDEFGH этим способом.

Этапы печати строки ABCDEFGH
Алгоритм печати:
Строка для печати собирается в пространстве пользователя.
Обращаясь к системному вызову, процесс получает принтер.
Обращаясь к системному вызову, процесс просит распечатать строку на принтере.
Операционная система копирует строку в массив, расположенный в режиме ядра.
ОС копирует первый символ в регистр данных принтера, который отображен на памяти.
Символ печатается на бумаге.
Указатель устанавливается на следующий символ.
Процессор ждет, когда бит готовности принтера выставится в готовность.
Все повторяется.
При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.
Если в предыдущем примере буфер не используется, а принтер печатает 100 символов в секунду, то на каждый символ будет уходить 10мс, в это время процессор будет простаивать, ожидая готовности принтера.
Рассмотрим тот же пример, но с небольшим усовершенствованием.
Алгоритм печати:
До пункта 8 тоже самое.
Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется.
Когда принтер будет готов, он посылает прерывание процессору.
Процессор переключается на печатающий процесс.
Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.
Алгоритм не отличается, но всю работу на себя берет контроллер DMA.
Четыре уровня ввода-вывода:

Уровни ввода-вывода
Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод.
Алгоритм:
Драйвер начинает операцию ввод-вывод.
Драйвер блокирует сам себя, - выполнив на семафоре процедуру down - выполнив на переменной состояния процедуру wait - выполнив на сообщении процедуру receive
Происходит прерывание
Обработчик прерываний начинает работу
Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)
Драйвер устройства - необходим для каждого устройства. Для разных ОС нужны разные драйверы.
Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера.
Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.

Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине.
Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.
Стандартные интерфейсы, которые должны поддерживать драйвера:
Для блочных устройств
Для символьных устройств
Раньше для установки ядра приходилось перекомпилировать ядра системы.
Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.
Функции, которые выполняют драйвера:
обработка запросов чтения или записи
инициализация устройства
управление энергопотреблением устройства
прогрев устройства (сканера)
включение устройства или запуска двигателя
Функции независимого от устройств программного обеспечения ввода-вывода:
Единообразный интерфейс для драйверов устройств,
Буферизация
Сообщения об ошибках
Захват и освобождение выделенных устройств (блокирование)
Размер блока, не зависящий от устройств
Единообразный интерфейс для драйверов устройств
Кроме интерфейса, в него также входят проблемы,
именование устройств
защита устройств
Буферизация
Рассмотрим несколько примеров буферизации.

a) Не буферизованный ввод - после ввода каждого символа происходит прерывание
b) Буферизация в пространстве пользователя - приходится держать загруженными необходимые страницы памяти в физической памяти.
c) Буферизация в ядре с копированием в пространство пользователя - страница загружается только когда буфер ядра полный, данные из буфера ядра в буфер пользователя копируется за одну операцию. Проблема может возникнуть, когда буфер ядра полный, а страница буфера пользователя еще не загружена.
d) Двойная буферизация в ядре - если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.
Сообщения об ошибках
Наибольшее число ошибок возникает именно от операции ввода-вывода, поэтому их нужно определять как можно раньше. Ошибки могут быть очень разные в зависимости от устройств.
Захват и освобождение выделенных устройств
Для устройств (принтер) с которыми должен работать в одно время только один процесс, необходима возможность захвата и освобождения устройств. Когда один процесс занял устройство, остальные встают в очередь.
Независимый от устройств размер блока
Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).
Функции этого обеспечения:
Обращение к системным вызовам ввода-вывода (через библиотечные процедуры).
Форматный ввод-вывод (меняют формат, например, в ASCII)
Спулинг (для выделенных устройств) - создается процесс (например, демон печати) и каталог спулера.
| 2014 biblioonline ru |