Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод-вывод в операционной системе. Принципы аппаратного ввода-вывода. Программный ввод-вывод, ввод-вывод с прерываниями, ввод-вывод с использованием DMA. Виды DMA. Достоинства и недостатки DMA.

Поиск

Существуют три фундаментально различных способа осуществления операций ввода-вывода: программный ввод-вывод; управляемый прерываниями ввод-вывод и ввод-вывод с использованием DMA. Мы рассмотрим эти три способа на примере процесса пользователя, которому нужно напечатать на принтере строку из восьми символов «ABCDEFGH».

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

Напечатав первый символ на принтере, операционная система проверяет, го­тов ли принтер к приему следующего символа. Итак, операционная система ждет, когда принтер снова перейдет в состояние готовности. Когда это происходит, она печатает следующий символ. Этот цикл продолжается до тех пор, пока не будет распечатана вся строка. После этого управление возвращается процессу пользователя.Существенный аспект программного ввода-вывода, состоит в том, что после печати каждого символа процессор в цикле опрашивает готовность устройства. Такое поведение процессора называется опросом или ожиданием готовности, а также активным ожиданием.Программный ввод-вывод очень легко реализуется, но его существенный недо­статок состоит в том, что центральный процессор занимается на все время опера­ции ввода-вывода. Даже если один символ «печатается» очень быстро, принтер обычно не рассчитан на прием символов с той скоростью, с которой их может выдать быстрый процессор. Поэтому большую часть времени централь­ный процессор проведет в ожидании готовности принтера, что является неэффектив­ным использованием процессорного времени. Такой подход вполне допустим в при­митивных встроенных системах, в которых у центрального процессора нет других задач; однако в более сложных, многозадачных системах такой подход неприемлем. Управляемый прерываниями ввод-вывод. Рассмотрим теперь случай принтера, не буферизирующего символы, а печатаю­щего их сразу по прибытии. Если принтер может печатать, скажем, 100 символов в секунду, то на печать каждого символа уходит 10 мс. Это значит, что после запи­си каждого символа в регистр данных принтера центральный процессор должен ждать в цикле целых 10 мс, пока ему не позволят записать в регистр следующий символ. Этого времени более чем достаточно для переключения контекста и запус­ка другого процесса на 10 мс, которые в противном случае просто будут потеряны. Предоставить центральному процессору возможность делать что-нибудь в то время, когда принтер переходит в состояние готовности, можно при помощи пре­рываний. Когда выполняется системный вызов печати строки, как мы уже показы­вали, буфер копируется в пространство ядра и первый символ строки копируется на принтер, как только принтер выставит бит готовности. После этого централь­ный процессор вызывает планировщик, который запускает какой-либо другой про­цесс. Процесс, попросивший распечатать строку, блокируется на весь период печати строки.Когда принтер напечатал символ и готов принять следующий, он инициирует прерывание. Это прерывание вызывает остановку текущего процесса и сохране­ние его состояния. Затем запускается процедура обработки прерывания от прин­тера. Если напечатаны все символы, обработчик прерывания предпринимает необходимые меры для разбло­кировки процесса пользователя. В противном случае он печатает следующий сим­вол, подтверждает прерывание и возвращается к процессу, выполнение которого было приостановлено прерыванием от принтера.

Ввод-вывод с использованием DMA.Очевидный недостаток управляемого прерываниями ввода-вывода состоит в том, что прерывания происходят при печати каждого символа. Обработка прерываний занимает определенное время, поэтому такая схема не является эффективной. Решение этой проблемы заключается в использовании DMA. Идея состоит в том, чтобы позволить контроллеру DMA поставлять принтеру символы по одному, не беспокоя при этом центральный процессор. По существу, этот метод почти не отличается от программного ввода-вывода, с той лишь разницей, что всю работу вместо центрального процессора выполняет контроллер DMA.Операционная система может воспользоваться прямым доступом к памяти только при наличии аппаратного DMA-контроллера. DMA-контроллер может получать дос­туп к системной шине независимо от центрального процессора. Он содержит несколько регистров, доступных центральному процессо­ру для чтения и записи. К ним относятся регистр адреса памяти, счетчик байтов и один или более управляющих регистров. Управляющие регистры задают, какой порт ввода-вывода должен быть использован, направление переноса данных (чте­ние из устройства ввода-вывода или запись в него), единицу переноса (осуществ­лять перенос данных побайтно или пословно), а также число байтов, которые сле­дует перенести за одну операцию.Принцип работы DMA.Сначала центральный процессор программирует DMA-контроллер, устанавливая его регистры и указывая, таким образом, какие данные и куда следует переместить.DMA – контроллер делает запрос контроллеру диска на чтение данных.Контроллер диска сначала считывает дан­ные в свой внутренний буфер. При помощи внутренней буферизации контроллер диска может проверить контрольную сумму до начала переноса данных в память. Если контрольные суммы не совпадают, формируется сигнал об ошибке и перенос дан­ных не производится. Также внутренний буфер необходим по следующей причине: как только началась операция чтения с диска, биты начинают поступать с постоянной скоростью, независимо от того, готов контрол­лер диска их принимать или нет. Если контроллер диска попытается писать эти данные напрямую в память, ему придется делать это по системной шине. Если при передаче очередного слова шина окажется занятой каким-либо другим устрой­ством, контроллеру диска при­дется ждать. Если следующее слово с диска прибудет раньше, чем контроллер ус­пеет сохранить предыдущее, то контроллер потеряет предыдущее слово.DMA-контроллер начинает перенос данных, посылая дисковому контроллеру по шине запрос чтения (шаг 2). Контроллер диска даже не знает, пришел ли он от центрального процессора или от контроллера DMA. Обычно адрес памяти уже находится на ад­ресной шине, так что контроллер диска всегда знает, куда следует переслать сле­дующее слово из своего внутреннего буфера. Запись в память является еще одним стандартным циклом шины (шаг 3). Когда запись закончена, контроллер диска также по шине посылает сигнал подтверждения контроллеру DMA (шаг 4). Затем контроллер DMA увеличивает используемый адрес памяти и уменьшает значение счетчика байтов. После этого шаги со 2-го по 4-й повторяются до обнуления счетчика. По завершении цикла копирования контроллер DMA инициирует прерывание процессора, сообщая ему таким образом, что перенос дан­ных завершен.Виды DMA.Контроллеры DMA значительно различаются по степени своей сложности. Самые простые из них за один раз выполняют одну операцию переноса данных. Более сложные контроллеры могут выполнять сразу не­сколько подобных операций. У таких контроллеров несколько каналов, каждый из которых управляется своим набором внутренних регистров.Многие шины могут работать в двух режимах: в пословном и поблочном. Некоторые контроллеры DMA также могут функционировать в обоих режимах. В пословном режиме процедура выглядит так: контроллер DMA выставляет запрос на перенос одного слова и получает его. Если цент­ральному процессору также нужна эта шина, ему приходится подождать. Этот механизм называется захватом цикла, потому что контроллер устройства периодически «подкрадывается» и забирает случайный цикл шины у центрального процессора, слегка его тормозя. В блочном режиме контроллер DMA велит устройству занять шину, сделать серию пересылок и отпустить шину. Такой способ действий называется пакетным режимом. Он более эффективен, чем захват цикла, поскольку занятие шины требует времени, а в пакетном режиме эта процедура выполняется всего один раз для передачи целого блока данных. Недо­статком этого метода является то, что при переносе большого блока данных он может заблокировать центральный процессор и другие устройства на существенный промежуток времени. В некоторых DMA-контроллерах используется также режим, при котором контроллер устройства посылает слово данных контроллеру DMA, который затем выставляет на шину еще один запрос для передачи этого слова по назначению. При такой схеме требуется лишний цикл шины на пере­дачу каждого слова, зато такая схема обладает большей гибкостью, так как также позволяет выполнять копирование с устройства на устройство, минуя память, и даже из памяти в память.Достоинства и недостатки DMA.Наибольший выигрыш от использования DMA состоит в уменьшении количе­ства прерываний с одного на печатаемый символ до одного на печатаемый буфер. Если символов много, а прерывания обрабатываются медленно, то этот выигрыш весьма существенен. С другой стороны, контроллер DMA обычно значительно уступает центральному процессору в скорости. Кроме того, компьютер без контрол­лера DMA, с центральным процессором, выполняющим всю работу программно, оказывается дешевле, что крайне важно в производстве компьютеров нижней це­новой категории.



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 1173; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.90.57 (0.007 с.)