Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Назначение и задачи подсистемы ввода-вывода



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

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

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

На подсистему ввода-вывода возлагаются следующие функции:

· организация параллельной работы устройств ввода-вывода и процессора;

· согласование скоростей обмена и кэширование данных;

· разделение устройств и данных между процессами (выполняющимися програм­мами);

· обеспечение удобного логического интерфейса между устройствами и ос­тальной частью системы;

· поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;

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

· поддержка нескольких различных файловых систем;

· поддержка синхронных и асинхронных операций ввода-вывода.

54. Организация параллельной работы устройств ввода-вывода и процессора. Эволюция ввода-вывода может быть представлена следующими этапами:

· Процессор непосредственно управляет периферийным устройством.

· Устройство управляется контроллером. Процессор использует программируемый ввод-вывод без прерываний (переход к абстракции интерфейса ввода-вывода).

· Использование контроллера прерываний. Ввод-вывод, управляемый прерываниями.

· Использование модуля (канала) прямого доступа к памяти. Перемещение данных в память (из нее) без использования процессора.

· Использование отдельного специализированного процессора ввода-вывода, управ­ляемого центральным процессором.

· Использование отдельного компьютера для управления устройствами ввода-выво­да при минимальном вмешательстве центрального процессора.

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

Для персональных компьютеров операции ввода-вывода могут выполняться тремя способами.

1. С помощью программируемого ввода-вывода. В этом случае, когда процессору встречается команда, связанная с вводом-выводом, он выполняет ее, посылая соответствующие команды контроллеру ввода-вывода. Это устройство выполняет требуемое действие, а затем устанавливает соответствующие биты в регистрах состоя­ния ввода-вывода и не посылает никаких сигналов, в том числе сигналов прерыва­ний. Процессор периодически проверяет состояние модуля ввода-вывода с целью проверки завершения операции ввода-вывода. Таким образом, процессор непосредственно управляет операциями ввода-вывода, включая опознание состояния устройства, пересылку команд чтения-записи и пере­дачу данных. Процессор посылает необходимые команды контроллеру ввода-вывода и переводит текущий процесс в состояние ожидания завершения операции ввода-вы­вода. На блок-схеме (рис. 4.3) видны недостатки такого метода - большие потери процессорного времени, связанные с управлением вводом-выводом.

2. Ввод-вывод, управляемый прерываниями. Процессор посылает необходимые коман­ды контроллеру ввода-вывода и продолжает выполнять текущий процесс, если нет необходимости в ожидании выполнения операции ввода-вывода (рис. 4.4). В противном случае текущий процесс приостанавливается до получения сигнала прерывания о завершении ввода-вывода, а процессор переключается на выполнение другого процесса. Наличие прерываний процессор проверяет в конце каждого цикла выполняемых команд.

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

3. Прямой доступ к памяти (direct memory access - DMA). В этом случае специальный модуль прямого доступа к памяти управляет обменом данными между основной памятью и контроллером ввода-вывода. Процессор посылает запрос на передачу блока данных модулю прямого доступа к памяти, а прерывание происходит только после передачи всего блока данных.

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

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

Согласование скоростей обмена и кэширования данных

При обмене данными всегда возникает задача согласования скоростей работы уст­ройств. Решение этой задачи достигается буферизацией данных [8,18, 20]. В подсисте­ме ввода-вывода часто используется буферизация в оперативной памяти. Однако буфе­ризация только на основе оперативной памяти часто оказывается недостаточной из-за большой разницы скоростей работы оперативной памяти и внешнего устройства объ­ема оперативной памяти может просто не хватить. В этих случаях часто используют в качестве буфера дисковый файл, называемый спул-файлом. Типичный пример применения спулинга - вывод данных на принтер. (Для печатаемых документов объем в не­сколько Мбайт - не редкость, поэтому временное хранение такого файла в течение де­сятков минут в оперативной памяти нецелесообразно.)

Другим решением проблемы является использование большой буферной памяти в контроллерах внешних устройств. Такой подход полезен в тех случаях, когда помеще­ние данных на диск слишком замедляет обмен (или когда данные выводятся на сам диск). Например, в контроллерах графических дисплеев применяется буферная память, соизмеримая по объему с оперативной памятью, и это существенно ускоряет вывод графика на экран.

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

Возможные схемы буферизации ввода-вывода приведены на рис. 4.7.

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

Работа одинарного буфера для блочно-ориентированных устройств может быть

описана следующим образом. Сначала осуществляется передача входных данных в сис-

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

пространство и немедленно производит запрос следующего блока. Такая процедура на-

зывается опережающим считыванием или упреждающим вводом.

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

Пусть Т - время, необходимое для ввода одного блока, а С - для вычислений, выпол­няющихся между запросами на ввод-вывод. Без буферизации время выполнения, прихо­дящееся на один блок, будет равно Т + С, при использовании одинарной буферизации время будет равно max [С, Т] + М, где М - время перемещения данных из системного бу­фера в пользовательскую память. В большинстве случаев Т + С > max [С, Т] + М.

Схема одинарного буфера может быть применена и при поточно-ориентированном вводе-выводе - построчно или побайтно (в строчных принтерах, терминалах и др.). На­пример, при операции вывода пользовательский процесс может разместить в буфере строку и продолжить работу.

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

Время выполнения при блочно-ориентированной передаче можно грубо оценить как max [С, Т]. Таким образом, если С < Т, то блочно-ориентированное устройство мо­жет работать с максимальной скоростью. Если С > Т, то двойная буферизация избавля­ет процесс от необходимости ожидания завершения ввода-вывода.

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

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

Разделение устройств и данных между процессами

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

ОС может контролировать доступ не только к устройству в целом, но и к отдель­ным порциям данных, хранимых этим устройством. Диск является типичным приме­ром такого устройства, где важно контролировать доступ к файлам и каталогам. В пос­леднем случае непременным является задание режима совместного использования уст­ройства в целом.

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

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

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

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





Дата публикования: 2014-11-04; Прочитано: 5511 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...