К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 74
Текст из файла (страница 74)
4.8, а. Предположим, сгснерировав запрос прерывания, устройство дожидается подтверждения и, получив таковое, тут же снимает запрос. Обязательно ли перед входом в программу обработки прерывания следует запрещать прерывания в процессоре? Почему? Последовательные блоки данных длиной Х байт каждый должны считываться из символыюго устройства ввода, и для кюКдого из них программа РКОС должна выполнять некоторые вычисления, Напишите управляющую программу СОХТКОЕ для процессоров 68000, АКМ и Репг1вгп, выполняющую следующие функции; а) чтение блока данных 1; б) активизацию программы РКОС и установку в ней ссылки на блок 1 в основной памяти; в) чтение блока 2 с использованием прерываний, пока программа РКОС выполняет вычисления для блока 1; г) переход программы РКОС к блоку 2 и параллельное чтение блока 3.
Заметьте, что программа СОХТКОЕ должна поддерживать корректные указатели на буферы, считать символы и передавать управление программе РКОС, которая может выполняться быстрее или, наоборот, дольше, чем ввод блока данных. Компьютер должен принимать символы от 20 видеотерминалов. Для хранения данных каждого терминала в основной памяти выделяется область, на которую указывает указатель РХТКп, где п — значение из диапазона от 1 до 20. Сбор входных данных от терминалов должен производиться параллельно с выполнением программы РКОС.
Это можно сделать одним из двух способов. а) Каждые Т с программа РКОС вызывает опрашивающую подпрограмму РОЕ1.. Та по очереди проверяет состояние каждого из 20 терминалов и пересылает в память введенные данные. Затем она возвращает управление программе РКОС. б) Когда в интерфейсном буфере любого из терминалов готов очередной символ, генерируется запрос прерывания. В ответ на это выполняется программа обработки прерывания 1ХТЕККБРТ. После опроса регистров состояния программа 114ТЕКК11РТ пересылает введенный симвоз и возвращает управление программе РКОС.
Напишите программы Р01.1. и 1ХТЕКК1)РТ, используя либо псевдокод либо язык ассемблера любого из процессоров. Пусть максимальная скорость ввода символов для любого из терминалов составляет с символов Упражнения 31 9 в секунду, а средняя скорость — гс, где г < 1. Если будет использован первый метод, то каково максимальное значение Т, при котором можно гарантировать, что ни один из введенных символов не будет потерян7 Каким это значение будет в случае применения второго метода? Оцените среднее время (в процентах), затрачиваемое на обслуживание терминалов по каждому из методов при условии, что с - 100 символов в секунду, а г - 0,01; 0,1; 0,5 и 1.
Предполагается, что на опрос 20 устройств программа РОЛЛ. затрачивает 800 нс, а на обработку прерывания от устройства уходит 200 нс. 4,11. Имеется устройство ввода-вывода, использующее функцию векторных прерываний процессора 68000. а) Опишите последовательность шагов, выполняемых при получении процессором запроса прерывания, и определите количество операций пересылки по шине, необходимых для каждого из этих шагов.
При этом учитывать подробности работы шины и микропрограмм не следует. б) Получив запрос прерывания, процессор завершает выполнение текущей команды и только после этого принимает запрос. Проанализируйте таблицу команд в приложении В и оцените максимальное количество операций пересылки данных в память и из памяти, выполняемых в течение этого времени. в) Оцените количество необходимых для выполнения первой команды программы обработки прерывания операций пересылки данных по шине, выполняемых с момента запроса устройством прерывания и до выборки информации из памяти.
4.12. Логическая схема, необходимая для реализации системы приоритетов, показана на рис. 4.8, 6. Система включает три линии запроса прерываний. Когда получен запрос по линии 1ХТК1, система генерирует подтверждение на линии 1ХТАЕ Если получено более одного запроса прерывания, подтверждается только запрос с наивысшим приоритетом. Порядок приоритетов таков: приоритет 1ХТК1 > приоритета 1ХТК2 > приоритета 1ХТКЗ а) Постройте таблицу истинности для каждого из выходов 1ХТА1, 1ХТА2 и 1ХТАЗ, б) Приведите логическую схему для реализации этой системы приоритетов.
в) Можно ли данную схему без труда расширить с целью ввода большего количества линий запроса прерываниями г) Путем добавления входов ОЕСП)Е и КЕЗЕТ модифицируйте свою схему таким образом, чтобы линия 1ХТА1 устанавливалась в 1 в ответ на получение сигнала на входе ОЕС1ОЕ и сбрасывалась в 0 в ответ на получение сигнала на входе КЕЗЕТ. 4.13. Для прерываний и арбитража необходим механизм выбора одного из нескольких запросов на основе их приоритетов. Разработайте схему, реализуюШую циклическую систему приоритетов для четырех входных линий, 320 Глава 4.
Ввод-вывод от КЕЯ1 до КЕО4. Первоначально линия КЕО1 имеет наивысший приоритет, а линия КЕО4 — самый низкий. После обслуживания запроса по одной из линий эта линия получает наинизший приоритет, а остальные линии— более высокий. Например, после обслуживания запроса по линии КЕМ порядок приоритетов, начиная с наивысшего, становится таким: КЕЙЗ, КЕО4, КЕО1, КЕМ. Ваша схема должна генерировать четыре выходных разрешающих сигнала, от ОК1 до ОК4, по одному для каждой входной линии запроса. В ответ на получение сигнала по линии 1)ЕСП)Е должен активизироваться один из этих сигналов. 4.14. Процессор 68000 имеет три линии 1РЕ2-0, которые используются для запросов прерываний. На этих линиях 3-разрядное двоичное число интерпретируется процессором как представляющее устройство с наивысшим приоритетом, запросившее прерывание.
Разработайте схему кодирования приоритетов, получающую запросы прерываний от семи устройств и генерирующую 3-разрядный код, представляющий запрос с наивысшим приоритетом. 4.15, (Данная задача подходит для лабораторного эксперимента.) Предположим, что в вашей лаборатории имеется подключенный к компьютеру видеотерминал, а) Напишите программу ввода-вывода А, представляющую буквы в алфавитном порядке. Она выводит две следующие строки и затем останавливается: АВС...
г'Х АВС...УХ б) Напишите программу ввода-вывода В, три раза подряд выводя1лую цифры от 0 до 9 в порядке возрастания. Ее выход должен иметь следующий формат: 012...9012...9012...9 Используйте программу А как главную программу, а программу  — как программу обработки прерывания, выполнение которой инициируется вводом с клавиатуры любого символа. Программа В тоже может прерываться вводом с клавиатуры какого-либо символа. Когда выполнение программы В завершается, возобновляется реализация последней прерванной программы (с точки прерывания). Программа В должна выполнять переход на новую строку таким образом, чтобы выходные данные выглядели следующим образом: АВС 012...901 012...9012...9012...9 2...9012...9 ЭЕ...Ус Упражнения 321 4.16.
(Эта задача подходит для лабораторного эксперимента.) Когда в упражне АВС 012...901 012...9012...9012...9 2...9012.„9 ПЕ...'г'Х 4.17. 4.18, 4.19. Для того чтобы начать новую строку, программе нужно вывести два симво- ла: СК (ОП~в) и ЬГ(ОА~з). Покажите, как можно использовать приоритет процессора для разрешения или запрета вложенных прерываний. нии 4.15 вывод последовательности символов прерывается, то ее возобновление начинается с новой строки.
Добавьте функцию перемещения курсора, чтобы при возобновлении вывода символы отображались в той же позиции, но в следующей строке. Таким образом, результат работы программы должен выглядеть так: Модифицируйте программы, написанные для упражнения 4.15, таким образом, чтобы в случае прерывания вызывалась третья управляющая программа, С. Эта программа должна вызывать программу В для вывода последовательности символов. После этого и перед возвратом в прерванную программу она должна переместить курсор в нужную позицию.
В разделе 4.2.5 рассказывалось о точках останова. В тех местах, куда пользователь помещает точки останова, команды программы заменяются командамн программного прерывания. Перед возвратом в исходную программу отладчик возвращает на место исходную команду программы, удаляя таким образом точку останова. Поясните, как отладчик может вернуть исходную команду программы на место, выполнить ее, а затем снова установить точку останова перед выполнением очередной команды программы. Команда программного прерывания ЯЖ1 процессора АКМ может использоваться программой для вызова операционной системы и запроса определенного сервиса.
Запрошенный сервис определяется восемью младшими разрядами команды. Каждый сервис операционной системы выполняется определенной подпрограммой, а начальные адреса этих подпрограмм хранятся в специальной таблице. а) Приведите одну или более команд, которые могут использоваться операционной системой для копирования 8 младших разрядов команды 5Ж1 в регистр.
б) Приведите одну или более команд для вызова подпрограммы заданного сервиса. Линия запроса прерывания, для которой используется схема с открытым коллектором, передает сигнал, представляющий собой логическое ИЛИ запросов от всех соединенных с ней устройств. В другой ситуации линия запроса прерывания должна генерировать сигнал, сообщающий о готовности зяби Глава 4. Ввод-вывод всех подключенных к шине устройств.
Поясните, как для этого может ис- пользоваться схема с открытым коллектором. 4.20. В некоторых компьютерах процессор отвечает только на передний фротп сигнала запроса прерывания, поступающего по одной из его линий. Что произойдет, если к этой линии будут подключены два независимых уст- ройства? 4.21. В приведенной на рис. 4.20 схеме устройство становится хозяином шины только в том случае, если уровень сигнала на входе, предоставляющего ему шину, изменяется от низкого к высокому. Предположим, что устройство 1 запрашивает шину и получает ее в свое распоряжение.