Обработка ошибок

Существует два вида ошибок при обращении к странице:

1. отсутствие данных;

2. отказ системы защиты.

1.

2. Обращение к недопустимым страницам. Например, к адресу, выходящему за рамки виртуального адреса пространства.

Когда процесс пытается обратиться к недоступной странице, возникает прерывание, и процессор запускает программу обработки прерываний по отказу данного типа. Если информация отсутствует в системе, то ядро посылает процессу сигнал нарушения сегментации.

Если ссылка на страницу сделана правильно, то ядро выделяет физическую страницу в памяти и считывает в нее содержимое виртуальной страницы с устройства выгрузки или из исполняемого файла.

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

Когда ядро не может выделить процессу страницы памяти, оно возобновляет работу процесса подкачки и переводит процесс в состояние эквивалентное готовности к запуску будучи зарезервированным.

Управление вводом/ выводом

Подсистема управления вводом/ выводом позволяет процессам поддерживать связь с периферийными устройствами.

Периферийные устройства - это терминалы, принтеры, сети.

Драйверы - модули ядра, которые управляют устройствами.

Каждому устройству соответствует один драйвер. Возможна ситуация, когда для однотипных устройств используются разные драйверы.

Стадии конфигурации драйвера:

1. при подключении модуля

2. для plug-and-play устройств

Bios устанавливает для каждого драйвера свое прерывание:

- при подгруке модуля

- в модуле ядра

Результатом конфигурации является заполнение таблицы ключей. В таблице можно выделить два поля:

При обращении к жесткому диску ядро смотрит тип устройства (оно содержится в имени файла).

Существует два вида устройств:

1. символьные - - информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)

2. блочные - информация считывается и записывается по блокам, блоки имеют свой адрес (диски)

К символьным устройствам относят те, к которым возможен последовательный доступ (мышь, модем), к блочным – произвольный доступ (винчестеры, диски).

Соответственно бывают блочные и символьные файлы.

Обращение происходит через буферный Кеш.

/dev/ - специальный каталог, для обращения к устройствам

Для работы с блочными используются команды open, close, read, write.

А для работы с символьными ioctl (для вызова). Создаются файлы командой mknod:

mknod имя_файла тип ст. устр-ва мл. устр-ва

(Пример): для создания файла, который будет отвечать за COM1:

mknod <имя файла><тип> major minor, где

major – номер типа устройства

minor – номер устройства заданного типа

Например, mknod /dev/tty/ S0 C 4 64

Старший номер устройства - это тип устройства, который указывается в таблице ключей, а младший номер - это номер устройства данного типа.

Возникновение прерывания побуждает ядро запускать программу обработки прерывания для данного типа устройств (тип устройства определяется по вектору), передавая ей номер устройства.

ПО ввода/вывода

Ключевые моменты:

1) независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска.

2) обработка ошибок. Ошибки следует обрабатывать как можно ближе к аппаратуре.

3) буферизация. Данные с устройств невозможно сразу записать туда, куда надо.

А) IP – пакет ядро/драйвер скачивает в буфер

Б) формирование звука

В) запись CD/DVD

Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя (см. рис.)

1) Обработка прерываний

2) Драйверы устройств

3) Независимый от устройств слой операционной системы

4) Пользовательский слой программного обеспечения.

 

 

Многоуровневая организация подсистемы ввода-вывода

Способы работы с устройствами I/O