The design of the UNIX Operating System 95 страница



 

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


Основы операционных систем 132

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

 

Опрос устройств и прерывания. Исключительные ситуации и системные вызовы

 

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

 

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

 

2. Процессор записывает код команды вывода в порт регистра управления.

3. Процессор записывает данные в порт регистра входных данных.

4. Процессор устанавливает бит готовности команды. В следующих шагах процессор не задейство-ван.

5. Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит за-

нятости.

6. Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды.

7. После завершения операции контроллер обнуляет бит готовности команды.

8. При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды – устанавливает его.

9. Контроллер сбрасывает бит занятости.

 

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

 

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


Дата добавления: 2021-01-21; просмотров: 118; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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