Ввод/вывод по прерыванию

Временная диаграмма

Программно управляемый ввод/вывод

Операции ввода/вывода

Передача параметров

Использование стеков

Использование стеков снимает проблему вложенных ПП. Для этого в систему команд вводится:

- Команда перехода к ПП:

ПП D

Алгоритм:

1. ((УК)) → РК

2. (УК) + 1 → УК

3. Дешифровка коп

4. (УК) → -(Sp)

5. D → УК

6. Переход к пункту 1

- Команда возврата:

БП Sp

Алгоритм:

1. ((УК)) → РК

2. (УК) + 1 → УК

3. Дешифровка коп

4. (Sp) + → УК

5. Переход к пункту 1

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

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

Схема передачи:

  Фрагмент главной
   
  (….)х(…)→R2
А Переход к ПП
А+1 (R2)х(…)→
   
ПП
 
(R1)x(…)…
…..
(….)x(…)→R2
Возврат
 

Есть три технологии выполнения операции:

- Программно управляемый ввод/вывод

- Ввод/вывод по прерыванию

- Прямой доступ в память

Взаимодействие программ с периферийными устройствами происходит по схеме:

1. Команды программы выдают адрес устройства и вид работ

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

3. Контроллер принимает слово из памяти в свой регистр данных, признак готовности -0- “занято”. Затем передает слово в периферийное устройство, по окончанию в регистре -1

4. Все время работы контроллера программа выполняет цикл ожидания, затем продолжение работы


Взаимодействие ЦП с ПУ(принтер)

ОМТ М
R(сост) → R1
(R1) = 1?
((R0)) → M
R(сост) → R1
(R1) = 1?
Нет
Цикл ожидания
Да
((R0)) → M
0 → Rсост
Вывод символа на печать
1 → Rсост
Один символ
Работа устройств вывода:



t
t4
t3
t2
t1
t0
ЦП
Контроллер
Последовательность работы ЦП и контроллера ПУ

t0 – t1 и t3 - t4 – ЦП выполняет цикл ожидания

t2 – t3 – передача символа на принтер

Достоинства программы управления ввода/вывода – его простота

При программном управлении во время работы контроллера ЦП не может работать, а должен отслеживать сигнал готовности в регистре состояния. Механизм прерываний изменяет ситуацию. При работе ЦП имеют место ситуации, когда выполнение вычисления невозможно. В таких случаях следует снять выполнение программы и запустить новую, предварительно зафиксировав обстоятельства, в которых произошло прерывание. Каждый тип прерывания обрабатывается по своему с помощью специальной программы “обработки прерываний”. Типы прерываний и соответствующей обработки пронумерованы и образуют библиотеку ПП. Каталог библиотеки называют таблицей векторов прерываний. Сам вектор – последовательность нескольких байтов. Вектор прерывания с номером М хранится в ячейке a[t] + (M - 1)xN, где Ат - адрес начала таблицы, N – число бай адреса вектора прерываний, М – номер вектора прерываний. В главной программе нет обращения к обработчику. Прерывание возникает внезапно, реализуется последовательность событий:

- Главная программа вызывает прерывание

- ЦП сохраняет указатель команд и регистр признаков, устанавливая новые значения УК. Обработчик выполняет работу прерывания и после ее окончания восстанавливает старые значения регистров и вызывает выход из прерывания

- Выход из прерывания

-ЦП восстанавливает значение УК и регистра признаков

- Главная программа продолжает работу

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

//рисунок

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: