Регистры архитектуры подсистемы ввода/вывода.




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

Регистр устройства – это адресуемые машинные слова, используемые для обмена данными или сигналами между устройством и ЦП.

Можно выделить два основных типа регистров:

1. Регистр данных – служит для обмена данными. Запись данных в такой регистр означает вывод данных на устройство. Чтение данных из регистра означает ввод данных с устройства.

2. Регистр управления и состояния – содержит два типа двоичных разрядов. Биты состояния служат для передачи ЦП информации о текущем состоянии устройства (например: сигналов прерывания). Биты управления служат для передачи на устройство сигналов и команд.

В различных ПК используется один из двух способов адресации регистров устройств:

1. Отображения регистров устройств на память

2. Адресация регистров через порты ввода/вывода

 

Асинхронный и синхронный ввод/вывод

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

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

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

2. Проверка завершения операции – при этом программа не ожидает, а только проверяет состояние асинхронной операции.

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

 

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

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

Существуют несколько причин для использования буферизации:

1. Сглаживание неравномерностей скоростей процессов – решением в этой ситуации является использование буфера максимально большого объема.

2. Распараллеливание ввода и обработки – здесь используется схема с двумя переключаемыми буферами, пока в 1м буфере накапливаются вводимые данные, предыдущая порция данных обрабатывается во 2м буфере без потери времени на пересылку, затем буферы меняются ролями.

3. Согласование логической и физической записи – логической записью называется объем данных указанный в операторе ввода/вывода. Размер логической записи определяется логикой работы программы и не как не связанны с блочным устройством. При фактическом выполнении чтения или записи на блочные устройства обрабатывается объем данных называемых физической записью. Размер физической записи определяется особенностями устройства. Использование буфера для накопления данных до размера физической записи позволяет сократить количество операций записи на диск и почти полностью исключить чтение с диска.

4. Редактирование при интерактивном вводе – что бы обеспечить возможность редактирования вводимой строки используется буфер строки, выделяемый либо ОС, либо библиотекой временного выполнения конкретной системы программирования. Все редактирование выполняется над символами, которые помещаются в этот буфер под программами ввода с клавиатуры. После нажатия «ввод» происходит либо копирование из буфера в массив, выделенными прикладной программой, либо передаче этой программе указатель на буфер.

 

Кэширование дисков.

Этот термин означает использование небольшой, но быстродействующей памяти, для того что бы уменьшить количество обращений к более медленной памяти большого объема. В роли КЭШа здесь выступает массив буферов, размещенный в системной памяти. Каждый буфер состоит из заголовка и блока данных соответствующему по размеру блока диска. Заголовок содержит адрес блока диска, копия которого в данный момент находится в буфере и несколько флагов, характеризующих состояние буфера. Когда система получает запрос на чтение или запись определенного блока данных диска, она прежде всего проверяет не содержится ли в данный момент копия этого блока в одном из буферов кэша. Для этого требуется выполнить поиск по заголовкам буферов, если блок найден в КЭШе, то обращение к диску выполнятся не будет. В случае записи данных, следуя так же заголовкам буфера, отметить с помощью спец флага что буфер стал «грязным», то есть его содержимое не соответствует данным на диске. Если требуемый блок диска не найден в КЭШе, то для него должен быть выделен буфер. Общее количество буферов кэша ограничено, что бы отдать один из них под требуемый блок, нужно вытянуть из кэша один из блоков которые там хранились, при этом есть вытесняемый блок «грязный». То он должен быть очищен, то есть, записан на диск. При вытеснении чистого блока никаких операция с диском выполнять не требуется.

Три случая очистки «грязных» буферов:

1. Выбор блока для вытеснения из кэша.

2. Закрытие файла, которые относятся к грязному буферу.

3. Операция очистки всех буферов, либо только буферов относящихся к определенному файлов.

 

17.10.2012



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: