Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 2. ОС - Управление устройствами

.pdf
Скачиваний:
57
Добавлен:
01.06.2015
Размер:
393.99 Кб
Скачать

31

Буферизация и кэширование

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

Запись на диск выполняется в следующих случаях:

при вытеснении "грязного" буфера из кэша;

при закрытии файла;

по специальной команде "очистки буферов" (flush).

Смысл кэширования – в резком сокращении количества обращений к диску.

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

Операционные системы. Управление устройствами

32

Буферизация и кэширование

Идеальный (но нереальный) алгоритм: выбрать для вытеснения тот буфер, к которому дольше всего не будет обращения в будущем.

Этот алгоритм может использоваться для сравнения с реальными алгоритмами по качеству.

Другие алгоритмы выбора вытесняемого буфера:

выбрать тот буфер, который дольше всего находится в памяти – часто это неудачный выбор;

выбрать буфер случайным образом – не лучший, но и не худший способ;

выбрать тот буфер, к которому дольше всего не было обращений (алгоритм LRU) – лучший из реализуемых, тесно связан с идеей локальности ссылок.

Операционные системы. Управление устройствами

33

Буферизация и кэширование

Реализация алгоритма LRU

Плохая идея – хранить в заголовке буфера время последнего обращения и выбирать самое раннее время. Громоздко и медленно.

Хорошая идея – связать все кэш-буферы в линейный

список.

LRU-список буферов

Указатель на начало списка

Заголовок

 

 

 

 

 

буфера

 

 

 

 

 

Блок

 

 

 

 

 

данных

 

 

 

 

 

1

2

3

4

. . .

N

Блок для

Самый "свежий"

вытеснения

блок

Операционные системы. Управление устройствами

34

Буферизация и кэширование

Кэширование записи – небезопасная стратегия, в отличие от кэширования чтения. Данные в "грязных" буферах могут быть потеряны при сбое питания, при внезапном крахе системы, при выдергивании флэш-диска из разъема и т.п. Это плата за значительное повышение производительности системы.

Программы, требующие высокой надежности работы с данными, могут либо вообще не использовать кэш, либо "очищать" буфер после каждой операции записи (при этом сохраняется возможность использовать кэш при чтении).

Операционные системы. Управление устройствами

35

Буферизация и кэширование

Опережающее чтение – другая стратегия оптимизации работы с дисками, отличная от кэширования.

В том случае, если обработка файла ведется строго последовательно, от начала файла к концу, кэширование малоэффективно.

В этом случае система пытается при чтении сектора с диска прочитать "с запасом" еще несколько следующих секторов, к которым ожидается обращение в будущем.

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

Операционные системы. Управление устройствами

36

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

Драйвер устройства – системная программа, которая под управлением ОС выполняет все операции с конкретным периферийным устройством.

Основные задачи драйвера:

обеспечить возможность стандартного обращения к любому устройству, скрывая от остальных частей ОС специфические особенности отдельных устройств;

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

Операционные системы. Управление устройствами

37

Некоторые типичные функции драйверов устройств

Для всех драйверов:

инициализация устройства;

открытие / закрытие устройства;

чтение данных;

запись данных;

выполнение специальных функций для конкретного устройства.

Для блочных драйверов:

форматирование;

поиск сектора.

Для символьных драйверов:

"неразрушающий" ввод.

Операционные системы. Управление устройствами

38

Основные блоки драйвера

Заголовок

имя устройства;

тип устройства;

число однотипных устройств;

объем памяти на устройстве;

адреса блока стратегии и блока прерываний.

Блок стратегии

прием заявок на выполнение операций;

ведение очереди заявок;

запуск и завершение операций.

Блок прерываний

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

Операционные системы. Управление устройствами

39

Драйверы

Высокоуровневые драйверы:

не взаимодействуют с устройствами;

не содержат блока прерываний;

могут принимать заявки и использовать другие драйверы для их выполнения;

служат для различных преобразований данных:

трансляция графических примитивов в команды устройства;

упаковка (сжатие) / распаковка данных;

шифрование / расшифровка данных;

и т.п.

Операционные системы. Управление устройствами

40

Управление устройствами в BIOS

BIOS (Basic Input / Output System) – набор программ в постоянной памяти компьютера для простейших операций с устройствами и для выполнения начальной загрузки.

Не зависит от конкретной ОС.

Обработчики аппаратных прерываний BIOS – обеспечивают разумную реакцию системы на прерывания. В простейшем случае просто ставят флажок "Было прерывание".

Обработчики программных прерываний BIOS – дают набор функций ввода / вывода для конкретных устройств.

После загрузки ОС она может либо использовать обработку аппаратных и программных прерываний в BIOS, либо только аппаратных, либо полностью взять на себя обработку прерываний и выполнение ввода / вывода, минуя BIOS.

Операционные системы. Управление устройствами