Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lections_2007.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
955.9 Кб
Скачать

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]