AOP_Tom1 (1021736), страница 63
Текст из файла (страница 63)
2б, программа выполняет вычисления между операциями НАЗНАЧИТЬ и ОСВОБОДИТЬ, работая с желтым буфером; одновременно производится ввод в буфер, на который указывает стрелка СЛЕДФ, и вывод нз буфера, на который указывает стрелка СЛЕДК. УПРАЖНЕНИЯ 1. [05) Будет ли последовательность команд (3) по-прежнему правильной, если поместить команды МОЧЕ перед командой 1805, а не после нее? А если поместить команды МОЧЕ после комшщы 1й? 2. [10) С помощью команд "ООТ 1000(6); ЗВОЕ ° (6)" можно вывестн блок данных на ленту, не используя буферизацию, точно так же, как команды (1) делают зто в случае ввода.
Предложите метод, аналогичный (2) и (3), который буфернзирует этот вывод, используя команды ХОЧЕ н вспомогательный буфер, занимающий ячейки 2000-2099. 3. [22] Напишите подпрограмму вывода с помощью свопннга, аналогичную (4). Эта подпрограмма с именем ЧОЕОООТ должна сохранять слово в гА в качестве следующего слова вывода, а когда буфер будет заполнен, записывать 100 слов на магнитную ленту (устройство Ч). В индексном регистре 5 должен храниться адрес текущего буфера. Составьте схему расположения буферных областей н объясните, какие команды необходимо (если необходимо вообще) использовать в начале и в конце программы, чтобы первый и последний блоки наверняка были записаны правильно, В случае необходимости последний блок следует заполнить нулями.
4. [М20] Покажите, что если программа использует единственное устройство В/В, то прн благоприятных обстоятельствах можно сократить время ее выполнения наполовину путем буферизации В/В. Но нельзя более чем в два раза сократить время выполнения по сравнению с небуфернзнрованным В/В. ° 5. [М21] Обобщите решение предыдущего упражнения для случая, когда программа работает не с одним, а с и устройствами В/В. 6.
[12] Какие команды нужно поместить в начале программы, чтобы подпрограмма 90301М (4) начала правильно работать? (Например, в индексном регистре 6 должно чшо-то содержаться,) 7. [22] Напишите подпрограмму с именем 90301Е, которая, в основном, аналогична (4), за исключением того, что в ней не используется маркер конца блока. 8. [11] В тексте раздела описывается гипотетический сценарий ввода, начало которого показано на рис. 23, а продолжение — на рис, 24, (а), (Ь) и (с). Дайте интерпретацию такому же сценарию, но прн условнн, что выпозпшется вывод на АЦПУ, а не ввод с перфокарт.
(Например, что происходит в момент, показанный на рнс. 23?) ° 9. [21] Программу, в результате выполнения которой содержимое буферов выглядит, как показано на рис. 27, можно охарактеризовать с помощью следующего списка промежутков времени: А, 1000, В, 1000, А, 1000, В, 1000, А, 1000, В, 1000, А, 1000, В, 1000, А, 7000, В, 5000, А, 7000, В, 5000, А, 7000, В, 5000, А, 7000, В, 5000, А, 1000, В, 1000, А, 2000, В, 1000.
Этот список расшифровывается так; "Назначить, вычислять в течение 1000о, освободить, вычислять в течение 1000и, назначить, ..., вычислять в течение 2000и, освободить, вычислять в течение 1000и". Приведенные промежутки времени вычислений не включают о о о о Устройст- (» во вывода Компью„АААА А .е, ККК К- А А А А К К К К К К о о о ь о 3 3 3 о о о о о о 3 3 о 3 о ь ь о о о о ь 3 6 .. 3 3 3 о 3 3 о Время — + Зеленый Обозна- Уфер чЕния Желтый ° буфер стройстве ктивно Устройство свободно Красный буфер Красный бУфеР, содержимое которого выводится )(заначить Освободить инициировать вывод р .
27. В од с использованием трех буферов (см У Р. какие-либо периоды, когда компьютер ожидает устройство вывода, чтобы занять его (как в случае четвертой операции "назначить" на рис. 27). Выходное устройство затрачивает на вывод каждого блока по 7500и времени. В следующей таблице перечислены действия, которые соответствуют промежуткам времени, показанным на рис.
27, Время 0 1000 2000 3000 4000 5000 6000 8500 9500 10500 16000 23000 23500 28000 31000 35000 Действие А331СИ(ВОГ1) ЕН.ЕАЗЕ, ПОТ ВОГ1 АЯЯХСИ(ВОГ2) ВЕЕЕАЯЕ АЗЗТСМ(ВОГЗ) ЕН.ЕАБЕ А381СМ (ждать) ВОГ1 назначен, ООТ ВОЕ2 ЗЕ1,ЕАБЕ А831СМ (ждать) ВОГ2 назначен, СОТ ВВЕЗ ЗН.ЕАЗЕ СОТ В1»Е1 АЯ31СИ(ВОЕЗ) ООТ ВОГ2 ЕЕ1.ЕАБЕ Время 38500 40000 46000 47000 52000 54500 59000 64000 65000 66000 66500 68000 69000 74000 81500 Действие ООТ ВВЕЗ АББТСМ(ВОГ1) Вывод остановлен, БН.ЕАБЕ, ООТ ВОГ1 АЗЗХСИ(ВОГ2) Вывод остановлен. МН.БАЗЕ, ООТ ВОГ2 А881СИ(ВВЕЗ) ЗН.ЕАЗЕ А831СИ(ВОГ1) ООТ ВВЕЗ ЕЕ1.ЕАЗЕ Вычисления прекращены.
ООТ ВОГ1 Вывод остановлен, Таким образом, всего потребпвалось 81500и; компьютер простаивал в промежутках 6000- 8500, 10500-16000 и 69000-81500, т. е, всего 20500и; устройство вывода было свободно в промежутках 0-1000, 46000 — 47000 и 54500-59000, т. е, всего 6500и. Для этой же программы создайте таблицу типа "время — действие", аналогичную приведенной выше, но при условии, что используются только дво буфера. 10. [21] Выполните упр. 9, но только для чешмрех буферов.
11. )21) Выполните упр. 9, но только для одного буфера. 12. [24) Предположим, что алгоритм множественной буферизации, приведенный в тексте, используется для ввода с перфокарт. И пусть ввод должен быть прекращен сразу же, как только будет считана перфокарта, в колонке 80 которой содержится ".". Покажите, как следует модифицировать сопрограмму СОИТЗОЬ (алгоритм В и программу В), чтобы ввод прекращался указанным образом. 13. )20) Пусть вывод выполняется с помощью алгоритмов буферизации. Какие команды нужно вставить в конце сопрограммы СОИРОТЕ, приведенной в тексте раздела, чтобы гарантировать вывод всей информации из буферов? ° 14. [20) Предположим, в вычислительной программе нет чередования действий НАЗНАЧИТЬ и ОСВОБОДИТЬ, а есть только последовательность действий ...
НАЗНАЧИТЬ ... НАЗНАЧИТЬ ... ОСВОБОДИТЬ... ОСВОБОДИТЬ. Какое влияние это окажет на алгоритмы, описанные в тексте раздела? Может ли это оказаться полезным? ь 15. [22] Напишите законченную программу для И1Х, которая копирует 100 блоков с накопителя на магнитной ленте под номером 0 на аналогичное устройство номер 1,используя только три буфера. Программа должна работать настолько быстро, насколько это возможно. 16. [29] Сформулируйте алгоритм для зеленого-желтого-красного-фиолетового буферов, которые предложены на рис. 26, аналогичный алгоритмам множественной буферизации, приведенным в тексте раздела. Используйте три сопрограммы (одну для управления устройством ввода, другую — устройством вывода и третью — для вычислений).
17. [40) Переделайте алгоритм множественной буферизации для пула буферов; предусмотрите встроенные методы, которые не допускают замедления процесса из-за слишком большого объема опережающего ввода. Постарайтесь, по возможности, придать алгоритму красоту и изящество. Сравните свой метод с методами, в которых не используется пул, применяя их к реальным задачам.
ь 18. [50) Предлагаемое. расширение машины И1Х позволяет прерывать вычисления, как будет описано ниже. Ваша задача в этом упражнении — модифицировать приведенные в тексте раздела алгоритмы и программы А, В и В, чтобы вместо команд ХВЕО в них использовались эти средства прерывания. Новые возможности И1Х включают 3 999 дополнительных ячеек памяти г адресами от -3999 до — 0001.
У этой машины есть два внутренних "состояния" — нормальное и управляющее. В нормальном состоянии ячейки с — 3999 по — 0001 недоступны и машина И1Х работает, как обычно. Когда происходит "прерывание", вызванное условиями, о которых речь пойдет позже, в ячейки с — 0009 по — 0001 заносится содержимое регистров машины И1Х: гА — в — 0009; г11-г16 — в -0008 — 0003; гХ вЂ” в -0002, а гЛ, состояние флага переполнения, флага сравнения и адрес следующей команды сохраняются в ячейке — 0001 в следующем виде: Когда машина входит в управляющее состояние, ячейка, которой передается управление, выбирается в зависимости от типа прерывания. Ячейка — 0010 играет роль часов: через каждые 1000и единиц времени число, содержащееся в этой ячейке, уменьшается на единицу; если в результате получается нуль, то происходит прерываний и управление передается в ячейку — 0011.
Новая команда МТХ "ТМТ" (С = 5, Р = 9) работает следующим образом. (а) В нормальном состоянии прн прерывании управление передается ячейке -0012. (Таким образом, программист может вызвать прерывание, чтобы установить связь с управляющей программой; адрес 1МТ значения не имеет, хотя управляющая программа может использовать его в информационном смысле, чтобы отличать один тип прерывания от другого.) (Ь) В управляющем состоянии все регистры М1Х загружаются информацией из ячеек с — 0009 по -0001, затем компьютер возвращается в нормальное состояние н возобновляет выполнение.
Время выполнения команды 1МТ в обоих случаях составляет 2и. Команда 1М, ООТ или 10С, вьтанная в Мпраеляюи!ем состоянии, вызовет прерывшзие сразу же по окончании операции В/В. В этом случае управление будет передано в ячейку -(0020+ номер устройства). В управляющем состоянии прерывания никогда не происходят. Любые условия, вызывающие прерывания, "сохраняются" до появления следующей операции 1МТ, н прерывание происходит после выполнения одной команды в нормальном состоянии программы. ь 19.