Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections_v2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
10.99 Mб
Скачать

Схемы обменной буферизации

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

Буферный пул или отдельный буфер могут быть созданы

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

б) динамически. Динамическое создание является более эффективным с точки зрения ресурсов системы. буферный пул создается перед началом обмена с внешним устройством. По завершении обмена буфера освобождаются

Буферный пул формируется одним из следующих способов:

  1. Созданием в обрабатывающей программе специальной области памяти и последующим выполнением макро-команды build (BUILT?), которая связывает данный буферный пул с соответствующим набором (наборами) данных.

  2. С помощью макро-команды GETPOOL, которая требует, чтобы операционная система создала буферный пул. Он будет освобожден командной FREEPOOL

  3. Разрешением ОС автоматически создавать буферный пул при открытии набора данных.

В системе для работы с буферами предусмотрены специальные макрокоманды: GETBUF, FREEBUF, READ, WRITE.

Разница между буферизацией, которая выполняется с запрашиванием соответствующих буферов, и системной буферизацией, которая выполняется независимо. Такая буферизация в системе называется кэшированием. Буферный кэш предназначен для выравнивания скоростей. На лабораторной работе в прошлом семестре рассматривались кэши. Смысл кэша – держать актуальную информацию (информация, которая востребована в текущий момент времени). Алгоритм заполнения кэша (используемый в последнее время). В кэшах должна содержаться информация, обращения к которой выполнялись в последнее время. Если произошло закрытие файла, то содержимое кэша теряет свою актуальность. Такое событие в системе должно перехватываться. Так называемая когерентность кэшей. Спулинг.

Прерывания.

Обработчики прерываний являются частью драйверов. Аппаратные прерывания происходят по завершении операции ввода вывода.

Обслуживание прерываний.

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

Во всех системах прерывания делятся на две части: верхняя и нижняя половина. Виндоус оперирует понятием dpc. Тем не менее, и в Юникс и в Виндоус прерывания делятся на две части.

В Юникс и Юникс-подобных системах эти части называются top half и bottom half.

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

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