Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Подсистема ввода-вывода

Настраивающий загрузчик | Загрузка программ для ЭВМ с явной адресацией | Загрузка программ для ЭВМ с неявной сегментной адресацией | Загрузка программ в ПЭВМ | Оверлейные программы | Call dword ptr over_off | Дисциплины с одной очередью | Дисциплины с несколькими очередями | Прерывания | Резидентные программы в MS DOS |


Читайте также:
  1. ПЕРЕНАПРАВЛЕНИЕ ВВОДА-ВЫВОДА. ПРОГРАММНЫЙ КАНАЛ
  2. Подсистема ADSL-доступа
  3. Стандартные потоки ввода-вывода для базовых типов.

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

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

Рассмотрим обработку запросов на ввод/вывод для многопрограммных систем. ЦП выдает запрос на владение ПУ. Обрабатывают запрос супервизор ввода/вывода ОС или система управления вводом/выводом ОС. Супервизор ввода/вывода проверяет статус устройства: выделенное или разделяемое. К выделенным относят устройства, предназначенные для одного пользователя. В свою очередь выделенные могут быть реальными, предназначенными только для одного пользователя, и виртуальными.

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

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

Разделяемые ПУ используются совместно. Это, в основном, устройство внешней памяти на дисках. При запросе внешней памяти выделяется память на диске под каждый файл. Выделение может быть статическое и динамическое. Первые ОС использовали статическое выделение, т.е. выделяли память пользователю до инициирования работы.

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

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

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

Для запроса устройства и организации ввода/вывода необходимо знать состояние устройства: занято, свободно, неработоспособно и причины неработоспособности. Информация о состоянии вырабатывается контроллером устройства и доступна всегда через адаптер и регистры связи, управляющие устройствами.

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

Основные функции драйвера, работающего в режиме прерывания:

проверить состояние устройства;

если необычное состояние, выполнить соответствующую подпрограмму;

если нормальное состояние, то прочесть или записать данные.

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

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

Вне зависимости от драйвера в качестве параметров ему передается:

адрес с данными или для данных (чтение);

размер данных или максимально допустимый размер (чтение).

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

Драйверы современных ОС позволяют одинаковым способом обращаться к каждому устройству, считая его диском. Реально же это может быть клавиатура, экран, принтер, линия связи и т.д. (сравните переназначение ввода/вывода в MS-DOS через команды > и <).

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

скорость передачи данных обычно во много раз меньше, чем скорость ЦП и скорость доступа к ОП;

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

асинхронность работы устройства и процессора;

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

Обычно чтение вводимых данных выполняют задолго до того, как они смогут использоваться. Буфера почти всегда располагаются в ОП. (В MS-DOS и config.sys имеется информация о размере буферов - BUFFERS).

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

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

За каждым файлом закрепляется несколько буферов. Обслуживает буферы супервизор ввода/вывода. В обслуживание входит:

слежение за заполненностью буферов (блокирование);

запуск ввода/вывода (подвод головок и выдача команды адаптеру на начало обмена с заданной областью ОП);

реагирование на сигнал прерывания об окончании обмена;

анализ кода возврата и чтение регистров состояния устройства;

пересылка затребованных байтов из активного или в активный буфер.

Несовпадение размеров записей и блоков данных на носителях связано с техническими и экономическими причинами. Технические: между блоками вводятся промежутки, чтобы разогнаться (для магнитных лент и мягких диски) и настроить аппаратуру на темп обмена, т.е. выполнить синхронизацию; синхронизирующие импульсы располагаются между блоками и др. Экономические: промежутки между блоками небольших записей снижают КПД носителя.

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

 


Дата добавления: 2015-10-02; просмотров: 31 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Управление периферийными устройствами| БИБЛИОГРАФИЧЕСКИЙ СПИСОК

mybiblioteka.su - 2015-2024 год. (0.007 сек.)