Одной из функций операционной системы является управление работой периферийных устройств и организация управления данными, поступающими в вычислительную систему и выводимыми из нее. До сих пор все операции ввода-вывода выполнялись нами с помощью специально для этого предназначенных макро RCD и РLN. Действия этих макро заключаются на самом деле в вызове некоторых подпрограмм, использующих системные макрокоманды для выполнения требуемых операций ввода-вывода. Данная глава частично посвящена знакомству с такими макрокомандами операционных систем DOS и OS, называемыми макрокомандами управления данными.
Нами будет также изучено выполнение операций ввода-вывода на несколько более низком уровне, чем уровень системных макро. Мы увидим, как процессором осуществляется управление выполнением операций ввода-вывода и работой конкретных устройств.
Прежде чем перейти к рассмотрению конкретных вопросов, связанных с программированием ввода-вывода, мы познакомимся с некоторыми общими принципами хранения информации.
В состав операционной системы включены так называемые методы доступа, которые предназначены для управления выполнением операций ввода-вывода, запрашиваемых проблемными программами. Такие запросы производятся с помощью макрокоманд управления данными. На программиста возлагается решение таких вопросов, как выбор способа организации набора-данных, формата записей, метода
Таблица 17.8 Макро DTFxx Формат: имя файла DTFxx операнды
Операнды |
Смысл |
DEVADDR = SYSxxx |
Обязательный; SYSxxx—символическое имя устройства |
10AREA1 = адрес
|
Обязательный; параметр задает, адрес буферной области |
IOAREA2= адрес
|
Параметр задает адрес второй буферной области; операнд не обязательный |
WORKA = YES
|
В программе задается адрес записи в качестве операнда команд GETили PUT |
JOREG = n
|
Система помещает адрес записи в регистр |
EOFADDR = адрес |
Вызывает переход по указанному адресу при исчерпании записей во входном файле |
RECFORM FIXUNB FIXBLK VARUNB VARBLK |
Несблокированныезаписи фиксированной длины Сблокированные записи фиксированной длины Несблокированные записи переменной длины Сблокированные записи переменной длины |
TYPEFLE= INPUT OUTPUT INOUT |
Поумолчанию принимается INPUT |
CTLCHR = ASA YES |
Управляющие символы ASA Управляющие символы IBM |
BLKSIZE — n |
Самый большой блок содержит nбайтов |
RECSIZE — m
|
Самый большой блок содержит mбайтов |
Обычныемакро DTFxx:
|
|
DTFCD |
Вводс карт |
DTFPR
|
Вывод на печать |
DTFMT
|
Магнитная лента |
DTFSD
|
Последовательный файл на устройстве прямого доступа |
DTFDA
|
Файл с прямой организацией |
DTFIS |
Файл с индексно-последовательной организацией |
доступа и самих наборов данных, подлежащих обработке. О произведенном выборе программист должен сообщить системе с помощью макро DTFxx (система DOS табл. 17.8) или макро DCB (система OS табл. 17.9).
Таблица 17.9 Некоторые операнды макро СВ
Формат: имя deb DCB операнды
Фактические запросы на выполнение операций ввода-вывода производятся с помощью макрокоманд GET, PUT, READ и WRITE. Макрокоманды OPEN и CLOSE используются для выполнения действий, связанных с началом и завершением обработки наборов данных.
Каналы ввода-вывода предназначены для управления работой периферийных устройств и перемещением информации между этими устройствами и основной памятью. Каналы выбирают для выполнения команды из программы канала, представляющей собой последовательность Управляющих слов канала.