Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
42
Добавлен:
30.04.2013
Размер:
16.33 Mб
Скачать

Буферный кэш.

для улучшения производительности ОС Unix использует буферный кэш при обращении к блок-ориентированным устройствам. То есть все опера­ции обмена данными с этими устройствами осуществляются через подсис­тему кэширования. За счет использования кэша производительность сис­темы существенно улучшается при выполнении операций чтения и записи. Каждый винчестер в системе имеет свою собственную очередь запросов, при этом, если драйвер сразу не может удовлетворить запрос к памяти буфера, этот запрос добавляется в очередь, а процесс приостанавливается, пока его запрос не будет выполнен. В своей работе буфер кэша использует несколько потоков, управляемых, например, демоном kflushd.

Механизмы обмена данными.

Когда драйверу необходимо удовлетворить запрос, он начинает инициацию с подготовки устройства. Существует три механизма перемещения данных из компьютера к периферийным устройствам. Это механизмы пол­линга (polling), прямого доступа в память (DMA) и прерываний. Первый из них (поллинг) основан на периодической проверке состояния регистров периферийных устройств на выполнение запросов, стоящих в очереди бу­фера. Если устройство готово выполнить запрос, то драйвер выполняет его и инициализирует следующий запрос из очереди. поллинг является самым простым, но и самым медленным механизмом и предназначен для таких устройств, как гибкие диски и модемы.

Следующим механизмом является прямой доступ в память (DМА). В этом случае драйвером инициализируется прямой канал между физической памятью компьютера и периферийным устройством. Передача информации осуществляется без использования центрального процессора, который до окончания операции передачи данных в это время может выполнять другую задачу. Когда DMA передача закончена, на процессор посылается прерывание. Это прерывание переключает процессор на выполнение за­вершающих операций в режиме DМА.

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

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

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

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

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

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