Текст
                    НМ
В. Д. ПРАЧЕНКО
А. Г. САМБОРСКИЙ
М.В. ЧУМАКОВ
ДИСКОВАЯ
ОПЕРАЦИОННАЯ
СИСТЕМА
КОЛЛЕКТИВНОГО
ПОЛЬЗОВАНИЯ
ДЛЯ
СМ ЭВМ
Под редакцией Е. Н. Филинова
13/Э ..лй-гиГ
g 2 ] 1 Й 2-Т О I й a -s i  ..
БИБЛИОТЕКА
МОСКВА
"ФИНАНСЫ
И СТАТИСТИКА*
<985

ББК 32.973 П70 УДК 681.3.06 Рецензенты В. Ш. Рипиницер, А. Г. Эдельман ПраченкоВ, Д. и др. П70 Дисковая операционная система коллективного пользования для СМ ЭВМ / В. Д. Праченко, А. Г. Самборский, М. В. Чумаков; Под ред. Е. Н. Филинова. — М.: Финансы и статистика, 1985. 206 с. 50 коп. 18 000 экз. Рассматриваются архитектура и возможности дисковой операци- онной системы коллективного пользования (ДОС КП), функционирую- щей на моделях СМ ЭВМ средних и больших конфигураций. ДОС КП обладает средствами, позволяющими одновременное обслуживание пользователей СМ ЭВМ иа основе разделении времени комплексом системных прикладных программ, расширяющих ее возможности. Для программистов, проектировщиков программного обеспечения ЭВМ, СМ ЭВМ. 2405000000—057 010(01)—85 108—85 ББК 32.973 6Ф7Л © Издательство «Финансы и статистика», 1985
ВВЕДЕНИЕ Развитие технических средств СМ ЭВМ, результатом кото- рого является появление мини-ЭВМ высокой производи- тельности типа СМ-1420, СМ-1600, оснащение СМ ЭВМ но- выми периферийными устройствами, такими, как диски по- вышенной емкости (14 и 20 Мбайт), мультиплексоры пере- дачи данных, терминалы с функциональной клавиатурой, создают предпосылки для расширения областей примене- ния машин данного класса. Появляются реальные возмож- ности для создания на базе СМ ЭВМ многопользователь- ских систем, пригодных для решения традиционных задач вычислительного характера и для работы с базами данных, для сбора и подготовки данных, для целей обучения Эф- фективность функционирования многопользовательских вы- числительных комплексов в значительной степени зависит от операционной системы, управляющей работой комплек- са. Дисковая операционная система коллективного пользо- вания, или сокращенно ДОС КП, предлагаемая внима- нию читателя, является многофункциональной операцион- ной системой и предназначена для управления работой мно- готерминальных комплексов типа СМ-4 в режиме разделе- ния времени. Появление ДОС КП в составе программных средств СМ ЭВМ обеспечивает такую же степень эффективности при- менения СМ ЭВМ в сфере организационного управления [11, которая достигается использованием операционных систем реального времени РАФОС [21 и ОС РВ [31 в традиционных сферах применения СМ ЭВМ — управлении технологичес- кими процессами, научными исследованиями, в измеритель- но-вычислительных комплексах (ИВК) [41, в системах АРМ [51 и других. з
Основной особенностью системы является возможность работы в ДОС КП программ, составленных для операци- онных систем РАФОС и ОС РВ. Исключение составляют программы, использующие средства указанных систем, ха- рактерные для обработки данных в реальном времени,— временную диспетчеризацию выполнения задач, обработку синхронных и асинхронных прерываний и др. Другой важ- ной особенностью операционной системы ДОС КП является применение языка Бейсик, расширенного системными функ- циями, обеспечивающими доступ программ практически ко всем системным ресурсам. В составе ДОС КП имеется мощная файловая система, ориентированная на работу с файлами с последовательной, относительной и индексной организацией, а также достаточ- но развитая система программирования, которая наряду с языком макроассемблера включает языки высокого уров- ня Фортран, Кобол, Паскаль, РПГ-П, Бейсик, реализован- ный как компилятор, язык системного программирования ДОС КП включает также две системы для работы с ба- зами данных — иерархической структуры ФОБРИН [8] и реляционной — РИБД. Под управлением ДОС КП функционирует ряд програм- мных систем, ориентированных на конечного пользователя, например: ПСПД — программная система для сбора и под- готовки данных; БНТР—библиотека программ для иаучио- технических, инженерных и экономических расчетов; ДИЭКС — пакет программ статистической обработки дан- ных; МОДФОР — система имитационного моделирования дискретных процессов и другие. Перечисленные возможности с учетом высокой эффектив- ности режима разделения времени ДОС КП делают целесо- образной реализацию на ее основе следующих систем: об- работки данных экономического характера; сбора данных для АСУ; информационных систем; вычислительных комплексов коллективного пользования; систем обучения и инструментально-технологических комплексов подготов- ки программ и документации. В книге нашли отражение наиболее важные характерис- тики ДОС КП, дающие общее представление о системе, ее возможностях и структуре. Большое внимание уделено опи- санию процесса подготовки программ в ДОС КП и работе пользователя с системой. Излагаемый материал делится на три части. В части I да- ны основные системные понятия, особенности использова- ния в ДОС КП внешних устройств, файловая структура сис- 4
темы. В этой же части приводится краткое описание соста- ва и структуры ДОС КП. В части II дано описание процес- са подготовки программ в ДОС КП иа расширенном языке Бейсик и на других языках программирования. Описаны редактирование программ, их компоновка, работа с библио- теками. Часть III содержит сведения, необходимые для эксплуа- тации системы, которая осуществляется привилегирован- ными пользователями, составляющими группу администра- тора системы. В этой части приводится описание процессов генерации и запуска системы в работу, управления работой системы в режиме разделения времени, обработки ошибок и т. д. Описание отдельных компонентов ДОС КП, таких, как языки программирования, системы управления базами дан- ных, не приводится. Языки программирования достаточно широко представлены в литературе, а в данной книге описы- ваются только особенности работы с программами на этих языках в системе. Книга рассчитана на читателей, знакомых с архитекту- рой современных ЭВМ, с основами программирования и опе- рационных систем. При этом части I и II рекомендуются чи- тателям-программистам, которые собираются посвятить се- бя работе на СМ ЭВМ. Часть III рассчитана на системных программистов, специализирующихся на эксплуатации опе- рационных систем. Канд. техн, наук Е. И. Филинов 5
Часть I ВВЕДЕНИЕ В ДОС КП Глава 1 ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ К основным понятиям ДОС КП относятся четыре взаимо- связанных понятия: «пользователь», «терминал», «задание» и «программа». Пользователь взаимодействует с системой через терми- нал. В начале диалога ссистемой задаются некоторые иден- тификационные характеристики пользователя, т. е. прово- дится регистрация пользователя в системе. При регистра- ции порождается задание, являющееся основной единицей работы в ДОС КП и представляющее собой процесс выполне- ния системных или пользовательских программ. В после- дующих разделах приведенные понятия обсуждаются бо- лее подробно, с той степенью детализации, которая необхо- дима для понимания всех механизмов функционирования ДОС КП. В изложении данного материала используются следую- щие условные обозначения. При описании синтаксиса языка оператора строка, со- стоящая из строчных русских или латинских букв, является метапеременной, из заглавных латинских букв или спец- знаков — обязательным элементом описания конструкции. Например, в конструкции устр.: имя. pactu. < лр >/SIZE : л устр, имя, расш и пр, п являются метапеременными. Зна* ки «:», «.», «о, «>», «/» и SIZE —обязательные элементы. Спецзнаки «[» и <]» используются для описания элемен* тов командных строк, которые не являются обязательными. Исключение составляет их использование при задании учет- ного номера (см. п. 1.3), где они являются обязательными элементами. 6
Спецзнаки «О и «>» используются также при обозна- чении управляющих символов, например <CR>, или циф- ровых кодов символов КОИ-7, например <15>. Фигурные скобки «{» и «}» используются для задания альтернативных конструкций. В примерах диалога оператора с системой сообщения, вводимые с клавиатуры терминала оператором, набраны курсивом, например: ТКВ > USER = USER Символ подчеркивание «_», употребляемый в примерах диалога, указывает на местоположение курсора терминала. 1.1 ПОЛЬЗОВАТЕЛИ ДОС КП Пользователи ДОС КП делятся на две категории: привиле- гированные и непривилегированные. Привилегированные пользователи составляют группу ад- министратора системы, им доступны все системные ресурсы. В задачи группы администратора входят генерация системы, инициализация и завершение сеансов разделения времени, поддерживание системы в рабочем состоянии, контроль за работой пользователей и выполнение других управляющих функций. Перечисленные факторы подробно описываются в ч. III. Непривилегированные пользователи используют систем- ные ресурсы в соответствии с полномочиями, установлен- ными для них администратором системы. При работе в режиме разделения времени каждый поль- зователь работает с монитором и с системными программами ДОС КП, расширяющими возможности монитора, которые в совокупности выполняют следующие функции: выделяют ему необходимые ресурсы, такие, как процес- сорное время, память, внешние устройства; управляют выполнением программы, например запуска- ют ее в работу или временно приостанавливают ее выполне- ние; информируют пользователя о неожиданных событиях, например об обнаруженной ошибке или о сбое внешнего уст- ройства. Диалог пользователей с системой осуществляется через терминалы, подключенные к вычислительному комплексу непосредственно либо через аппаратуру передачи данных. 7
1.2. ТЕРМИНАЛЫ В качестве терминалов ДОС КП используют алфавитно- цифровые видеотерминалы, входящие в номенклатуру СМ ЭВМ. Перечень видеотерминалов, поддерживаемых ДОС КП, приведен в Приложении 1. Терминал, подключен- ный к вычислительному комплексу непосредственно или по выделенной линии связи, после загрузки ДОС КП опознает- ся системой и считается логически подключенным. Терми- нал, подключенный к вычислительному комплексу по комму- тируемой линии связи, логически подключается к системе после установления связи с комплексом, например путем набора номера линии. Признаком логического подключения терминала к сис- теме является появление иа экране сообщения о готов- ности ДОС КП к работе, после чего возможен прием команд пользователя. Всего к ДОС КП логически подключается до 127 терми- налов. Каждый терминал может быть использован либо как консоль оператора, через которую вводятся команды опера- тора (например, команды загрузки программ, назначение устройств и т. п.), либо как устройство ввода-вывода. Ис- ключение составляет терминал с номером 0, называемый сис- темным и имеющий особый статус. С системного терминала администратор осуществляет инициацию ДОС КП и завер- шает ее работу. Другие терминалы для этих целей исполь- зоваться не могут. 1.2.1. Клавиатура терминала и ввод данных с терминала Перед тем как приступить к работе в ДОС КП, пользователь должен тщательно ознакомиться с клавиатурой терминала и особенностями работы с иим. Кодовая таблица символов видеотерминалов, включаю- щая обозначение символов на клавиатуре отечественных и зарубежных видеотерминалов, приведена в [6]. Клавиатура терминала делится на две части: основную и функциональную. Каждой клавише основной клавиатуры соответствует один код, передаваемый в ЭВМ при ее нажа- тии. Исключение составляют некоторые клавиши, нажатие которых не вызывает передачу каких-либо кодов в ЭВМ, а приводит к выполнению управляющих действий иа самом терминале. Коды основной клавиатуры делятся иа две группы: изо- бражаемые (буквы, цифры, спецзнаки) и управляющие. 8
Каждому изображаемому коду соответствует одна клавиша, при нажатии которой код передается в ЭВМ и отображается на экране в символьном виде. Отображение осуществляется программным путем посредством эхо-печати, т. е. путем вы- вода на экран каждого вводимого символа. Эхо-печать при необходимости можно отменить. Например, эхо-печать па- роля, набираемого при регистрации пользователя в системе, не производится. Управляющему коду (символу) на терминале соответст- вует одна или несколько клавиш, нажимаемых одновремен- но. Управляющий символ передается в программу и вызы- вает выполнение соответствующих управляющих функций. При описании управляющих символов ниже будем упот- реблять их международные обозначения, заключенные в уг- ловые скобки, например <CR>, <LF> и т. д. Функциональная клавиатура, находящаяся справа, ис- пользуется в двух режимах: дублирование цифровых клавиш основной клавиатуры, для ввода цифровых данных; в специальном, когда нажатие одной клавиши вызывает передачу в ЭВМ последовательности управляющих симво- лов. Обработка управляющих последовательностей програм- мным путем позволяет интерпретировать нажатие клавиши функциональной клавиатуры как ввод определенной коман- ды. Эта возможность используется при работе некоторы- ми программами ДОС КП, например экранным редак- тором. Верхний и нижиий регистры. Некоторым буквам русско- го и латинского алфавитов, цифрам и спецзнакам соответст- вуют на основной клавиатуре одни и те же клавиши. Пере- дача требуемого кода осуществляется путем выбора одного из двух регистров — верхнего или нижнего, который осу- ществляется клавишами РУС и ЛАТ — для букв русского или латинского алфавитов и клавишей СПС — для цифр и спецзнаков. Нажатие клавиши РУС или СПС переводит терминал в ре- жим передачи кодов нижнего регистра, т. е. букв русского алфавита или спецзнаков, находящихся на нижнем регист- ч ре. При этом если для терминала сделано специальное ука- зание NO LC INPUT (см. ч. 1, гл. 2), то коды букв русского алфавита преобразуются в эквивалентные им коды латин- ских букв верхнего регистра. Например, последователь- ность символов, набираемая при нажатой клавише РУС РУН ТЕСТ, передается в ЭВМ как RUN TEST. Аналогичная ситуация имеет место и при выводе данных на терминал. Коды букв русского алфавита, выводимые на 9
терминал из ЭВМ, преобразуются в коды соответствующих букв латинского алфавита, если сделано специальное ука- зание NO LC OUTPUT (см. ч. I, гл. 2). Возврат каретки и перевод строки. Нажатие клавиши ВК (возврат каретки) вызывает перевод курсора к началу следующей строки, так как при эхо-печати автоматически генерируются коды<СК><ЕР>. Передаваемый при нажа- тии ВК код является признаком конца строки, введенной с терминала. Обычно <CR> является признаком завершения ввода с терминала в ЭВМ команды оператора, командной строки или строки данных. Нажатие клавиши ПС (перевод строки) в отдельных слу- чаях эквивалентно по своему действию нажатию ВК. Как правило, в ДОС КП нажатие клавиши ВК в ответ на вопрос большинства системных программ вызывает печать справки, поясняющей данный вопрос. Нажатие ПС означа- ет выбор ответа на данный вопрос по умолчанию. Кроме то- го, иногда, например при вводе программы на языке Бейсик- P. <LF> является признаком продолжения оператора иа следующей строке. Удаление символов. Нажатие клавиши ЗБ (забой) вызы- вает удаление из строки последнего введенного символа, за исключением символа <CR>. Многократным нажатием этой клавиши можно удалить из строки несколько символов. В зависимости от специального указания, сделанного для терминала, процесс удаления отображается на экране од- ним из следующих двух способов: 1) повторением на экране удаляемого символа. Все удаля- емые символы заключаются в знаки «\». Например, в строке HEPLO- вместо буквы L ошибочно введена буква Р. Для ис- ключения буквы Р следует 3 раза нажать клавишу ЗБ (код <DEL>) и правильно ввести оставшуюся часть строки. Этот процесс отображается на экране следующим образом: HEPLO\OLP\LLO 2) удалением на экране удаляемого из строки символа с перемещением курсора влево на 1 позицию. В этом случае процесс корректировки приведенной выше строки выглядит следующим образом: HEPLO_ 1-е нажатие ЗБ-. HEPL- 10
2-е нажатие ЗБ: НЕР_ 3-е нажатие ЗБ: НЕ_ Ввод правильной части строки: HELLO- Табуляция. Нажатие клавиши ГТ (горизонтальная табу- ляция) вызывает перемещение курсора к очередной позиции табличного останова в строке. В зависимости от указания, сделанного при установке характеристик терминала при эхо-печати, выводится либо код <ТАВ>, либо соответст- вующее число пробелов. Точки табличного останова уста- навливаются в строке через каждые 8 позиций, начиная с 1-й, т. е. на позиции 1, 8, 17, 25, 33 и т. д. Применение кода <ТАВ>- особенно эффективно при вводе данных по задан- ным форматам. Специальные управляющие символы. Каждый специаль- ный управляющий символ вводится путем одновременного нажатия клавиши УС (CTRL) и соответствующей клавиши на основной клавиатуре. Управляющие символы обознача- ются ниже в виде СТКЕ/<изображаемый символ> Например: CTRL/O, CTRL/S и т. д. Так, символ CTRL/U отменяет ввод набранной на экране строки и вызывает перевод курсора в начало следующей строки. Символ CTRL/R вызывает повторение на экране всех набранных символов строки, за исключением удален- ных символов. Символ CTRL/l (АР2) служит признаком кон- ца ввода строки, так же как и <CR>, или, если для терми- нала сделано специальное указание, является первым сим- волом управляющей последовательности (ESCape Sequen- ce — ESC). ESC-последовательности при вводе обрабатыва- ются программно и при выводе вызывают аппаратные дей- ствия, характер которых зависит от типа терминала. 1.2.2. Вывод данных на терминал Данные на экран терминала выводятся системой или про- граммой пользователя построчно, с продвижением строк вверх по экрану. Во избежание потери данных вводом сим- вола CTRL/S можно приостановить вывод и возобновить его вводом CTRL/Q. 11
Система учитывает возможность вывода данных в режиме задержки экрана (или страничный вывод), который дей- ствует только для некоторых типов терминалов, например ВТА 2000-15, VDT-52130. Специальной командой терминал переводится в режим, когда при выводе данных заполняются все 24 строки экра- на, после чего вывод приостанавливается. Возобновление вывода производится нажатием клавиши SCROLL (для тер- миналов VDT-52130). 1.3. УЧЕТНЫЕ НОМЕРА И ПАРОЛИ После того как терминал логически подключен к системе, пользователь может регистрироваться в системе и начинать работу. Регистрация возможна только в том случае, если предварительно администратором системы были введены учетные данные пользователя, определяющие его право на вход в систему. К учетным данным относятся учетный но- мер и пароль. Учетный номер задается парой чисел и в соответствии с системными соглашениями изображается в виде: [т, п], где т — номер группы пользователей; п — номер конкрет- ного пользователя в группе пользователей. Числа т и п задаются в десятичном представлении в интервале от 1 до 254. Квадратные скобки являются частью спецификации файла, которая описана в гл. 2. В отдельных случаях их задание не обязательно. ^Понятия «группа» и «член» связаны с возможным разби- ением по группам пользователей системы, объединенных общими целями или интересами, например работой по од- ной и той же теме. Такое разбиение позволяет отводить це- лой группе пользователей некоторые ресурсы, не оговари- вая отдельно их использование каждым членом группы в отдельности. Пользователи, у которых номер группы равен 1, являют- ся привилегированными. Примеры задания учетных номе- ров привилегированных пользователей: [1,2], [1,150], [1,88] и т. д. Пользователи с номером группы большим, чем 1, являются непривилегированными, например: [2,25], [250, 100], [150, 150]. С каждым учетным номером связан пароль, который за- дается кодом, состоящим от 1 до 6 алфавитно-цифровых сим- волов. Учетный номер и пароль однозначно идентифициру- ют пользователя, определяя его право регистрации и работы в системе. 1 2
Перед регистрацией бывает целесообразно получить предварительный протокол состояния системы в момент, предшествующий регистрации пользователя. Получение этого протокола является процедурой, которая может быть выполнена с незарегистрированного терминала и обеспе- чивается программой ДОС КП SYSTAT по команде SYS: ДОСКП V.1HH -TEST -СОСТОЯНИЕ НА 84.02.02. 16:31 ЗАДАНИЕ КТО ГДЕ ЧТО РАЗМЕР СОСТОЯНИЕ ПРИОРИТЕТ /КВАНТ RTS 1 IOPR] DET ERRCPY 5/31 SR С01 0/6 BASIC 2 110,30) КВО ...EDT 16/31 КВ 8/6 . . .ORV 3 12. 12) КВ4 SYSTAT 12/31 RN/LCK -8/6 BASIC 4 15. 11) КВ1 PIP 2В/31 MT/СОЗ —В/12 RFS 5 (1. 4) КВЗ UTILTY 16/31 FIP —8/6 BASIC Протокол SYSTAT содержит несколько разделов, ос- новным из которых является раздел состояния заданий, ко- торый приведен выше и содержит данные о пользователях, работающих в ДОС КП. Другие разделы включают сведе- ния о занятых устройствах, структуре дисков и некоторые другие данные, описываемые ниже. В разделе состояния заданий приводятся следующие дан- ные: номер задания (колонка ЗАДАНИЕ), учетный номер пользователя (колонка КТО), связь задания с терминалом (колонка ГДЕ), имя работающей программы (колонка ЧТО), а также размер, состояние задания и наименование испол- няющей системы или RTS (RUNTIME SYSTEM), под уп- равлением которой выполняется задание. Понятия «задание» и «исполняющая система», используе- мые в протоколе SYSTAT, приведенном выше, являются ключевыми в ДОС КП, и на них следует остановиться особо. 1.4. ЗАДАНИЯ И ПСЕВДОТЕРМИНАЛЫ Задание является основной единицей работы в ДОС КП. За- дание порождается в системе в момент регистрации, которая выполняется самим пользователем с терминала или про- граммным путем, и существует до выхода пользователя из системы или до его принудительного завершения, выполня- емого программно или администратором. Различают следующие типы заданий: присоединенные, т. е. связанные с терминалами, с кото- рых они порождены или к которым они присоединены адми- нистратором или программным образом; отсоединенные, т. е. не связанные с физическим термина- лом. Отсоединенное задание образуется путем его отсоедине- ния от терминала, с которого задание было порождено. 13
Допускается порождение задания с так называемого псевдотерминала путем выполнения специальных програм- мных функций языка Бейсик-Р или системных макроко- манд ДОС КП из программ на языке Макро Использование таких функций или макрокоманд доступно только для про- грамм привилегированных пользователей Псевдотерми- нал по существу выполняет роль обычного терминала при управлении заданиями, но не существует физически. При отсоединении задания терминал становится свобод ным для регистрации нового пользователя. Такое отсоеди- нение также выполняется системными функциями (для Бейсик-Р) или макрокомандами, доступными привилегиро- ванному пользователю. В частности, отсоединение любого задания от терминала выполняется администратором систе- мы при помощи специальных команд системной программы UTILTY, использующей такие функции Например, коман- да программы UTILTY DETACH 5 означает отсоединение задания 5 от терминала, с которым оно связано Как правило, программы, выполняющиеся в рамках от- соединенных заданий, не должны требовать терминал для выполнения операций ввода-вывода. Однако это ограниче- ние необязательно. Если отсоединенному з, Данию все же необходим терминал для выполнения операций ввода-выво- да, то оно переводится в состояние ожидания Это состояние отмечается соответствующим кодом в протоколе SYSTAT (колонка СОСТОЯНИЕ). (Коды состояний выполняющихся заданий приведены в Приложении 2.) В этом случае привиле- гированный пользователь или его программа могут вновь присоединить задание к любому терминалу, не связанному ни с одним заданием.• Непривилегированный пользователь может присоединить «свое» отсоединенное задание по спе- циальной регистрационной команде ATTACH, которая здесь не рассматривается. После присоединения к терминалу задание продолжает выполняться в присоединенном режиме При завершении выполнения программы в рамках отсоеди- ненного задания задание остается в системе. Такое задание, свободное от выполняющейся программы, может быть использовано администратором по своему ус- мотрению. Держать свободные задания в системе не реко- мендуется — это приводит к неэкономному расходу систем- ных ресурсов. Отсоединенное задание помечается признаком DET в колонке ГДЕ протокола SYSTAT. Прн создании заданию И
присваивается внутрисистемный номер, который однознач- но идентифицирует задание в системе, и учетный номер, ука- занный при его регистрации (см. колонки ЗАДАНИЕ и КТО протокола SYSTAT в п. 1.3). После порождения задания возможен последователь- ный вызов для выполнения системных или пользователь- ских программ. Имена выполняющихся программ в протоко- ле SYSTAT приводятся в колонке ЧТО. Вызов программ для выполнения проводится по команде оператора или програм- мным путем. В дальнейшем изложении понятия «задание» и «программа» строго не различаются. Их различия будут очевидны из контекста или оговариваются особо. Каждое задание может находиться в одном из двух со- стояний: выполнения или свопинга. Задание, находящееся в состоянии выполнения, присутствует в памяти и исполь- зует отведенные ему системные ресурсы, прежде всего — процессорное время. При этом задание может находить- ся в состоянии ожидания наступления какого-либо собы- тия, например завершения операции ввода-вывода. Задание, находящееся в состоянии свопинга, временно выгружено на диск, а системные ресурсы предоставлены другому заданию в соответствии с его очередностью и приоритетом. Размеры выполняющихся программ (в Келов), состоя- ние заданий и количество использованного процессорного времени приводятся в соответствующих колонках протоко- ла SYSTAT (см. пример в п. 1.3). 1.5. ИСПОЛНЯЮЩИЕ СИСТЕМЫ Управление работой системы в режиме разделения времени, выполнение операций ввода-вывода осуществляются мони- тором системы. Взаимодействие всех остальных программ, функционирующих в системе (системных или пользователь- ских), с монитором ДОС КП осуществляется через специаль- ные программные интерфейсы, называемые исполняющими системами, или сокращенно RTS. В ДОС КП входят несколько RTS, используемых раз- личными системными или пользовательскими программа- ми ДОС КП. Три из них являются основными и определяют один из трех режимов работы всей системы или отдельного терминала: Бейсик, РАФОС или ОС РВ. При инициали- зации системы (см. ч. HI, гл. 1) одна из этих трех RTS объ- является обязательной и устанавливается по умолчанию для всех терминалов системы. Подтверждением ее уста- новки является наличие иа экране каждого зарегистриро- ванного терминала, находящегося в состоянии ожидания 15
приема команд оператора (в командном режиме), сообще- ния-подсказки: READY — для режима Бейсик; • — для режима РАФОС; > — для режима ОС РВ. Остальные RTS являются дополнительными и устанавли- ваются администратором системы. Установка дополнитель- ных RTS производится администратором системы при по- мощй программы UTILTY и не означает ее загрузку в па- мять (процесс установки RTS описан в ч. III, гл. 1). Допол- нительная RTS обычно загружается в память при запуске на выполнение первой, связанной с ней программы и оста- ется в памяти до тех пор, пока выполняется хотя бы одна такая программа. Это означает, что дополнительная RTS подлежит свопингу на общих основаниях. При этом сохра- няется возможность ее фиксации в памяти. Под режимом работы ДОС КП мы имеем в виду наличие в системе соответствующих установленных RTS. Например, если установлена RTS Бейсик, то с любого терминала могут ~ быть загружены для выполнения программы, составленные на расширенном языке Бейсик; если установлены RTS РАФОС и ОС РВ, то могут быть выполнены программы, под- готовленные в загрузочных форматах этих операционных систем. Режим работы ДОС КП специальным образом не за- дается. С различных терминалов могут загружаться для вы- полнения программы в различных форматах загрузки (Бейсик, РАФОС, QC РВ). После установки соответствующих дополнительных RTS для удобства работы пользователей, которые имеют опыт работы в РАФОС или ОС РВ, предусмотрена возмож- ность явного переключения любого терминала на работу с соответствующей RTS. Такое переключение выполняется по команде SW, введенной с терминала, находящегося в командном режиме. В результате переключения на термина- ле появляется соответствующая подсказка, например: READY SWRFS . SWORV иллюстрирует последовательное переключение терминала на работу с RTS РАФОС и ОС РВ. В дальнейшем, в приме- рах диалога с системой будем использовать подсказку READY, предполагая, что в равной степени в этих же при- мерах могут фигурировать подсказки «.» или «>». 16
Прежде чем перейти к функциям RTS, следует сказать несколько слов о роли в ДОС КП языка Бейсик, в основу которого положена известная Дартмутская версия. В ДОС КП язык Бейсик значительно расширен рядом сис- темных и специальных функций, которые позволяют рас- сматривать его в качестве языка системного программиро- вания. Этим, в частности, объясняется название этого язы- ка в ДОС КП: Бейсик-расширенный, или сокращенно Бей- сик-Р. Подмножество языка Бейсик-Р описано в [9]. Все три упомянутые выше RTS выполняют следующие, общие для них функции: прием команд оператора, поступа- ющих с клавиатуры терминалов, и передачу их монитору для обработки (за.исключением команды загрузки програм- мы); выполнение команды запуска программы. Исполняющая система Бейсик выполняет также функции интерпретатора языка Бейсик-Р, проводит отработку спе- циальных команд оператора, предназначенных для работы с программами на этом языке, а также передает монитору запросы на выполнение операций ввода-вывода и системных функций, обращение к которым содержится в программах на языке Бейсик-Р. Особенности RTS Бейсик описаны в ч. II, гл. 3. Исполняющая система РАФОС является в ДОС КП эму- лятором однозадачного монитора операционной системы РА- ФОС. Данная RTS выполняет отдельные команды операто- ра РАФОС, а также управляет работой программ, представ- ленных в ДОС КП в загрузочном формате РАФОС. В част- ности RTS РАФОС эмулирует в ДОС КП работу системных ^макрокоманд РАФОС, заменяя при их выполнении соответ- ствующие обращения к монитору РАФОС на эквивалент- ные обращения к монитору ДОС КП. Под управлением RTS РАФОС в системе ДОС КП функционируют такие систем- ные программы РАФОС, как компоновщик LINK, програм- ма-библиотекарь LIBR и другие, а также компиляторы язы- ков программирования Макро, Фортран, Паскаль, СИ. Исполняющая система ОС РВ является эмулятором в ДОС КП монитора операционной системы ОС РВ и выполня- ет функции, аналогичные RTS РАФОС, но для программ, представленных в загрузочном формате ОС РВ. Под управлением данной RTS или ее некоторых модифи- каций в ДОС КП функционируют компиляторы с языков программирования Макро, Фортран, Кобол, Бейсик-Р2 (компиляторная версия языка Бейсик-Р), РПГ-П, СИ, а также системные программы ОС РВ, такие, как построи- тель задач ТКВ, библиотекарь LBR и другие.
1.6. РЕГИСТРАЦИЯ В СИСТЕМЕ Регистрация проводится путем набора на терминале сообще- ния HELLO. После приема этого сообщения, которое за- канчивается нажатием клавиши ВК, система выдает запрос- подсказку — знак Ф » требуя сообщить учетный номер, ко- торый вводится без его стандартных разделителей — зна- ков «[» и «1». После ввода учетного номера система просит со- общить ей пароль. При вводе пароля эхо-печать подавляется. Если заданный учетный номер и пароль системой не опознаются, то на терминале появляются соответствующее сообщение и подсказка — знак ф, после чего ввод учетно- го номера и пароля следует повторить. Например: HELLO ДОСКИ V.1-01 ’DOSKP* ЗАДАНИЕ 5 КВЗ 84.03.11 17:47 #50,50 ПАРОЛЬ: НЕВЕРНЫЙ ВВОД - ПОПЫТАЙТЕСЬ ЕЩЕ РАЗ # - - Если учетный номер и пароль опознаются системой, то далее возможны два варианта: 1. В системе имеются отсоединенные задания с таким же учетным номером и паролем. В этом случае после ввода пароля выводится запрос о необходимости присоединения терминала к одному из перечисленных отсоединенных зада- ний. В ответ необходимо сообщить номер присоединяемого задания или нажать ПС, что означает создание нового зада- ния. Например: HELLO ДОСКП V.1-01 -DOSKP- ЗАДАНИЕ 5 КВЗ 84.03.11 17:48 #150,50 ПАРОЛЬ: ЗАДАНИЯ 22 27 ДЛЯ ДАННОГО PPN ОТСОЕДИНЕНЫ НОМЕР ПРИСОЕДИНЯЕМОГО ЗАДАНИЯ?22 ПРИСОЕДИНЕНИЕ К ЗАДАНИЮ 22 ИЛИ HELLO ДОСКП V.1-01 -OOSKP- ЗАДАНИЕ 5 КВЗ 84.03.11 17:48 # 150. 50 ПАРОЛЬ ЗАДАНИЯ 22 27 ДЛЯ ДАННОГО PPN ОТСОЕДИНЕНЫ НОМЕР ПРИСОЕДИНЯЕМОГО ЗАДАНИЯ? <£. F > ЕЩЕ 4 ПОЛЬЗОВАТЕЛЯ ЗАРЕГИСТРИРОВАНЫ ПОД ДАННЫМ PPN 18
В первом примере регистрируемое задание получает номер 22, во втором — новый номер. Системой автомати- чески выбирается первый свободный порядковый номер 2. В системе не имеется ни одного отсоединенного зада- ния с таким же учетным номером и паролем. В этом случае регистрируемое задание получает новый номер Например. HELLO ДОСКП V 1--01 *DOSKP* ЗАДАНИЕ 5 КВЗ 84.03.11 17 48 =200 200 ПАРОЛЬ READY При наличии присоединенных заданий с таким же учет- ным номером при регистрации выдается соответствующее информационное сообщение, например. ЕЩЕ 3 ПОЛЬЗОВАТЕЛЯ ЗАРЕГИСТРИРОВАНЫ ПОД ДАННЫМ PPN и регистрируемое задание получает новый номер. При успешной идентификации пользователя в процессе регистрации проводится создание нового задания или при- соединение терминала к отсоединенному заданию, уже име- ющемуся в системе, в зависимости от диалога пользователя с системой при регистрации. После создания нового задания или присоединения терминала к отсоединенному заданию, свободному от выполняемой программы, терминал перево- дится в командный режим, т е в состояние ожидания при- ема команд оператора. Появление подсказки READY свидетельствует об успеш- ной регистрации пользователя и служит для него сигналом о возможности запуска требуемых ему программ. Если в процессе регистрации терминал присоединяется к отсоединенному заданию, которое занято выполняемой программой, то выполнение программы продолжается, при этом она получает возможность использовать данный тер- минал для ввода-вывода данных После завершения работы программы терминал переводится в командный режим. При этом в качестве RTS для этого терминала принимается обя- зательная RTS или RTS, установленная по команде SW. Если регистрация пользователей запрещена администра- тором системы, на терминале появляется сообщение ?ВХОД ЗАПРЕЩЕН? (9
1.7. ВЫПОЛНЕНИЕ ПРОГРАММ В ДОС КП При программировании в ДОС.КП следует учитывать осо- бенности представления программ в ДОС КП и специфику управления их работой. 1.7.1. Виды программ В ДОС КП различают следующие виды программ: исход- ные программы, программы в промежуточном коде, объект- ные модули, программы в формате загрузки. Исходные программы составляются на одном из языков программирования и вводятся в систему обычно при помощи текстового редактора. Программы в промежуточном коде получаются путем об- работки исходных программ на языке Бейсик-Р интерпре- татором этого языка, т. е. исполняющей системой Бейсик. Для других языков программирования представление про- грамм в промежуточном коде не предусмотрено. ___Объектные модули создаются соответствующими компи- ляторами из исходных программ, составленных иа языках программирования Макро, Фортран, Кобол, Бейсик-Р2, РПГ-П, СИ. Объектные модули, полученные посредством компиляторов РАФОС, отличаются по своему формату от модулей, полученных после компиляции в режиме ОС РВ. Программами в формате загрузки для языка Бейсик-Р являются исходные программы или программы в промежу- точном коде. Для других языков программирования програм- мы в формате загрузки создаются из объектных модулей путем их компоновки. При этом объектные модули в форма- те РАФОС объединяются в загрузочную программу компо- новщиком LINK, в формате ОС РВ — построителем задач ТКВ. Исключение составляет язык программирования Бей- сик-Р2, программы которого могут быть преобразованы в загрузочный формат самим компилятором без их обработки компоновщиком. Особенности подготовки и выполнения программ на языке Бейсик-Р описаны в ч. II, гл. 3, программ, функцио- нирующих в режимах РАФОС и ОС РВ,— в. ч. II, гл. 4. 1.7.2. Запуск программ на выполнение Существуют два способа запуска программ для выполне- ния: по команде оператора RUN; по краткой команде, за- данной на так называемом языке кратких команд, или со- кращенно CCL (Consiese Command Language). 20
Перед загрузкой программы необходимо убедиться в том, что в системе установлена RTS, необходимая для работы Программы. Для этой цели необходимо вызвать программу SYSTAT по команде: SYS/R. В результате на терминал бу- дет выведен раздел протокола SYSTAT, содержащий спи- сок установленных RTS. Например: ИСПОЛНЯЮЩИЕ СИСТЕМЫ ИМЯ РАСШИРЕ НИЕ РАЗМЕР КОЛИЧЕСТВО ПОЛЬЗОВАТЕЛЕЙ СОСТОЯНИЕ ВАЗ'.С ВАС 16(16) К 5 PERM, AODR:35, квм RFS SAV 4(28)К 2 TEMP. ADDR:79, КВМ, ЕМТ:255 ORV TSK 3(28)К 1 TEMP. ADDR:76. КВМ BASIC2 TSK 16 (16) К 1 NON-RES ВР2СОМ TSK 4 (28) К 0 NON-RES, КВМ SUD TSK 4 (28) К 2 TEMP. ADDR:72 TECO TEC 8(24)К 0 NON-RES В колонке ИМЯ указывается имя установленной RTS, например, BASIC — RTS Бейсик, RFS — RTS РАФОС, ORV — RTS ОС РВ. В колонке РАСШИРЕНИЕ выводится расширение имени файла программы, используемое для дан- ной RTS по умолчанию (см. ч. III, гл. 1). В колонке РАЗ- МЕР указываются размер RTS и максимальный размер про- граммы, которая может выполняться под управлением дан- ной RTS. В колонке СОСТОЯНИЕ приводятся признаки состояния RTS (см. Приложение 2). Команда RUN. Формат команды: RUN вхф где вхф — спецификация файла программы. (Спецификация файла подробно описана в гл. 2.) Дальнейшая работа с программой зависит от того, как она запрограммирована. Так, большинство системных про- грамм ДОС КП выводят символ-подсказку (*, * или дру- гой знак) и переходят в состояние ожидания приема команд- ной строки, которой задаются режим работы программы и ее функции, подлежащие выполнению. Язык кратких команд CCL. Язык кратких команд CCL позволяет поставить в соответствие спецификацию файла программы в формате загрузки с последовательностью от 1 до 6 символов, допустимых в коде RADIX-50 [61, которая в дальнейшем является краткой командой или командой CCL для запуска данной программы на выполнение. Напри- мер, команда SYS, которая приводилась выше в примерах, является краткой командой для загрузки системной про- 21
граммы SYSTAT. Программа SYSTAT может быть вызвана для выполнения как по команде RUN, например: RUN SYSTAT ь так и по команде SYS Использование кратких команд для запуска программ предоставляет пользователю следующие удобства: упроща- ется диалог пользователя с системой; при запуске систем- ных программ возможно задание командной строки в самой команде CCL. Например, в команде SYS/R, обеспечиваю- щей вывод на терминал раздела протокола SYSTAT, от- ражающего состояние установленных RTS, ключ/R пред- ставляет собой командную строку программы SYSTAT. При запуске программы SYSTAT по команде RUN такая же командная строка задается в диалоге. Системными соглашениями предусмотрены команды CCL для ряда системных программ, например: ТКВ — для по- строителя задач ОС РВ; LINK — для компоновщика РАФОС; UT — для программы UTILTY и т. д. При необходимости список команд CCL может быть рас- ширен, так как эти команда определяются администрато- ром системы при помощи программы UTILTY (см. ч. III, гл.1). Пакетная обработка. Несколько программ могут объеди- няться для выполнения в единый пакет, который обрабаты- вается специальным процессором пакетной обработки BATCH. Пакет оформляется специальным образом и создается на диске программой-редактором в виде файла, состоящего из символьных строк. Каждая строка представляет собой команду программы BATCH или строку данных, например командную строку программы. К основным командам BATCH относятся: 0JOB — начало пакета ♦; 0RUN — команда вызова программы на выполнение имеет такой же формат, как и обычная команда RUN; 0DATA — определяет начало данных программы на языке Бейсик-Р; 0EOD — конец данных Бейсик-Р; 0EOJ — конец пакета. * Знаком ® обозначается символ, имеющий код 044в в таблице КОИ-7. 22
Строки данных задаются в том же виде, как они вводят- ся с терминала при запуске программы по команде RUN. Если программа не предусматривает ввод данных с тер- минала, то строки данных не задаются. Каждый пакет передается на обработку системной про- грамме QUE, входящей в группу программ обслуживания очередей спулинга (см. ч. III, гл. 3). Каждому пакету присваивается имя, указываемое в ко- мандной строке программы QUE. Если в командной строке имя пакета не задается, то по умолчанию в качестве имени пакета выбирается имя файла, содержащего строки пакета. Программа QUE может быть вызвана для выполнения любым пользователем. Она устанавливает пакет в очередь к процессору пакетной обработки BATCH, которая далее обрабатывает пакет автоматически, без вмешательства опе- ратора. В ДОС КП предусмотрено до 8 очередей к программе BATCH. Каждая очередь рассматривается как некоторое логическое устройство, имя которого задается перед именем пакета в командной строке QUE. Имена таких устройств— BA:, BAI:, ВА2:,..., ВА7:. Для каждого логического устрой- ства (очереди) BATCH администратор устанавливает свои характеристики, например приоритеты, влияющие на про- цесс их обслуживания. Установка пакетов РАСК1 и DECK2 в очереди к BATCH может быть проведена следующим образом: READY RUN QUE QUE VI.О # Q BA1:PACK1 = DECK! #QBA2: = DECK2 #<CTRL/Z> READY Состояние выполняемых пакетов далее отслеживает ад- министратор системы, используя для этой цели возможности программ обслуживания очередей, описанные в ч. III, гл. 3. 1.7.3. Размещение программ в памяти Распределение памяти при выполнении программ осуществ- ляет монитор ДОС КП в совокупности с аппаратным дис- петчером памяти [101. Вся оперативная память делится на 4 раздела так, как это показано на рис. 1. 23
Разделы монитора и обязательной RTS являются стати- стическими и распределяются при генерации системы. Их размеры зависят от тех возможностей, которые были опре- делены на этапе построения монитора и обязательной RTS в процессе диалога генерации. ' Разделы программ и буферной области (XBUF) распре- деляются динамически во время работы системы в режиме он Раздел монитора Раздел обязательной Я тз Статическая .память тк(гмв) Раздел программ Динамическая память Буферная область fxeuF) Рис. 1. Распределение оперативной памяти в ДОС КП разделения времени. В разделе программ выполняются все системные или пользовательские программы, буферная об- ласть отводится для рабочих данных, которые используют- ся для повышения эффективности работы системы. По команде SYS/C, введенной с привилегированного тер- минала, администратор системы может получить информа- цию о текущем распределении памяти в следующем виде: НАЧАЛО КОНЕЦ РАЗМЕР ПОСТОЯННО ВРЕМЕННО ОК - 34К (35К) МОНИТОР 35К - 50К (16К) BASIC RTS 51К - 123К (73К) (ПОЛЬЗОВАТЕЛЬ) 124К - —КОНЕЦ— Эта информация может оказаться полезной для перерас- пределения памяти между разделами программ и XBUF в динамике работы системы. Более подробно назначение бу- ферной области описано в ч. III, гл. 2. Память в разделе программ распределяется между про- граммами динамически, в зависимости от их размеров. При этом каждой программе отводится непрерывный учас- ток памяти. При отсутствии участка памяти требуемой дли- ны, необходимого для выполняющейся программы, прово- дится перемещение других программ с целью освобождения нужного пространства. 24
Каждой программе отводится определенное адресное про- странство. Виртуальные адреса одной программы рассмат- риваются независимо от виртуальных адресов другой про- граммы. Отсчет виртуальных адресов программы осуществ- ляется с нуля. Размер виртуального адресного пространст- ва программы, т. е. размер программы, не может превышать 32 Келов. Каждому виртуальному адресу программы соот- ям 1000з Нижний сегмент Программа и данные - - Верхний - ~ = сегмент (Rts)== Рис. 2. Распределение виртуального адресно- го пространства 2): нижний сегмент; сег- Э2К ветствует определенный физи- ческий адрес. Одному и тому же виртуальному адресу разных программ могут соответствовать разные физические адреса. При выполнении программы произ- водится преобразование вирту- альных адресов программы в соответствующие физические адреса. Такое преобразование выполняет аппаратный диспет- чер памяти через свои регист- ры, которые ДОС КП заполняет соответствующими значениями для вычисления адресов. Меха- низм преобразования адресов подробно описан в[10]. Виртуальное адресное про- странство каждой программы делится на четыре сегмента (рис. мент программы и данных; свободное пространство; верхний сегмент. Нижний сегмент, размером около 10008 байт, составляет так называемую область связи программы с монитором, ко- торая содержит служебную информацию, необходимую при выполнении программы, стек, область параметров общесис- темных макрокоманд и др. Сегмент программы и данных занимают инструкции про- граммы, константы и массивы данных, а также области, резервируемые для данных в самой программе. Размер это- го сегмента определяется размером самой программы, на- пример, в процессе ее компоновки. Свободное пространство начинается с первого свободного адреса программы, выровненного на границу слова, и про- должается до начала верхнего сегмента. Это пространство содержит виртуальные адреса, которые программой не ис- пользуются. Следует отметить, что в процессе работы про- грамма может за счет свободного пространства динамичес- ки расширить свою память, например, специальной функци- 25
ей языка Бейсик-Р или соответствующей ей системной мак- рокомандой. Верхний сегмент отводится в программе для адресов RTS, под управлением которой выполняется программа. Таким образом, RTS и программа логически представляют собой единое целое. Величина этого сегмента зависит от кон- кретной RTS и составляет: для RTS Бейсик — от 12 до 17 Келов; для RTS РАФОС—4 Кслова; для ОС РВ—4 Кслова. Специальным указанием при генерации системы можно обес- печить включение части RTS ОС РВ, размером около 3 Келов, которая эмулирует работу системных макрокоманд ОС РВ, в состав монитора ДОС КП. В этом случае 3 Келов верхнего сегмента после загрузки программы на выполне- ние освобождаются и включаются в свободное пространство, которое в динамике работы программы Может быть исполь- зовано для расширения ее размера. В этом случае RTS ОС РВ носит название исчезаемой. Таким образом, размер программ на языке Бейсик-Р не может превышать 16 Келов. При необходимости создания программ, превышающих по размеру 16 Келов, следует проводить разбиение таких программ на «сцепляемые» сек- ции. Каждая сцепляемая секция по существу представляет собой самостоятельную программу, которая загружается на место предшествующей ей программы оператором CHAIN. Размер программ, выполняющихся под управлением РАФОС, не может превышать 28 Келов, ОС РВ — 31 Кслова. Физически в оперативной памяти выделяется один не- прерывный участок (район) для нижнего сегмента, сегмента программы и данных. Для RTS выделяется отдельный рай- он, который не обязательно прилегает к району программы, т. е. физически RTS и программа в памяти могут быть раз- делены. RTS представляет собой реентерабельную програм- му, одна копия которой одновременно используется несколь- кими разными программами. Для свободного сегмента физи- ческая память не выделяется. Напомним, что каждый регистр диспетчера памяти слу- жит для отображения до 4 Келов виртуальных адресов. При отображении виртуальных адресов программы в ДОС КП могут быть использованы все 8 регистров диспетчера памяти, при этом при работе ДОС КП в режимах РАФОС и ОС Р В регистр с номером 7 применяется для отображения адресов RTS. Кроме того, минимально для отображения адресов программы необходим один регистр с номером 0. Регистры, ие занятые для отображения адресов, остаются свободными и могут быть задействованы в динамике работы программы, 26
при расширении ее памяти. На рис. 3 приведена схема ото- бражения адресов программ на физическую память. Физический адрес для обязательной RTS зависит от раз- мера монитора, поскольку обязательная RTS размещается сразу же после монитора. Адреса дополнительных RTS выбираются при их уста- новке автоматически системой или задаются администрато- Регистры Виртуальные ДП Физические адреса (системные) адреса ок 32К ОК ВК 18К Монитор О' 2 2. ч ОК Монитор (згк] Регистры ДП Виртуальные (пользовательские) адреса Регистры / Д/7 / (пользовательские)/ ; Программа 4 неиспопьзуе- ная часть 32К ок 28К 32К BHS1C. RTS Программа 5 ORV. RTS 7 120» 2 3 А 5 B4SJC. RTS (1В К) Программа 1 Неиспользуе- мая часть OK АК 1БК ^Свободные (2К) ПоограммаКАК) Программа 2 (12К) ’Свободные (2К) Программа А Программа 5 (28 К) Программа 3 (ВК) Свободные (2 К) И // 4- 32» Программа 2 Неиспользуе- мая часть RFS. RTS 12К гвк 32К Программа 3 ок 8К неиспользуе- мая часть RFS. RTS(AK) ORV. НТЗГАкГ XBUFI2KI DFi. UTS 28К 32К 6 7 I 2 BflSJC. RTS С 7 32 з 4 В П. о 2 А 5 Рис. 3. Схема отображении адресов в ДОС КП ром системы (см. ключ/ADDR в команде ADD программы UTILTY вч. III, гл.1). Адрес RTS должен быть кратен 1 Кслову. Он указывает- ся в разделе установленных RTS протокола SYSTAT в поле «состояние» (см. пример в п. 1.7.2). Если дополнительные RTS объявляются невыгружае- мыми, то в этом случае размер раздела программ соответст- венным образом сокращается. 27
Глава 2 РАБОТА С УСТРОЙСТВАМИ И ФАЙЛАМИ Все устройства, к которым пользователи ДОС КП имеют дос- туп через соответствующие системные средства, делятся на две группы; устройства с файловой структурой и устройства с нефайловой структурой. Вся информация, циркулирующая в ДОС КП, — про- граммы и данные на устройствах с файловой структурой — представлена в виде файлов ДОС КП, оформленных в соот- ветствии с соглашениями, принятыми в системе. К устрой- ствам с. файловой структурой относятся магнитные диски и магнитные ленты. К устройствам с нефайловой структурой относятся тер- миналы, печатающие устройства, перфоленточные и перфо- карточные устройства. В качестве устройств этого типа мо- гут быть использованы также магнитные диски и ленты, ес- ли возникает потребность организации на них данных в фор- матах, отличающихся от файловой структуры ДОС КП. В системе предусмотрен достаточно мощный аппарат, обеспечивающий работу с устройствами и файлами как поль- зователю-программисту, так и пользователю-непрограмми- сту. Основой этого аппарата является файловый процессор ДОС КП, который в совокупности с драйверами внешних устройств обеспечивает работу с устройствами и файлами. Соглашения, принятые при программировании и работе с устройствами и файлами, унифицированы в том плане, что устройство с точки зрения пользователя рассматривается как некий атрибут файла. Данные для устройства с нефай- ловой структурой, например для АЦПУ, рассматриваются как файл, не имеющий имени и некоторых других атрибутов, характерных для файлов ДОС КП. При работе с файлами задаются их спецификации. Спе- цификации файлов могут быть заданы в программах пользо- вателя или в командных строках которые вводятся для про- граммы с терминала или передаются программам каким-ли- бо другим способом. 2.1. СПЕЦИФИКАЦИЯ ФАЙЛА В спецификации задаются основные характеристики файла и дополнительные характеристики в виде ключей. Отдель- ные составляющие спецификации могут быть опущены. В этом случае по умолчанию принимаются их стандартные значения, определенные в системе. Формат спецификации: 28
устр-. [гр, чл] имя.расш<пр> /ключ.../ключ где устр-. — идентификатор устройства, на котором размещается файл. По умолчанию SY: гр, чл — учетный номер файла, определяющий его принадлеж- ность конкретному пользователю: гр — номер группы; чл — номер члена. По умолчанию используется учет- ный номер задания, в рамках которого выполняется программа; имя — имя файла. Значение по умолчанию зависит от прог- раммы, использующей спецификацию; расш — расширение имени файла. Значение по умолчанию за- висит от программы, использующей спецификацию; пр — признак типа доступа к файлу (по чтению или по записи); ключ — ключ спецификации файла. 2.1.1. Идентификация устройств В качестве идентификаторов устройств задаются их имена, которые делятся на две группы: физические и логические. В сбозначении устройства после его имени следует двоето- чие. Физические имена устройств. Физическое имя устройст- ва состоит из двухбуквенного мнемонического обозначения типа устройства и номера устройства. Как правило, отсут- ствие номера в имени устройства означает устройство с но- мером 0. Мнемоническое обозначение устройства определя- ет его тип. Физические имена устройств, поддерживаемые ДОС КП, приведены в Приложении 1. Помимо физических имен устройств, приведенных в Приложении 1, для идентификации некоторых устройств используются следующие обозначения: SYO: — системный диск независимо от его типа (поня- тие системного диска приводится ниже); SY: — диски структуры общего доступа (понятие диска структуры общего доступа обсуждается ниже); TI: — текущий терминал, т. е. терминал, за которым работает пользователь, употребляющий это обозначение; РК: — псевдотерминал. Логические имена устройств. Логические имена уст- ройств используются для обеспечения независимости программы, взаимодействующей с устройствами, от конкрет- ного устройства. Логическое имя представляется последо- вательностью от 1 до 6 алфавитно-цифровых символов, до- пустимых в коде RADIX-50, и может указываться при об- ращении к устройству вместо физического имени. Различают общесистемные логические имена и пользо- вательские логические имена. 29
Общесистемные логические имена назначаются конкрет- ным устройствам администратором системы по команде- ADD LOGICAL программы UTILTY и действуют для всех пользователей системы. Общесистемное логическое имя мо- жет быть связано с устройством или с устройством и учет- ным номером на устройстве. Формат команды программы UTILTY для назначения общесистемного логического имени ADD LOGICAL устр лимя ИЛИ ADD LOGICAL устр [гр чл! лимя сне устр — физическое имя устройства, гр.чл—учетный номер, лимя — общесистемное логическое имя Примеры назначения общесистемных логических имен READY RUN UTIL TY UTILTY VID s ADO LOGICAL SY (» l] LS s ADD LOGICAL MT! TAPE1 ~< CTRL/Z > READY В результате выполнения приведенных команд каталогу Ii,lI на дисках структуры общего доступа назначается об- щесистемное имя LB. Указание этого имени в спецификации файла вместо имени устройства и каталога позволяет опре- делить местоположение файла в каталоге 11,1] структуры общего доступа. Общесистемное логическое имя ТАРЕ1 назначается устройству МТ1 Пользовательские логические имена действуют только для тех пользователей, которые нх назначают по команде опера- тора, имеющей два формата. (1) ASSIGN устр [гр, чл\ лимя (2) ASSIGN устр лимя Действие этой команды идентично действию команды ADD LOGICAL программы UTILTY, за исключением того, что лимя — пользовательское логическое имя. Эта команда доступна всем пользователям системы. 30
Каждому заданию может быть назначено не более четы- рех логических имен. Например, команды READY ASSIGN MTO.MYTAPE READY ASSIGN DK3:[6. 10]MYDIS_K READY назначают для текущего задания, т. е. задания, присоеди- ненного к терминалу, с которого вводятся указанные команды оператора, имя MYTAPE — для устройства МТО: и имя MYDISK — для каталога 15, 10] на диске DK3: Отмена назначения пользовательского логического име- ни производится по команде DEASSIGN лимя Например, команды READY DEASSIGN MYTAPE READY DEASSIGN MYDISK READY отменяют назначения текущего задания логических имен MYTAPE и MYDISK. Особенности использования логи- ческих имен для отдельных устройств описаны ниже. 2.1.2. Учетный номер файла Учетный номер файла определяет его принадлежность кон- кретному владельцу. Файлы, принадлежащие одному и то- му же владельцу, на устройствах с файловой структурой Объединяются в каталоги, каждый из которых однозначно идентифицируется учетным номером. Более подробно учет- ные номера файлов рассматриваются в следующих разделах- 31
2.1.3. Имя и расширение имени файла Имя файла представляет собой последовательность от 1 до 6 алфавитно-цифровых символов, допустимых в коде RADIX-50, и идентифицирует файл. Расширение имени файла, представляющее собой последовательность от 1 до 3 буквенно-цифровых символов, допустимых в коде RADIX-50, идентифицирует тип файла. Имя файла отделя- ется от расширения имени знаком «.», например: MYFILE.DAT,PROG.MAC,MODULE.OBJ и т.п. Системными соглашениями определены следующие груп- пы стандартных расширений имен файлов: 1. Исходные программы на языках программирования: .BAS — Бейсик-Р, .B2S — Бейсик-Р2, .С—СИ, .CBL — — Кобол, .FOR — Фортран, .PAS — Паскаль. 2. Файлы объектных модулей и загрузочных программ: .OBJ — объектный модуль РАФОС или ОС РВ, .§AV — за- грузочная программа РАФОС, .TSK — загрузочная про- грамма ОС РВ. 3. Библиотечные файлы: .OBJ—библиотека объектных модулей РАФОС, .OLB — библиотека объектных модулей ОС РВ, .SML — системная макробиблиотека. 4. Системные файлы: .SIL — файл монитора ДОС КП, .LIB — файл резидентной библиотеки, .RTS — файл испол- няющей системы, .SYS — специальный системный файл. 5. Служебные файлы: ,CTL, .CMD — командные файлы, .LST — файл листинга, .ODL—файл описания перекрытий для работы с ТКВ, .STB — файл таблицы символов для ком- поновки программ с резидентной библиотекой, ,ТМР—вре- менный рабочий файл, .TXT — текстовый файл, .DAT — файл данных. В спецификациях файлов для отдельных системных про- грамм задание расширений имен файлов необязательно. В этих случаях по умолчанию выбираются их стандартные расширения из числа приведенных выше. 2.1.4. Ключи спецификации файла Ключи спецификации файла задаются для дисковых файлов при их создании. Их задание позволяет более оптимально ис- пользовать пространство диска. Ввиду того, что эти ключи непривилегированными поль- зователями используются сравнительно редко, останавли- ваться на них более подробно не будем. 32
2Л.5. Дополнительные атрибуты файла Помимо атрибутов, указываемых явно в спецификации фай- ла, при его создании формируются дополнительные атрибу- ты, которые могут быть доступны пользователю для анализа посредством специальных системных программ, например PIP (см. ч. II, гл, 2). К таким атрибутам относятся: дата соз- дания файла, имя RTS, связанной с файлом (для программ в формате загрузки) и др. 2.2. КОМАНДНЫЕ СТРОКИ И КОМАНДНЫЕ ФАЙЛЫ При работе системных программ, работающих с файлами, на- пример программы PIP, программ-компиляторов, необхо- димо задание командных строк, содержащих спецификации входных и выходных файлов и задающих режим работы программ. Обычно они задаются после загрузки программ в ответ на запрос-подсказку программы. Формат командной строки: выхф1..выхфп = вхф1,...вхфп где выхф1 — спецификация i-ro выходного файла; вхф) — спецификация /-го входного файла. Число входных и выходных файлов зависит от конкрет- ной программы. В зависимости от особенностей отдельных программ спецификации входных или выходных файлов мо- гут не задаваться. В отдельных случаях жестко определя- ется порядок следования спецификаций файлов. При необ- ходимости спецификации отдельных файлов могут опускать- ся, однако иногда в этом случае обязательно присутствие в соответствующем месте командной строки разделителя — знака «,». Например: выхфх, ,выхф3 = вхфх Здесь спецификация выхф2 опущена. Примеры задания командных строк приводятся в ч. II. 2.2.1. Использование символов маскирования . Символы маскирования позволяют одной спецификацией файла задать несколько файлов, над которыми выполняются требуемые операции. Применение символов маскирования допустимо в именах и расширениях имен файлов и в учет- ном номере. 2 Зак. 4 54 33
Используются два символа маскирования: * заменяет группу и (или) член в учетном номере, а также имя и (или) расширение имени файла; ? заменяет отдельные символы в имени и (или) в расширении имени файла. Примеры задания файлов в структуре общего доступа; [*,*] *.* — в спецификации файла задаются все файлы; [5,*)*.BAS — в спецификации файла задаются все фай- лы с расширением.BAS из всех учетных номеров с номером группы 5; [1,3] NAM.* — в спецификации файла задаются файлы с именем NAM и с любым расширением из каталога [1,31; [*, *] FIL???.BA? — в спецификации файла задаются все файлы, первые три символа имени которых содержат FIL, а расширение имени начинается с ВА. 2.2.2. Командные файлы Для отдельных системных программ, например PIP, ТКВ и других, допускается задание командных строк в виде ко— мандных файлов. Командные строки в командных файлах задаются в таком же виде, как они вводятся с терминала. При работе с командным файлом в ответ на запрос-под- ' сказку программы необходимо задать его спецификацию в виде @ кф тр.е кф — спецификация командного файла (полностью идентична спецификации обычного файла). В спецификации командного файла по умолчанию исполь- зуются те же характеристики, что и для спецификации обыч- ного файла. Исключение составляет расширение имени ко- мандного файла, которое по умолчанию воспринимается как .CMD. Командные файлы могут быть косвенными, т. е. на них могут быть даны ссылки из других командных файлов. Ниже приводится пример использования командных фай- лов. Файл COPY.CMD: МТЕ [2,15] *.DBL=DM2: [2,4*.PRM & DELET.CMD МТИ [2,15]=DOC.TXT Этот файл содержит команды переписи файлов с расшире- нием .PRM из каталогов пользователей, имеющих номер 34
группы 2, с диска DM2:. Файлы переписываются на магнит- ную ленту, установленную на МТ1: в каталог [2,151 с рас- ширением имени .DBL. Кроме того, файл содержит вызов косвенного командного файла DELET .CMD и команду Записи на магнитную ленту файла DOC.TXT Файл DELET.CMD: DM2: [2, ♦]* PRM/DE По команде из файла DELET. CMD все переписанные на магнитную леиту файлы удаляются с диска. Процедура выполнения командного файла COPY CMD имеет вид: READY PIP • (ЭСОРУ » MTV. [2,15] • DBL=DM2: (2,4 • PRM • DM2: [2, ♦]«. PRM/DE • MTV [2,15] =DOC.TZT ^<CTRL/C > READY 2.3. НАКОПИТЕЛИ НА МАГНИТНЫХ ДИСКАХ При работе с дисками ДОС КП учитывает организацию хра- нения данных иа устройствах этого типа блоками по 512 байт, принятую в СМ ЭВМ. Табл. 1 содержит данные о раз- мере дисков разного типа в блоках по 512 байт Таблица 1 Емкость дисков Тип диска Мнемоническое обозначение Количество блоков СМ-5400 DK 4 800 СМ-5407 DP 40 000 СМ-5408 DM 30 000 2.3.1. Файловая структура На каждом диске с файловой структурой ДОС КП создаются каталоги файлов пользователей, или сокращенно UFD (User Fite Directory), которые идентифицируются учетными 2* 35
номерами. В UFD содержатся имена файлов и указатели, определяющие адреса файлов на диске. Учетные номера UFD объединяются в главный каталог файлов, или сокра- щенно MFD (Master File Directory), который для каждого учетного номера также содержит указатель адреса каталога UFD на диске. Таким образом, файловая структура ДОС КП имеет трех- ступенчатую иерархическую организацию, благодаря чему Файлы Рис. 4. Файловая структура ДОС КП обеспечивается достаточно быстрый доступ к требуемому файлу. Для того чтобы найти нужный файл, сначала в MFD отыскивается учетный номер, указанный в специфика- ции файла, затем по указателю, связанному с учетным но- мером UFD, отыскивается соответствующий каталог UFD, в котором находится имя требуемого файла, и по указате- лю, связанному с именем, находится сам файл. Файловая структура ДОС КП приведена на рис. 4. Системные файлы ДОС КП размещаются в каталогах с привилегированными учетными номерами. При этом неко- торые каталоги имеют специальное назначение:
[0,11 — содержит файлы монитора, исполняющих систем, специальные системные файлы; [1,1] — содержит библиотечные файлы ОС РВ, файлы описания перекрытий ОС РВ; [1,21 — каталог системной библиотеки ДОС КП, в кото- рую входят основные системные программы. 2.3.2. Категории дисков Диски файловой структуры ДОС КП делятся на две катего- рии: личные диски и диски структуры общего доступа. Лич- ные диски принадлежат отдельному пользователю или группе пользователей и в процессе работы находятся под управлением этих пользователей. Личные диски блокируют- ся по записи от непривилегированных пользователей, не являющихся их владельцами. Диски, входящие в структуру общего доступа, составля- ют сплошное поле внешней памяти и идентифицируются об- щим именем SY:, которое в спецификациях файлов может быть явно не задано. Система сама управляет размещением файлов на дисках структуры общего доступа. При этом пользователь может не знать, на каком диске находятся его файлы. При необхо- димости можно задать явно имя диска структуры общего до- ступа в спецификации файла. Перед использованием любого диска администратор дол- жен провести его инициализацию, в результате которой на диске создается файловая структура ДОС КП (см. ч. III, гл. 1). Перед началом работы с диском необходимо провести его логическую установку в системе, или монтирование диска. Монтирование личных дисков осуществляет сам пользова- тель, дисков структуры общего доступа — администратор при помощи программы UTILTY. Монтирование проводится после физической установки тома на устройстве, включает проверку метки тома и зане- сение сведений о диске в таблицы монитора. По команде SYS/D можно получить раздел протокола SYSTAT, содержащий сведения о смонтированных дисках, который имеет следующий вид: СТРУКТУРА ДИСКОВ: ОШИБКИ имя СОСТОЯНИЕ ДИСК ОТКРЫТО СВОБОДНО КЛАСТЕР DK0 8 522 2 0 SYSTEM PUB,DLW DK1 3 430 2 0 SYSLIB PUB, DLW DK2 0 2484 2 0 PRIVAT PUB, R—0, DLW,LCK DK3 1 1958 2 0 worn PR], DLW, LCK 37
В колонке ДИСК перечисляются физические имена смон- тированных дисков. Колонка ОТКРЫТО содержит количе- ство открытых надиске файлов, т. е. файлов, с которыми ра- ботают пользователи. Колонка СВОБОДНО информирует пользователя о количестве свободных блоков на диске, т. е. блоков, не занятых файлами. Другие колонки содержат раз- мер кластера тома (колонка КЛАСТЕР), количество оши- бок по диску (ОШИБКИ), метку тома (ИМЯ) н коды состоя- ния диска (СОСТОЯНИЕ). Понятие кластера приведено ниже. Коды состояния дисков см. в Приложении 2. Монтирование и демонтирование личных дисков. Мон- тирование личного диска непривилегированный пользова- тель проводит по команде оператора MOUNT, которая име- ет следующий формат: MOUNT устр: метка[/ключ... [, ключ}] где устр: — имя устройства, иа котором установлен ^требуемый том; метка — метка тома, занесенная иа диск при его инициализа- ции; ключи — дополнительные параметры, определяющие режим ра- боты с диском. В качестве ключей в команде MOUNT задаются: /RONLY — ключ доступа к диску только по чтению, от- сутствие этого ключа при монтировании диска означает возможность доступа к нему как по чтению, так и по записи; /LOGICAL: лимя — указание о возможности исполь- зования при обращении к диску заданного общесистем- ного логического имени. Обычно доступ к диску осуществля- ется по физическому имени устройства или по метке тома. Ключ дает возможность указывать при обращении к диску вместо метки тома заданное логическое имя; /NOLOGICAL — запрещает использование метки тома в качестве логического имени устройства. Демонтирование личного диска непривилегированный пользователь проводит по команде оператора DISMOUNT, которая имеет формат: DISMOUNT устр: где устр:физическое имя демонтируемого диска. Ниже приводятся примеры монтирования и демонтиро- вания личных дисков: 38
READY MOUNT DK5:USER1 READY MOUNT DM1:USER2/R0NL Y READY MOUNT DP 1:USER3/L0GICAL:ALPHA READY DISMOUNT DK5; READY Командами оператора, приведенными в данных приме- рах, монтируется и демонтируется личный диск DK.5 (метка тома USER1) с доступом к нему по чтению и по записи, мон- тируются: диск DM1: (метка тома USER2) с доступом к не- му только по чтению, диск ВР1:(метка USER3) с назначе- нием ему логического имени ALPHA), В разделе «Структура дисков протокола SYSTAT» (см. пример в. п. 2,3.2) личные диски в колонке СОСТОЯНИЕ помечены признаком PRI. Особенности работы с дисками структуры общего досту- па. Монтирование и демонтирование дисков структуры об- щего доступа выполняет администратор системы по коман- дам MOUNT и DISMOUNT программы UTILTY. Эти коман- ды имеют такой же формат, как и аналогичные команды оператора, приведенные в п.2.3.2. Кроме того, в команде MOUNT программы UTILTY может быть задан ключ /PRIVATE, позволяющий монтировать диск структуры об- щего доступа как личный. В этом случае обращение к тако- му диску по имени SY: невозможно. Примеры монтирования дисков структуры общего до- ступа: READY UT UTILTY VI.О #MOUNT DKESYSLIB AMOUNT DK2:SYSPRO/PR{VATE # CCTRL/Zy READY 39
Данный пример иллюстрирует монтирование дисков структуры общего доступа DK1: (метка SYSLIB) и DK2: (метка SYSPRO), причем последний монтируется как лич- ный. В протоколе SYSTAT (см. п. 2.3.2) диски структуры общего доступа в колонке СОСТОЯНИЕ отмечены призна- ком PUB. 2.3.3. Оптимизация работы с дисками Необходимо тщательно продумать стратегию работы с дис- ками в ДОС КП, основой которой является оптимизация доступа к файлам. При большом числе пользователей, объединенных, на- пример, работой по одной теме, предполагающей отладку и использование большого числа программ и файлов данных, не являющихся системными, следует сначала решить во- просит том, где следует размещать такие данные— на лич- ных дисках или на дисках структуры общего доступа. На дисках структуры общего доступа -размещаются все системные программы ДОС КП, включая компиляторы, мо- дули СУБД. Поэтому если в системе работает несколько групп пользователей и каждая группа использует большое число несистемных файлов, то эти файлы следует разме- щать на личных дисках. При размещении файлов в структуре общего доступа ре- комендуется использовать различные каталоги, в том числе и прн размещении системных файлов в процессе генерации системы. Доступ к файлам, находящимся в больших по раз- меру каталогах, при наличии нескольких дисков структуры общего доступа может оказаться слишком медленным, по- скольку поиск имен файлов в UFD проводится путем их по- следовательного перебора. Большое значение при работе с дисковыми файлами име- ет правильный выбор кластера диска и кэширование ката- логов и данных. Кластер. В целях оптимизации размещения файлов на дисках в ДОС КП введено понятие кластера. Это после- довательность смежных блоков, которая является единицей обмена при вводе-выводе данных. Число блоков, составляю- щих кластер, может устанавливаться для всего диска, от- дельного UFD или отдельного файла. Допустимые размеры кластеров для дисков 1,2,4,8,16 устанавливаются пользова- телем по своему усмотрению. Размер кластера UFD или фай- ла не может быть меньше размера кластера диска.
Дисковое пространство для файлов распределяется клас- терами, которые не обязательно должны прилегать друг к другу. Этим достигается более оптимальное использование дисковой памяти при размещении файлов и существенно ус- коряются чтение и запись данных в файлы. На рис. 5 при- ведена схема распределения дисковой памяти для двух фай- лов при размере кластера, равном 4. Размер кластера диска устанавливается прн его инициализации. кластер 1 Клостер 2 кластер 3 кластер К кластер 5 Рис. 5. Распределение памяти для файлов кластерами Кэширование каталогов и данных. Понятие кэширова- ния в ДОС КП означает возможность создания в буферной области XBUF (см. гл. 1, п. 1.7.3) специального рабочего участка-кэша, куда система автоматически помещает блоки каталогов UFD и MFD и блоки данных файлов, к которым наиболее часто обращаются. Кэширование каталогов и данных в оперативной памяти существенно ускоряет доступ пользователей к файлам, что в свою очередь приводит к повышению производительности всей системы в целом. Однако для этого требуется дополни- тельная область памяти. Так, для кэширования данных в области XBUF необходим участок, размером не менее 2 Келов. Возможность кэширования и размер кэша определяются на этапе генерации системы. Допускается задание режима кэширования только каталогов или каталогов и данных. Параметры кэширования задаются администратором сис- темы через программу UTILTY командами запрещения или разрешения кэширования. Запрещение кэширования произ- водится по команде disable cache Разрешение кэширования производится по команде ENABLE CACHE [/ключ...[/ключ]] 41
Значения ключей: /ALL — кэширование всех файлов независимо от флага кэширования; /FILE — кэширование файлов, для которых установлен флаг кэширования. Флаг кэширования устанавливается по команде UTILTY: FLAG файл [/ключ...[/ключ]] где файл — спецификация файла, для которого устанавливается флаг кэширования. Значение ключей в команде FLAG: /CACHE — файл всегда кэшируется при открытии; /SEQ — последовательное кэширование файла, реко- мендуется в случае, если обращение к файлу идет в режиме последовательного доступа; /RAN — произвольное кэширование файла, рекоменду- ется, если с файлом работают несколько пользователей. Память в области XBUF для кэша резервируется клас- терами. Размер кластера кэша должен быть меньше размера кластера диска или равен ему. Ключом/СЕ:п в команде ENABLE CACHE администратор устанавливает размер п- кластера кэша в блоках, ключом /LIMIT:m — число клас- теров кэша. Ключи /DIR: mt н /DATA:ms устанавливают ко- личество кластеров, которые отводятся в кэше для катало- гов (mt) и для данных (mJ. Более подробно механизм кэши- рования описан в ч. III, гл. 2. 2.3.4. Диски нефайловой структуры Особенности работы с дисками, рассмотренные выше, пред- полагают наличие на дисках файловой структуры ДОС КП. При необходимости пользователь имеет возможность про- граммировать работу с дисками, на которых отсутствует файловая структура ДОС КП. Структура размещения дан- ных на таких дисках устанавливается самим пользователем. В качестве примера такой работы с дисками можно при- вести возможность работы в ДОС КП с дисками в формате РАФОС. Специальная программа FIT, которая рассматрива- ется в ч. II, гл. 2, позволяет проводить перепись файлов с диска в формате РАФОС на диск с файловой структурой ДОС КП и наоборот. 42
2.4. НАКОПИТЕЛИ НА МАГНИТНЫХ ЛЕНТАХ Накопители на магнитных лентах (НМЛ) в системе ДОС КП используются как устройства с файловой структурой или как устройства с нефайловой структурой. В последнем слу- чае формат данных на магнитных лентах определяется поль- зователем. Размещение файлов на магнитных лентах допускается в одном из двух форматов: ДОС СМ или ЕС ЭВМ. Оба формата поддерживаются другими операционными системами СМ ЭВМ, такими, как РАФОС и ОС РВ, и по этой причине обмен данными между различными операционными систе- мами СМ ЭВМ никаких затруднений не вызывает. Структура данных на магнитных лентах в форматах ДОС СМ и ЕС ЭВМ приведена в [111. Возможность представ- ления на ленте данных в формате ЕС ЭВМ позволяет вести обмен информацией между СМ и ЕС ЭВМ. В отличие от дисков магнитные ленты не требуют спе- циальной подготовки к работе: формат данных на лентах, стандартные процедуры контроля при чтении-записи данных определяются при генерации системы. Однако если необхо- димо, можно использовать формат данных, отличный от ус- тановленного по умолчанию, а также изменить плотность записи (для НМЛ типа ММ:). Для этого следует использо- вать команду оператора монтирования ленты, которая при- меняется только для изменения характеристик ленты, так как если используются характеристики, установленные по умолчанию, то для работы с лентой монтировать ее не нуж- но. Формат команды монтирования ленты: MOUNT устр: [метка [/ключ...[/ключ][] где устр: — физическое или логическое имя НМЛ; метка — метка тома, которая сравнивается с меткой VOL1 и задается только для леит в формате ЕС ЭВМ. Значения ключей: /RONLY — лента доступна только для чтения; /DOS — лента используется в формате ДОС СМ; /ANSI — лента используется в формате ЕС ЭВМ; /DENSITY:800 — установка плотности записи 32 им- пульса на 1 мм; /DENSITY: 1600 — установка плотности записи 64 им- пульса на 1 мм, задается только для лент типа ММ:; /PARITY:EVEN — контроль по четности; /PARITY:ODD — контроль по нечетности; 43
/NOCHECK — отмена проверки метки тома при монти- ровании ленты, задается только для лент в фог ате ЕС ЭВМ. Если при выводе данных заполнение ле' .ы необходимо вести с начала, требуется выполнить ее очистку. Эта опера- ция выполняется программой PIP (см. ч. II, гл. 2). Напри- мер, если требуется выводить данные на чистую леиту МТО в формате ДОС СМ (этот формат используется по умолча- нию), то предварительно необходимо выполнить следующую последовательность команд: READY RUN PIP •MTO./ZE ОБНУЛЯТЬ ЛИ MT0:/PARITY:ODD/DENSITY:80O ’ V •<CTRL/Z> READY Здесь команда MTO:/ZE проводит очистку ленты в фор- мате ДОС СМ. Если же с лентой МТ1: необходимо работать в формате ЕС ЭВМ с контролем записи по четности, то предварительно надо выполнить следующие команды: READY MOUNT MT1:/ANSI/PARITY:ODD/NOCHECK READY RUN PIP *MT1:URER1/ZE ОБНУЛЯТЬ ЛИ MT1 :USERVPARITY:ODD/DENSITY.8QO ? Y • <CTRL/Z> READY Здесь по команде MOUNT производится монтирование ленты в формате ЕС ЭВМ без проверки ее метки (ключ/NOCHECK). По команде PIP - MT1:USER1/ZE происходит очистка ленты с занесением на нее метки VOL1 с именем тома USER1. Однако при переходе на работу с лентой в формате, отличном от формата по умолчанию, более удобно использование команды ASSIGN устр-.' форм где устр: — физическое имя НМЛ; форм — формат данных на ленте, с которым необходимо работать: .DOS—ДОС CM, .ANSI - ЕС ЭВМ. 14
Последний пример мог бы быть записан следующим обра- зом: READY ASSIGN MT1:.ANSI READY PIP • MT1.USER1/ZE ОБНУЛЯТЬ ЛИ MT1:USER1/PARITY:ODD/DEN SITY:800 ? Y •<CTRL/Z> READY Если какие-либо ключи в команде MOUNT отсутствуют, то выбираются их значения по умолчанию, установленные при генерации системы. 2.5. ЗАДАНИЕ ХАРАКТЕРИСТИК ТЕРМИНАЛОВ Видеотерминалы являются основными устройствами, через которые пользователи работают с системой ДОС КП. При вводе и при выводе данных на терминал в спецификации файла указывается только имя устройства, поскольку тер- минал является устройством с нефайловой структурой. До- пускается указание имени текущего устройства, присоеди- ненного к заданию, — TI: или явное указание устройства ТТп: или КВп:, где п — номер устройства. При разнообразии типов терминалов и возможностей подключения терминалов к ЭВМ через АДС, мультиплексор и различиях в аппаратуре передачи данных существенное значение имеет установка характеристик терминалов, та- ких, как ширина строк, управление эхо-печатью, способ ото- бражения удаляемых символов, контроль передачи данных, скорость передачи данных. При запуске системы для каждого терминала устанавли- ваются стандартные характеристики в зависимости от типа терминала и типа устройства телеобработки, через которое терминал подключен к системе. При необходимости для от- дельных терминалов можно задать другие характеристики. Эту процедуру выполняет системная программа TTYSET Вызов TTYSET осуществляется по команде CCL: SET команда 1; команда 2; ... где команды 1, 2 ... — команды программы TTYSET, изменяющие характеристики терминала. 45
Допускается также обычный вызов TTYSET по команде RUN. В этом случае TTYSET выдает запрос-подсказку «?> и переходит в состояние ожидания приема команды. Напри- мер: READY RUN TTYSET TTYSET VIЛ ? Если TTYSET вызвана по команде SET, то заданные характеристики устанавливаются для текущего терминала, т е. для терминала, с которого запущена TTYSET Если TTYSET вызвана по команде RUN, то в ответ на запрос-подсказку «?» можно задать имя терминала, для ко- торого необходимо нзмеиение характеристик. После зада- ния имени терминала следует запрос-подсказка: ДЛЯ КВп?------------------------ где п — номер терминала. В ответ иа этот запрос следует задать команду TTYSET. Этот режим работы доступен только привилегированным пользователям. Непривилегированным пользователям разрешено изме- нять характеристики только своего терминала. Ниже приведены наиболее важные команды программы TTYSET: LIST — вывод текущих характеристик терминала; WIDTH п — установка ширины п для вводимых строк. По умолчанию ширина вводимой строки равна длине строки терминала; TAB — разрешение использования аппаратной табуля- ции; NOTAB — запрещение использования аппаратной табу- ляции; LCOUTPUT — разрешение вывода (LC OUTPUT) или ввода (LC INPUT) символов русского LC INPUT алфавита; NO LC. OUTPUT — запрещение вывода (NO LC OUT PUT) или ввода (NO LC INPUT) NO LC INPUT символов русского алфавита; SCOPE — удаление символа при нажатии клавиши ЗБ с возвратом маркера на одну позицию назад; 46
SPEED n — установка заданной скорости п (число бод) при приеме-передаче данных. Задается только для програм- мируемых устройств передачи данных; NO PARITY — передача данных без контроля; EVEN PARITY — передача данных с контролем по чет- ности; ODD PARITY — передача данных с контролем по нечет- ности. 2.6. ДРУГИЕ ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА Помимо устройств, на особенностях работы с которыми мы останавливались в п. 2.3 — 2.5, ДОС КП поддерживает так- же другие периферийные устройства, такие, как устройство печати, устройство ввода-вывода перфоленты. Эти устрой- ства, как и терминалы, относятся к группе устройств нефай- ловой структуры. Поэтому при работе с такими устройства- ми в спецификации файла достаточно указать только имя устройства (физическое или логическое). Использование для вывода данных программы SPOOL позволяет избежать резервирования устройства печати, по- тери данных при обрыве бумаги, осуществить вывод задан- ного числа копий н т. д. Печать специальной страницы заго- ловка, идентифицирующей пользователя и выводимый файл, исключает путаницу при анализе листингов. Запуск про- граммы SPOOL и ее связь с программами обслуживания оче- редей рассматриваются в ч. III, гл. 3. 2.7. РЕЗЕРВИРОВАНИЕ УСТРОЙСТВ В условиях коллективной работы в системе многих пользова- телей большое значение приобретает возможность монополь- ного использования отдельных устройств, таких, как АЦПУ, НМЛ, перфоленточные устройства. В ДОС КП предусмотрена возможность резервирования отдельных устройств, которое выполняется по команде опе- ратора: ASSIGN имя: где имя: — физическое или логическое имя устройства. По этой команде указанное устройство закрепляется за текущим заданием и становится недоступным для других заданий до тех пор, пока резервирование устройства не бу- дет снято по команде DE ASSIGN имя: 47
Например, последовательность команд READY ASSIGN LP1: READY ASSIGN TAPE1; READY READY DE ASSIGN LP1: READY DEASSIGN TAPE I: READY резервирует устройство LP1: и устройство, назначенное ло- гическому имени ТАРЕ1:за текущим заданием, а затем ос- вобождает занятые устройства, делая их доступными дру- гим заданиям. В разделе «ЗАНЯТЫЕ УСТРОЙСТВА* протокола SYSTAT приводится перечень зарезервированных уст- ройств, например: ЗАНЯТЫЕ УСТРОЙСТВА УСТР. ЗАДАНИЕ ПРИЗНАК РКО 2 INIT LP0 3 AS+INIT ТМО 3 AS+ANSI В колонке УСТР. сообщается физическое имя зарезерви- рованного устройства, в колонке ЗАДАНИЕ — номер за- дания, за которым устройство закреплено, и в колонке ПРИЗНАК — причина резервирования устройства (см. Приложение 2). Глава 3 СОСТАВ И СТРУКТУРА ДОС КП В структуре ДОС КП можно выделить следующие состав- ляющие: ядро системы, систему программирования, пакеты системных прикладных программ. Перечисленные состав- ляющие делятся на функциональные подсистемы. 48
3.1. ЯДРО ДОС КП Центральной частью ядра и всей системы в целом является управляющая подсистема, включающая: программу на- чальной инициализации INIT.SYS; монитор разделения времени; системные управляющие программы; исполняю- щие системы. К системным управляющим программам относятся про- граммы, расширяющие функции монитора по управлению работой системы в режиме разделения времени. Реализа- ция отдельных управляющих функций посредством отдель- ных программ, вне монитора, приводит к экономии систем- ных ресурсов за счет сокращения размера монитора. Сис- темные управляющие программы обычно размещаются в ка- талоге [1,2] на системном диске, хотя это требование не яв- ляется обязательным. 3.1.1. Программа инициализации INIT.SYS Программма INIT.SYS загружается аппаратным загрузчи- ком и служит для запуска режима разделения времени, кото- рый осуществляется путем загрузки монитора. Однако за- пуску режима разделения времени предшествует выполне- ние некоторых предварительных функций, которые также выполняются программой INIT.SYS. Подробно функции INIT.SYS обсуждаются в ч. III, гл. 1. 3.1.2. Монитор разделения времени Монитор разделения времени загружается при выполнении режима START программой INIT.SYS. К основным функ- циям монитора относятся: управление работой системных и пользовательских программ на основе приоритетов и кван- тования времени, распределение системных ресурсов, орга- низация свопинга, обработка внешних и внутренних преры- ваний и ошибочных ситуаций, выполнение авторестарта, отработка программных запросов на выполнение системных функций. В состав монитора входят драйверы внешних уст- ройств и файловый процессор, управляющие выполнением операций ввода-вывода. Состав монитора, от которого зави- сят его возможности и эффективность работы, определяется на этапе генерации системы. 3.1.3. Системные управляющие программы Системные управляющие программы активно взаимодейст- вуют с монитором и по существу являются его расширением. 49
Часть этих программ доступна всем пользователям сис- темы, другая часть—только привилегированным пользова- телям. К системным управляющим программам относятся: программы регистрации и выхода пользователей из сис- темы LOGIN, LOGOUT: центральная управляющая программа UTILTY; программы анализа состояния системы SYSTAT, DISPLY, DIRECT, QUOLST, MEMORY; программа установки характеристик терминалов TTYSET; программы учета пользователей REACT, MONEY; программы подготовки носителей DSKINT, UMOUNT, ONLCLN, REORDR; программы управления очередями, пакетной обработ- кой и спулингом QUE, QUEMAN, OPSER, BATCH, SPOOL н PLEASE; программы ведения архивов носителей и файлов SAV- RES и BACKUP; системный справочник HELP. Важнейшую роль в системе играет программа UTILTY, обеспечивающая управление числом пользователей, рабо- тающих в системе, изменение приоритетов, квантование временя, установку исполняющих систем и резидентных биб- лиотек и другие функции. Как правило, после загрузки монитора проводится уста- новка начальных системных характеристик — разрешение регистрации пользователей в системе, установка дополни- тельных исполняющих систем, монтирование устройств, установка кратких команд CCL и характеристик термина- лов и т. п. Команды вызова соответствующих систем- ных программ UTILTY, OPSER, TTYSET н других и дан- ные для работы этих программ составляют специальный стартовый командный файл, который обрабатывается систем- ной управляющей программой INIT.BAC. Загрузку этой программы осуществляет монитор перед началом сеанса раз- деления времени. К этой группе программ относится также и программа завершения работы всей системы SHUTUP. Важную группу системных управляющих программ со- ставляют программа ANALYS, задачей которой является анализ ошибочных ситуаций при крахе системы, а также программы сбора и обработки ошибок системы и оборудова- ния в процессе работы системы — ERRINT, ERRCPY, ERRDIS. 50
3.1.4. Исполняющие системы Как уже указывалось, исполняющие системы являются ин- терфейсами между монитором и программами, в том числе системными управляющими программами, которые выпол- няются в системе. Три основные RTS —-BASIC.RTS, RFS. RTS и ORV.RTS находятся в каталоге (0,11 структуры об- щего доступа. Дополнительные RTS, необходимые для ра- боты отдельных компонентов (ТЕСО. RTS— для работы программируемого редактора ТЕСО, BASIC2.RTS, BP2COM.RTS — для работы компиляторов Бейсик-Р2 и РПГ-П, SUD.RTS — для работы системы управления дан- ными), также находятся в каталоге (0,1) структуры общего доступа и устанавливаются администратором по мере необ- ходимости 3.1.5. Подсистемы подготовки программ в режимах РАФОС и ОС РВ Эти подсистемы включают две группы программ, предназна- ченные для преобразования объектных модулей, получен- ных после трансляции исходных программ соответствующим компилятором. Одна группа программ функционирует под управлением RFS.RTS, другая — ORV.RTS. В эти под- системы входят также библиотеки объектных модулей и сис- темные макробиблиотеки операционных систем РАФОС и ОС РВ. Программы указанных подсистем могут размещаться на дисках произвольным образом, но рекомендуется размещать их в каталоге (1,21 структуры общего доступа. 3.1.6. Обслуживающие программы В подсистему обслуживающих программ, доступных всем пользователям системы, входят программы-редакторы и про- граммы обслуживания носителей и файлов. Программы-редакторы позволяют редактировать любые текстовые файлы в экранном и строковом режимах. В эту группу программ входят: 1. Универсальный редактор EDT, функционирующий как в строковом, так и в экранном режимах. Экранный ре- жим EDT возможен для терминалов типа СМ-7219 или про- граммно совместных с ними (ВТА 2000-15, ВТА 2000-3, VDT-52130). 2. Экранный редактор К2000 — для оаботы на термина- лах типа ВТА2000-2. 51
3. Экранный редактор VT340 — для работы на терми- налах VT340 (ВНР). К программам обслуживания носителей и файлов отно- сятся: PIP — универсальная программа обмена файлами меж- ду устройствами; FILCOM — программа сравнения файлов; COPY — программа копирования носителей; FIT — программа обмена дисковыми файлами между РАФОС и ДОС КП; FLINT — программа для работы с файлами на гибких дисках. Программы ДОС КП, перечисленные в п. 3.1.3, 3.1.5, 3.1.6, образуют системную библиотеку ДОС КП. 3.1.7. Подсистема управления данными (СУД-2) СУД-2 является расширением файлового процессора и предназначена для работы с файлами с последовательной, относительной и индексной организацией на уровне запи- сей. Последовательные файлы могут размещаться на магнит- ных лентах и на дисках и обеспечивают хранение записей в том порядке, в котором они поступили в файл. Способы ор- ганизации последовательных файлов достаточно хорошо ос- вещены в литературе, например в £12). Относительные файлы размещаются только на дисках и содержат записи фиксированной длины. Работа с ними напо- минает работу с дисковыми файлами с прямым доступом, принятыми в ЕС ЭВМ [ 121. Индексная организация файлов представляет собой раз- новидность хорошо известного индексно-последовательного метода доступа ISAM [12], со следующими расширениями: в качестве ключевых полей, по которым организуются индексы, может быть выбрано несколько полей записи (до 256); в составе макрокоманд СУД-2 наряду с макрокомандами включения записи в файл (PUT), получения записи (GET), изменения записи (UPDATE), удаления записи (DELETE) имеется макрокоманда многоаспектного поиска записей по заданным значениям ключей (FIND). На основе СУД-2 построена обработка файлов в языках программирования высокого уровня Кобол, Бейсик-Р2 и РПГ-П. Работа с СУД-2 на языке Макро обеспечивается че- рез макрокоманды СУД-2. 52
Модули СУД-2 составляют библиотеку объектных моду- лей SUDLIB.OLB, которые включаются в программу, ис- пользующую СУД-2, при ее построении построителем задач ТКВ. В целях оптимизации использования памяти имеется возможность вынесения модулей СУД-2 в отдельную рези- дентную библиотеку, которая разделяется несколькими ис- пользующими ее заданиями (так называемая разделяемая версия СУД). Работа с резидентными библиотеками подроб- но описана в ч. II, гл.4. В состав СУД входит также программа SORT, предназ- наченная для сортировки записей фиксированной, неопре- деленной и переменной длины. В частности, возможна сор- тировка последовательных файлов СУД-2. Сортировка про- водится по ключам записей, которые определяет пользова- тель (max 10 ключей) в возрастающем или убывающем по- рядке на основе стандартной, в коде КОИ-7, или нестан- дартной (выбираемой пользователем) кодировки данных. Программы SORT поставляются пользователем в двух модификациях: в загрузочном виде (SORT.TSK), позво- ляющем проводить сортировку записей без дополнительного программирования, или в виде объектных модулей (SORTR. OBJ hSORTS.OBJ), включаемых для сортировки записей в программу пользователя. В последнем случае вызов этих модулей из программ, составленных на языках Макро, Ко- бол, Бейсик-Р2 и РПГ-П, осуществляется через оператор CALL. В состав СУД-2 входит также ряд служебных программ, реализующих создание файлов СУД-2, загрузку индексно- го файла, копирование файлов с преобразованием структуры записей, защиту и восстановление файлов СУД-2. 3.1.8. Подсистема генерации Подсистема генерации представляет собой набор специаль- ных программ (SYSGEN, SYSBAT) и командных файлов, на- ходящихся на дистрибутивном носителе системы и предназ- наченных для генерации целевой системы ДОС КП, учиты- вающей конкретные требования пользователей и конфигура- цию технических средств вычислительного комплекса. Про- цесс генерации системы описан в ч. III, гл.1. 3.2. СИСТЕМА ПРОГРАММИРОВАНИЯ ДОС КП Система программирования ДОС КП включает языки про- граммирования и их компиляторы, в состав которых входят 53
собственно программы-компиляторы, библиотеки объект- ных модулей, служебные файлы, необходимые для работы компиляторов и рабочих программ. Наряду с языком макроассемблера в ДОС КП представ- лены следующие языки высокого уровня: Фортран, Кобол, Паскаль, Бейсик-Р2 (основанный на языке Бейсик-Р и до- полненный средствами для работы с файлами СУД-2), РПГ-П, СИ. Все перечисленные языки достаточно широко представлены в литературе, например, в [7], [9]. Особен- ности работы с компиляторами языков программирования описаны в ч. II, гл. 4. 3.3. СИСТЕМНЫЕ ПРИКЛАДНЫЕ ПРОГРАММЫ ДОС КП Системные прикладные программы ДОС КП расширяют воз- можности операционной системы и имеют проблемную ори- ентацию. К ним относятся: 1) ЭКСПЕРТ — пакет программ для контроля работы и диагностики ошибок технических средств в режиме разде- ления времени. Особенность пакета состоит в том, что про- верка работоспособности оборудования проводится без ос- тановки работы системы. Пакет ориентирован иа пользова- телей, отвечающих за эксплуатацию вычислительного ком- плекса; 2) ФОБРИН — система для работы с форматированны- ми базами данных. Краткое описание ФОБРИН приведено в [8]; 3) РИБД — система для работы с реляционными база- ми данных. 54
Часть II ПОДГОТОВКА ПРОГРАММ В ДОС КП Под подготовкой программ здесь понимается процесс преоб- разования исходной программы, составленной на одном из языков программирования, в формат загрузки, который обеспечивает возможность запуска программы на выполне- ние по команде оператора RUN или по краткой команде CCL. Процесс подготовки программы включает следующие ос- новные этапы: создание файла исходного текста и его редак- тирование при помощи текстового редактора, трансляцию и компоновку программы. В процессе подготовки программ неизбежна работа с файлами (например, их копирование или удаление) при помощи специальных системных обслуживаю- щих программ, а также работа с библиотеками макро- определений и с библиотеками объектных модулей. Указанные этапы процесса подготовки программ, харак- терные для ДОС КП, составляют предмет обсуждения дан- ного раздела книги. Глава 1 РЕДАКТИРОВАНИЕ ТЕКСТОВ Редактирование текстовых файлов — необходимая проце- дура при подготовке любой программы, которая в исходном виде представляет собой текстовый файл. Под редактирова- нием здесь понимается создание нового текстового файла и собственно редактирование, т. е. модификация уже имею- щегося файла. В ДОС КП редактирование текстовых файлов осуществ- ляется при помощи системных программ-редакторов. В сос- тав системы входят несколько программ этого типа, рассчи- 56
тайных на работу с терминалами разных типов из числа перечисленных в Приложении 1. Различают два типа редакторов — строковый и экран- ный. Объектом редактирования строкового редактора яв- ляется одна строка или заданная группа строк, причем про- цесс редактирования на экране терминала не отображается. Объектом редактирования жранного редактора является страница текста, размер которой соответствует размеру эк- рана, или группа страниц текста. При этом процесс редак- тирования отображается на экране. Объектом редактирования могут быть не только исход- ные программы, но и любые другие текстовые файлы, на- пример документация по программному обеспечению. В данной главе приводится описание универсального ре- дактора EDT, функционирующего в строковом режиме на всех терминалах, поддерживаемых ДОС КП, и в экранном режиме на терминалах типа ВТА 2000-3, ВТА 2000-15 или совместимых с ними. _____________________ t.l. ЗАГРУЗКА РЕДАКТОРА Вызов EDT осуществляется по команде RUN: RUN ©EDT или по команде CCL: EDT После загрузки редактор выдает запрос-подсказку EDT> и переходит в состояние ожидания приема командной строки, которая имеет формат: [выхф — ] вхф где выхф — спецификация выходного файла, задается при редакти- ровании имеющегося входного файла, который необ- ходимо оставить неизменным; вхф — спецификация входного файла, подлежащего созданию или редактированию. Если выходной файл не задан, то после выхода из редак- тора по команде EXIT входной файл (если он существовал ранее) заменяется новым файлом с учетом изменений, про- веденных в процессе редактирования. После обработки командной строки EDT создает внут- ренний буфер редактирования и выдает запрос-подсказку «♦», означающую, что он находится в строковом режиме и переходит в состояние ожидания приема команд. 56
Примеры загрузки Пример 1. Создание нового файла с именем PROG1. МАС, который после окончания редактирования помещается в структуру общего доступа, в текущий каталог. READY RUNEDT ЕРТ> PROG 1.MAC ВХОДНОГО ФАЙЛА нет [EOBJ • ЕХП READY П р и м е р 2. Редактирование файла RPOG1.MAC, на- ходящегося в структуре общего доступа, который после окончания редактирования остается неизменным. Отредак- тированный файл выводится на диск DK2: в каталог [150, 150] с именем PROG2.MAC: READY .EDT EDT >0X2: [?50,/50] PRDG2.MAC=PROG1.MAC 'EXIT READY 1.2. ПРИНЦИП БУФЕРИЗАЦИИ И УКАЗАТЕЛЬ РЕДАКТОРА Редактирование файла, имя которого задается в командной строке редактора, осуществляется во внутреннем буфере ре- дактора, который называется главным. Помимо главного буфера, в процессе редактирования могут создаваться по- именованные дополнительные буферы, в которые могут по мещаться фрагменты файла из главного буфера или другие файлы, .объединяемые полностью или частично с файлом, находящимся в главном буфере. При необходимости можно чередовать редактирование текста, находящегося в главном буфере, с редактированием данных в дополнительных буфе- рах, задавая в команде редактора имя требуемого буфера. 57
Для каждого буфера EDT создает указатель, определяю- щий место (строку — в строковом режиме, символ — в эк- ранном режиме), относительно которого происходит выпол- нение команды. При редактировании в строковом режиме указатель неявный, т. е. на экране терминала он не отобра- жается и установлен на начало строки текста, относитель- но которой производится выполнение команды. Строка, на которую установлен указатель, называется текущей. Теку- щая строка фиксируется для каждого буфера EDT. При ре- дактировании в экранном режиме указатель EDT для те- кущего буфера, содержимое которого отображается на экра- не, явный и соответствует курсору терминала, указываю- щему на позицию экрана, относительно которой происходит редактирование. Направление действия команд EDT может быть вперед, в направлении конца буфера, и назад, в направлении начала буфера. 1.3. ПРОТОКОЛИРОВАНИЕ ПРОЦЕССА РЕДАКТИРОВАНИЯ В процессе редактирования EDT ведет журнал изменений, который оформляется в виде файла с расширением имени .JOU и именем, совпадающим с именем редактируемого файла. Например, при редактировании файла PROGI.MAC нмя файла журнала — PROG1.JOU. При аварийном выхо- де из редактора или в случае, когда в команде выхода EXIT или QUIT (см. п. 1.4.4) указан ключ/SAVE, файл журнала сохраняется. При необходимости, используя этот файл, можно авто- матически повторить весь процесс редактирования. Для этой цели в командной строке при запуске EDT в спецификации входного файла необходимо указать ключ /RECOVERY, например: READY EDT PROG2MAC-PROG 1.MAC/REC0 VER Y По этой команде произойдет автоматическое повторение редактирования файла PROGI.MAC, которое ранее было прервано, например в результате машинного сбоя. После повторения можно продолжить редактирование этого файла обычным образом. 58
1.4. СТРОКОВЫЙ РЕЖИМ После загрузки EDT переходит в строковый режим, призна* ком которого является подсказка «♦». При этом указатель EDT устанавливается на первую строку главного буфера. В ответ на подсказку «*» следует задать необходимую ко- манду строкового режима. Команда может быть задана ли- бо полностью, либо аббревиатурой. В описании форматов команд аббревиатура каждой команды выделена жирным шрифтом, например ТУРЕ, т. е. допустимо задание полной команды ТУРЕ или ее аббревиатуры Т. 1.4.1. Создание файлов и ввод новых данных Если входного файла, указанного при загрузке EDT, в ко- мандной строке не существует, то необходимо его создание, которое осуществляется по команде INSERT. Эта же ко- манда используется при вводе данных в редактируемый файл. При создании файла указатель EDT устанавливается на начало буфера. Формат команды: INSERT [од] [;строка] где од — область действия — идентификатор строки или пер- вой строки группы строк, перед которой размещаются вводимые строки. Задается только в том случае, если новые данные вводятся в уже существующий файл; строка — вводимая строка, может быть задана, если других строк для ввода нет. После ввода команды INSERT курсор терминала уста- навливается в начало следующей строки, с которой необхо- димо вводить новые данные. Конец каждой вводимой стро- ки завершается нажатием клавиши ВК. Признаком конца вводимого текста является ввод управляющего символа <CTRL/Z>, после чего на экране появляется подсказка «*», которая свидетельствует о готовности EDT принять но- вую команду. На рис. 6 приводится пример ввода данных по команде INSERT: После выполнения команд INSERT и EXIT в текущем каталоге структуры общего доступа создан файл PROG1. МАС, текст которого приведен выше. Указанный файл пред- ставляет собой программу на языке Макро [61, которая используется далее для иллюстрации возможностей EDT. 5?
READY EDTPROG1. MAC ВХОДНОГО ФАЙЛА НЕТ [EOB] ♦ / .ENABLLC ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ ; РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ ; СИМВОЛ AR I 1 -И МАССИВ ; СИМВОЛ AR2 - 2-Й МАССИВ . Р-СЕКЦИЯ ARRAY СОДЕРЖИТ . СИМВОЛ AR - ОБ'ЕДИНЕННЫЙ МАССИВ ; П/П DfCOD MCALL EXIT0S GLOBL DECOD START: MOV ARI RO PSECT DATA АДРЕС 1-ГО МАССИВА AR1: WORD 0.1.77.155,177777 ’1-й МАССИВ .PSECT MOV AR2. R1 . АДРЕС 2-ГО МАССИВА .PSECT DATA AR2: WORD 3.7.15.176,1627 PSEC1 MOV AR R3 MOV 10 . R4 2-Й МАССИВ АДРЕС НОВОГО МАССИВА СЧЕТЧИК CMP: CMP@ RO. R1 BLOS 1G СРАВНЕНИЕ МЕНЬШЕ-РАВНО MOV (R1b,(R3h BR TEST ПЕРЕСЫЛКА 2-ГО 10 MOV (RO)» , (R3)+ . ПЕРЕСЫЛКА 1-ГО test: DEC R4 BNE CMP CALL DECOD EXIT0S ; PSECT ARRAY, OVR ПРОВЕРКА НА КОНЕЦ НЕ КОНЕЦ ВЫЗОВ ВЫХОД ar: BLKB 10 BLKB 70 END START <CTRL/Z > • EXIT READY Рис. 6. Ввод данных по команде INSERT 1.4.2. Редактирование в строковом режиме В командах редактирования в строковом режиме задаются: наименование команды; область действия команда; направ- ление выполнения команды. 60
Нумерация строк. Каждой строке EDT присваивается внутренний номев, который используется для идентифика- ции строки при редактировании. Нумерация строк по умол- чанию производится с шагом 1. При необходимости, вставки строк вводится дробная нумерация. По усмотрению поль- зователя номера строк в выходном файле можно сохранить для последующего редактирования файла или уничтожить. Область действия команды. Областью действия команды могут быть одна строка, группа смежных строк, группа не- смежных строк. Область действия — строка задается одним из следую- щих способов: — текущая строка- п — номер строки; ’аа...а’—первая строка, следующая за текущей, где встречается подстрока 'аа...а'; — ’bb...b’ — первая строка, предшествующая текущей, где встречается подстрока ’bb...b’\ [стр] ± п — строка, отстоящая иа п строк вперед (знак «+») или назад (знак «—») от строки, заданной одним из вышеприведенных способов. Например: ’АВС’ — п оз- начает, что область действия команды — это строка, отстоя- щая на п строк назад от первой строки, следующей за теку- щей, где встречается подстрока АВС. Если строка не задается, то отсчет ведется от текущей стро- ки; BEGIN — первая строка текущего буфера; END — последняя строка текущего буфера; LAST — последняя строка в буфере, предшествующем текущему. Область действия — группа смежных строк — задается одним из следующих способов: cmpi.cmpi — от строки 1 до строки 2, стрг — номер 1-й строки диапазона, стр2 — номер последней строки диапа- зона; стр # п — п строк, начиная от заданной строки; BEFORE — все строки, предшествующие текущей; REST — все строки, следующие за текущей; WHOLE — все строки буфера. Параметр стр задается либо знаком «.» (текущая стро- ка), либо номером, либо подстрокой символов, заключен- ных в кавычки. Область действия — группа несмежных строк — задает- ся одним из следующих способов: стръ стр2, ., стрп, где cmpt — номер i-й строки; [стр] ALL’xx...x’ — все строки, содержащие подстроку 61
хх .х, начиная от заданной строки. Здесь, стр — область действия — строка, если отсутствует, то отсчет ведется от- носительно начала текущей строки При необходимости использования в команде буфера, от- личного от текущего, его имя предшествует области действия команды. Примеры задания областей действия строкового режима. Для иллюстрации задания областей действия используется команда TYPE, которая выводит строки, указанные в ко- манде, на терминал: а) область действия — строка TYPE TYPE 15 TYPE = TEXT 105 TYPE 'ABC вывод текущей строки; , вывод строки 15; вывод строки 105 из буфера TEXT, вывод первой строки, начиная от текущей, в которой встречается под- TYPE-'DEF’ строка АВС, вывод первой строки, предшествую- щей текущей, в которой встречает- TYPE 'RXY4-5 , вывод строки, отстоящей на 5 строк от первой строки после текущей, в TYPE BEGIN TYPE END которой встречается подстрока RXY, , вывод первой строки буфера; , вывод последней строки буфера б) область действия — группа смежных строк TYPE 10 . 20 TYPE = TEXT 5 15 , выаод группы строк с 10-й по 20-ю; , вывод строк с 5-й по 15-ю из бу- TYPE # 10 фера TEXT, , вывод следующих 10 строк, начи- TYPE’ABC’ # 5 ная от текущей; , вывод 5 строк, начиная от первой строки после текущей, в которой TYPE BEFORE встречается подстрока АВС; , вывод всех строк от начала буфера TYPE REST до текущей; , вывод всех строк от текущей до конца буфера; TYPE. TEXT WHOLE , вывод всех строк буфера TEXT в) область действия — группа несмежных строк TYPE 5, 15, 20 , вывод строк 5, 15, 20; TYPE ALL ’XYZ’ вывод всех строк, начиная от теку- щей, содержащих подстроку XYZ; TYPE BEGIN ALL' PQR' , вывод всех строк от начала буфера, содержащих PQR, Ключи команд строкового режима. В командах строкового режима могут быть заданы ключи, уточняющие действие ко- манды. Некоторые ключи являются общими для целой груп- пы команд. Ключ/QUERY задается в командах, выполняющих опе- рацию над группой строк Задание этого ключа приводит к 62
появлению на экране вопроса о необходимости выполнения операции над очередной строкой. Возможные ответы оператора: Y — выполнять опера- цию; N — не выполнять операцию; А — все последующие строки обрабатываются без задания вопроса; Q— выполне- ние команды прерывается. Ключ SAVE сохраняет журнал при нормальном выходе из редактора по команде EXIT или QUIT. Команды строкового режима. После выполнения каждой команды иа терминале появляется подсказка <*», что сви- детельствует о готовности EDT принять очередную команду. Обычно при выполнении команд указатель EDT устанавли- вается на строку, следующую за последней обработанной строкой. Если при выполнении команды достигнут конец буфера, то на экране терминала появляется признак [ЕОВ]. Если в команде указано имя буфера, отличное от имени текущего буфера, н указатель этого буфера изменяется в ре- зультате выполнения команды, то заданный буфер становит- ся текущим. Вывод строк. Вывод строк на терминал проводит- ся по команде TYPE. Формат команды: TYPE [= имя] од [/BRIEF:n[/STAYJ] где од — область действия команды — строка, группа смежных или несмежных строк; имя — имя буфера, отличного от текущего; /BRIEF : п — ключ вывода первых я символов строки, если не задан, то выводится вся строка; /STAY — ключ, определяющий, что положение указа- теля после выполнения команды не изменяется. Команда TYPE может быть задана неявно. В этом слу- чае формат команды сохраняется, отсутствует идентифика- тор команды — слово TYPE. В следующем примере приводится вывод первых 5 строк файла PROG 1.МАС, созданного по команде IN- SERT, который используется во всех последующих приме- рах: READY EDT PROG1. MAC •Tl:5 1 .ENABL LC 2 .'ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 3 .’РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ 4 ; СИМВОЛ AR 1 - 1-й МАССИВ 5 ; СИМВОЛ AR2 - 2-й МАССИВ 63
После выполнения команды TYPE, заданной неявно, указатель EDT установлен на 1-ю строку буфера. Поиск строк. Поиск строк используется для уста- новки указателя на требуемую строку в заданном буфере и осуществляется по команде FIND. Формат команды: FIND[= имя] од где имя — имя буфера, отличного от текущего; од — область действия — строка или группа строк. Ука- затель устанавливается на первую строку заданной об- ласти. Пример задания команды FIND: • F4 • т 4 ; СИМВОЛ AR1 - 1-Й МАССИВ Перемещение строк. Для перемещения строк используются две команды: MOVE — перемещение строк с их удалением с исходной позиции и COPY — перемещение строк с сохранением в исходной позиции. Формат команды: MOVE 1 COPY J од± ТО од2 [/QUERY] где odt — область действия, определяющая положение исходной строки или группы строк; од2 — область действия, первая строка которой определяет место, куда переносятся исходные строки. Пример задания команд перемещения приведен на рис. 7. Удаление строк. Для удаления строк исполь- зуется команда DELETE. Формат команды: DELETE [од] [/QUERY] где од — область действия команды — строка или группа строк. Если не задается, то областью действия является текущая строка. После удаления строк на терминал выводится строка, следующая за последней удаляемой строкой, которая стано- вится текущей (рис. 8, с. 66). 64
УТЮУ» - установить указатель на 1-ю строку, содержащую MOV *M"PSFCT" 2 ТО ./О — переместить 2 строки, начиная с 1-й строки, содержащей.РЗЕСТ 13 . PSECT DATA ?У — выполнить перенос этой строки 14 ARK .WORD 0.1,77,155,177777 ?У F-4 T.#6/BR!EF:7 — установить указатель перед 1-й перенесенной строкой — вывод 6 строк, начиная с текущей в каждой строке выводится по 7 символов 10 .MCALL 11 .GLOBL 11.1 .PREST 11.2 ARI 12 START 15 .PSECT • CO 17,18 TO 12 — разместить строки 17,18 перед строкой 2 Cl РОКИ СКОПИРОВАНО 12, сохраняя исходные • Т BEGIN 20/В-17 ~ вывести первые 20 строк буфера по 17 символов в строке 1 .ENABL LC 2 ; ПРОГРАММА СЛИЯНИ 3 ;РАЗМЕРНОСТЬЮ ПО 4 ; СИМВОЛ ARI- 1-й 5 ; СИМВОЛ AR2 - 2-Й В ; Р-СЕКЦИЯ ARRAY 7 ;СИМВОЛ AR- ЮБ-ЕД В ; СИМВОЛЬНЫЙ МАССИ 9 ; Л/nDECOD 10 .MCALL EXITSS 11 •GLOBL DECOD 11.1 .PSECT DATA 11.2 ARV- .WORD 0,1, 113 PSECT DATA 11.4AR2: WORD 3,7, 12 start: MOV AR1, 15 .PSECT 1В MOV AR2, R1 17 .PSECT DATA Iff AR2 .WORD 3, 7, Рис. 7. Пример задании команд перемещения Вводновых строк. Для ввода новых строк ис- пользуется команда INSERT, которая уже была описана в п. 1.4.1. Перед вводом новых строк указатель необходимо установить на строку, перед которой должны вводиться но- вые строки фис. 9, с. 66) . 3 Зак. 454 65
•D 17 #3/0 уда/ 17 .PSECT DATA ?A 20 MOV AR.R3 • D - ".PSECT'/NQTYPE 11.4 AR2: .WORD 2,7,15,176, ь 3 строки, начиная с 17-й удалить все заданные строки АДРЕС НОВОГО МАССИВА удалить 2 строки перед текущей, где есть подстрока PSECT 27 АДРЕС 2-ГО МАССИВА ' *Т 1&20/BR1EF 18 - вывести отредактированные строки 10 MCALL EXITOS 11 GLOBL DECOD 11.1 11.2 AR1 11.4 AR2 PSECT DATA WORD 0.1.7 WORD 3.7 1 MOV AR1.R 12 START 16 MOV AR2.R1 АДР 20 MOV AR.R3 АДР Рис. 8. Пример удаления строк • F BEGIN - установка указателя в начало буфера < ГАВ » FITLE EXAMPL < ТАВ> IDENT А/1 О/ <CTRL/Z •> > 12 <ТАВ> .PSECT команда ввода - вводимый текст ввод 1-й строки перед строкой 12 Рис. 9. Пример ввода новых строк Замена подстрок. Замена подстрок, где под- строка — часть строки или вся строка—осуществляется по команде SUBSTITUTE. Формат команды: SUBSTITUTE/ nodcmp^nodcmp^todll/BRIEF-.nJ [/QUERYJI/NOTYPE] где nodcmpt п odcmp2 од /BRIEF : п /NOTYPE — заменяемая подстрока; — заменяющая подстрока; — область действия команды — строка иля группа строк; — ключ вывода л первых символов в заменяемых строках; — ключ, указывающий, что вывод строк, в ко- торых производятся замены, ие происходит. 66
Пример использования команды SUBSTITUTE: • S /СИМВОЛ/СИМВОЛИЧЕСКОЕ ИМЯ/3:5/ NOTYPE - замена в строках 3-5 без вывода строк 2 ЗАМЕНЫ • S /.BLKB/.BLKW/WHOLE/NOTYPE замена .BLKB на BLKW по всему буферу 2 ЗАМЕНЫ- Перенумерация строк. При редактирова- нии, в особенности когда из-за вставок текста появляются дробные номера строк, рекомендуется проводить их перио- дическую перенумерацию по команде RESEQUENCE. Формат команды: RESEQUENCE! = иля[од](/8ЕОиЕМСЕ[:нач[:шаг]] где имя — имя буфера; од — область действия команды — группа смеж- ных строк. Если на задается, то перенуме- рации подлежат все строки буфера; /SEQUENCE — ключ, задающий начальный номер строки и шаг нумерации. По умолчанию началь- ный номер и шаг равен 1. Пример использования команды RESEQUENCE при- веден на рис. 10, с. 68. 1.4.3. Разделение и объединение файлов В процессе редактирования основного файла часто оказыва- ется полезным, не прерывая процесса редактирования ос- новного файла, переключаться на работу с другими файлами. Для этой цели используются команды объединения и разде- ления файлов. При этом рекомендуется использовать допол- нительные буферы. Обычно процесс объединения файлов выполняется по следующей схеме. 1. Дополнительный файл, объединяемый с основным, вы- зывается в дополнительный буфер по команде INCLUDE. 2. В дополнительном буфере проводится редактирова- ние нового файла, если это необходимо. Редактированию предшествует установка дополнительного буфера в качестве текущего. 3* 67
RES •T WHOLE/BR/EE: 32 — перенумерация всех строк — вывод содержимого всего буфера 1 .TITLE EXAMPL 2 .IDENT/V1.0/ 3 .ENABL LC 4 ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 5 ; РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ 6 ; СИМВОЛИЧЕСКОЕ ИМЯ AR1 - 1-Й МАССИВ 7 ; СИМВОЛИЧЕСКОЕ ИМЯ AR2 — 2-Й МАССИВ 8 ;Р-СЕКЦИЯ ARRAY СОДЕРЖИТ 9 ; СИМВОЛ АР-ОБ'ЕДИНЕННЫЙ МАССИВ 10 ; СИМВОЛЬНЫЙ МАССИВ ЧИСЕЛ, ФОРМИРУЕМЫЙ 11 ; П/П DECOD 12 .MCALL EXIT0S 13 .GLOBL DECOD 14 .PSECT DATA 15 ar г. .WORD 0,1,77,155,177777 16 AR2: .WORD 3,7,15,176,1627 17 .PSECT 18 start: MOV AR1, RO 49 — MGVAR2,R4 — 20 MOV AR,R3 21 MOV 1O.,R4 22 сир: CMP@R0,@R1 23 BLOS 10 24 MOV (R1)+ , (R3) + 25 BR TEST 26 1в: MOV (R0) + , (R3) 27 test: DEC R4 28 BNE CMP 29 CALL DECOD 30 EX ITOS 31 .PSECT ARRAY, OVR 32 ar: .BLKW 10. 33 .BLKW 70. 34 .END START Рис. 10. Пример использовании команды (RESEQUENCE 3. Содержимое дополнительного буфера объединяется с основными командами MOVE(COPY) в строковом режиме или PASTE в экранном режиме. Формат команды INCLUDE: INCLUDE вхф [= имя] [о<Э] где вхф — спецификация входного файла; имя — имя буфера, если ие задается, то входной файл вводится и текущий буфер; од — область действия — строка или первая строка группы строк, перед которой размещаются строки из вводимого файла. Если отсутствуют, то вводимый файл помещается с начала буфера. 68
Пример объединения файлов. В при- мере в редактируемый файл PROG1.MAC добавляются не- сколько строк из файла COMMON .МАС (рис. 11). В результате выполненных действий в редактируемой программе PROG1.MAC, рассмотренной в п. 1.4.2, перед строкой 31 введена одна строка комментария. IN COMMON. MAC=TES71 -*файл COMMON.MAC вводится в буфер TEST1 с начала буфера. Буфер TEST1 становится текущим > TWHOLE — печатать содержимого буфера TEST1 1 ; СЕКЦИЯ СВЯЗИ С DECOD 2 ; .PSECT ARRAY, OVR 3 ; MAS: .BLKW 10. 4 ; SYMMAS..BLKW 70. 5 ; СЕКЦИЯ СВЯЗИ C KOD 6 ; .PSECT ARRAY1, OVR 7 ; ARR: .BLKW 200. *D 2:7 ** стереть строки со 2-й по 7-ю в буфере TEST! — установка главного буфера МАЩ • F= MAIN в качестве текущего —• перенести одну оставшуюся строку из* MO = TEST1 TO 31 буфера TEST1 в главный буфер перед строкой 31 Рис. 11. Пример объединения файлов Разделение файлов выполняется по команде WRITE, которая позволяет вывести содержимое любого буфера или его части в заданный файл. Формат команды: WRITE выхф[ = 6y0][od][SEQUENCE[:иач[ где выхф — спецификация выходного файла; буф — имя буфера, из которого выводятся данные в файл. Если отсутствует, то подразумевается текущий буфер; од — областью действия — строка или группа строк, кото- рые выводятся в файл. Если отсутствует, то выводится содержимое всего буфера. Ключ /SEQUENCE — описан в п. 1.4.2. 1.4.4. Управляющие команды Управляющие команды строкового режима осуществляют выход из редактора, установку экранного режима работы редактора, вывод служебной информации. Выход из редактора. Для завершения работы EDT ис- пользуются команды EXIT и QUIT. 69
Команда EXIT завершает редактирование с созданием отредактированного файла, QUIT — без создания отредак- тированного файла. Формат команды EXIT: EXIT [ewx$][/SEQUENCE[:Ha4[:w<re]]}[/SAVE] где еыхф — спецификация файла, в который выводится содержи- мое главного буфера, т. е. весь отредактированный файл. Если не задается, то выходной файл определяется коман- дной строкой при загрузке EDT. Ключи /SEQUENCE и /SAVE описаны в п. 1.4.2. При выполнении команды EXIT на терминал выводит- ся сообщение о количестве строк в выведенном файле, и ра- бота EDT завершается. Формат команды QUIT: QUIT (/SAVE] Следует помнить, что при выполнении команды QUIT все изменения, проводимые в процессе редактирования, могут быть утеряны, если не указан ключ /SAVE, позволяю- щий сохранить журнал изменений. Пример задания команды EXIT: * EX ВЫВЕДЕНО 35 СТРОК READY В результате выполнения данной команды файл PROG1. МАС, состоящий из 35 строк и содержащий все изменения, внесенные в результате выполнения команд редактирования, описанных в предыдущих подразделах, выведен в текущий каталог структуры общего доступа и работа редактора за- вершилась. Специальные команды. К специальным командам отно- сятся команды SET и SHOW. Команда SET выполняет управляющие действия, ре- зультат которых используется в процессе редактирования в экранном режиме. Различают несколько модификаций этой команды: 1) SET ENTITY WORD SENTENCE PARAGRAPH PAGE 'символ' ['символ'] устанавливает заданный символ как ограничитель объекта редактирования: WORD — слова, стандартный ограничитель <LF>, <ТАВ>, <FF>, <CR>, <пробел>; 70
SENTENCE — предложения, стандартный ограни- читель . (точка), ? (вопрос), ! (вос- клицательный знак); PARAGRAPH — параграф, стандартный ограничи- тель — два символа <CR>; PAGE — страница, стандартный ограничитель <FF>. Пример задания SET ENTITY: SET ENTITY SENTENCE’;’; устанавливает «;» как огра- ничитель предложения 2) SET LINES n устанавливает число строк на экране, равное п, где п = = 1 4- 22. По умолчанию при работе в экранном режиме число строк устанавливается равным 22. 3* SET NOKEY устанавливает возможность работы в экранном режиме. 4) SET SCREEN т устанавливает размер строки экрана, равный пг символам. По умолчанию т равно 80. Команда SHOW выводит на экран служебную информа- цию. Имеется несколько модификаций данной команды: 1) SHOW BUFFER — вывод списка имен буферов. Каждому имени ставится в соответствие число строк, находящееся в буфере. Имени те- кущего буфера предшествует знак «=», например: SHOW BUFFER •= MAIN 35 СТРОК TEST1 15 СТРОК TEST2 0 СТРОК 2) SHOW SCREEN — вывод размера строки, установленной по команде SET SCREEN. Перевод редактора в экранный режим осу- ществляется по команде CHANGE. Формат команды: CHANGE [= 6(/<Z>][od] где буф — имя буфера, подлежащего редактированию в экранном режиме, по умолчанию подразумевается текущий буфер; од — область действия — группа строк, которая подлежит редактированию в экранном режиме. 71
Команде CHANGE должна всегда предшествовать команда SET NOKEY. При переходе в экранный режим весь экран очищается и иа него выводятся первые п строк из данной области дей- ствия команды. При этом курсор терминала, совпадающий в экранном режиме с указателем EDT, устанавливается иа первый символ первой строки. В следующем примере показывается перевод EDT в эк- ранный режим для продолжения редактирования уже зна- комого нам файла PROG. IMAC: ftEADY EDT PROG 1. MAC • SET NOKEY •SETL/NES8 •C Выбор в данном примере числа 8 в команде SET LINES позволяет уменьшить объем данных, выводимых на экран и используемых для демонстрации работы команд экран- ного режима. После выполнения данной последовательности команд содержимое экрана терминала принимает следующий вид: 1 .TITLE EXAMPL 2 .IDENT/V1.0/ 3 .ENABL LC 4 ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 5 ; РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ 6 ; СИМВОЛИЧЕСКОЕ ИМЯ AR1 - 1-Й МАССИВ 7 ; СИМВОЛИЧЕСКОЕ ИМЯ AR2 - 2-Й МАССИВ 8 ;Р-СЕКЦИЯ ARRAY СОДЕРЖИТ: Курсор терминала устанавливается в начало 1-й стро- ки. Номера строк в этом и в последующих примерах введе- ны для удобства их анализа и при редактировании на экра- не отсутствуют. 1.5. ЭКРАННЫЙ РЕЖИМ Редактирование в экранном режиме обеспечивает большую наглядность процесса редактирования, чем строковое ре- дактирование, и оказывается наиболее удобным при слож- ном редактировании текстовых файлов. При редактировании в экранном режиме часть текста остается все время на экране, занимая строки с 1-й по л, 72
где п устанавливается по команде SET LINES и не может превышать 22. 23-я строка остается свободной, а в 24-ю строку помещается команда, набираемая на клавиатуре, или выводится сообщение об ошибке при наборе команды. 1.5.1. Основные характеристики Для задания команды необходимо определить следующее. 1. Направление выполнения команды — вперед или на- зад — устанавливается специальной командой ADVANCE (ВПЕРЕД) или BOTTOM (НАЗАД) для группы команд, следующих друг за другом, или знаками «+» (ВПЕРЕД), «—» (НАЗАД) для одной команды. По умолчанию направ- ление выполнения команды установлено «ВПЕРЕД». При выполнении команды в обратном направлении про- изводится реверс содержимого буфера с перемещением строк на экране сверху вниз. 2. Область действия команды. Допускается: С — символ; W — слово; L — строка; PAR — параграф; BR — группа строк от начала буфера до строки, на которую указывает курсор; SEN — предложения; PAGE — страница; ’ххх... х' — группа строк, включающих заданную строку хх... х\ SR — установленный диапазон; ER — группа строк от строки, на которую указывает курсор, до конца буфера. Ограничители слова, предложения, параграфа и стра- ницы приведены в п. 1.4.4. Ограничителем строки является код <CR>. Символ В, предшествующий W, L, PAR, SEN, PAGE, определяет область действия команды от курсора до нача- ла соответствующего элемента, символ Е — от курсора до конца элемента. Допускается задание комбинации элементов. Например: PARLW означает, что объектом действия команды являются параграф, первая строка следующего параграфа и первое слово в 1-й строке этого параграфа. 3. Фактор повторения команды — число, указываемое перед командой, определяющее, сколько раз команда под- лежит выполнению. Фактору повторения может предшест- вовать знак «+» или «—». 73
4. Фактор повторения, определяющий число однотип- ных элементов. Например, 2L3W означает, что действие команды распространяется на 2 строки и 3 слова следующей строки. Большинство команд экранного режима имеет следующий формат: где п — фактор повторения команды; ком — команда или ее аббревиатура; т — фактор повторения области действия; од — область действия команды. В фигурных скобках указаны элементы, используемые по выбору. - В приведенном формате обязательным является задание хотя бы двух элементов: т од, которые определяют команду перемещения курсора, заданную неявным образом. Для других команд обязательным является явное указание ко- манды. Задание остальных элементов необязательно, в слу- чае их отсутствия выбираются величины, определенные по умолчанию для соответствующей команды. 1.5.2. Управление курсором Прн редактировании в экранном режиме курсор, совпадаю- щий с указателем EDT, определяет текущую позицию в ре- дактируемом тексте, относительно которой выполняется команда, набираемая на клавиатуре терминала. Для уста- новки курсора на требуемую позицию используются коман- да управления курсором. Команда управления курсором имеет следующий фор- мат: Она задается указанием соответствующей области дейст- вия, которой могут предшествовать знаки «4-» или «—», ука- зывающие направление перемещения курсора, «—» — вле- во по строке и к началу буфера, «+» — вправо по строке и к концу буфера, а также фактор повторения команды и ука- затели В и Е, описанные в п. 1.5. Ниже приводятся примеры перемещения курсора в соответствии с заданной командой. 1. 10С — переместить курсор на 10 символов вправо. Содержимое экрана терминала в этом случае принимает вид: 74
1 TITLE EXAMPL 2 .IDENT /V1.07 3 ENABL LC 4 ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 5 ; РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ 6 ;СИМВОЛИЧЕСКОЕ ИМЯ AR1 - 1-й МАССИВ 7 ; СИМВОЛИЧЕСКОЕ ИМЯ AR2 - 2-Й МАССИВ 8 ; СИМВОЛ AR - ОБ'ЕДИНЕННЫЙ МАССИВ 2. Примеры других команд перемещения курсора: 2L — перемещение курсора на 2 строки вперед; EL — перемещение курсора вперед к концу текущей строки; —3W — перемещение курсора на 3 слова назад; EW — перемещение курсора к концу текущего слова вперед; 3SEN — перемещение курсора на 3 предложения вперед; ’СИМВОЛ’ — перемещение курсора в начало строки, в которой встречается последовательность СИМВОЛ. Допускается задание в одной команде комбинации об- ластей действия, например: 3C2W — перемещение курсора вперед на 3 символа и два слова. При перемещении курсора на строку, которая на экра- не отсутствует, происходит соответствующий сдвиг строк на экране. Например, пусть курсор указывает на строку номер 8. Команда 2L приводит к следующему содержимому эк- рана: 1 .ENABL LC 2 ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 3 ; РАЗМЕРНОСТЬЮ ПО 5 ЧИСЕЛ КАЖДЫЙ 4 ; СИМВОЛИЧЕСКОЕ ИМЯ AR1 - 1-Й МАССИВ 5 ; СИМВОЛИЧЕСКОЕ ИМЯ AR2 - 2-й МАССИВ 6 ; СИМВОЛ AR-ОБ'ЕДИНЕННЫЙ МАССИВ 7 ; СИМВОЛЬНЫЙ МАССИВ ЧИСЕЛ. ФОРМИРУЕМЫЙ 8 ; П/П DECOD 1.5.3. Команды экранного режима В экранном режиме допустимы следующие команды: DELETE — удалить; UNDELETE — восстановить; REPLACE — заменить; INSERT — ввести; SUBSTITUTE — заменить подстроку. 75
Команда DELETE. Действие команды DELETE начи- нается с текущего положения курсора н распространяется на заданную в команде область действия. Формат команды: (-f-) ( ( л D > т од... I } т од Атрибуты команды по умолчанию: 1) т = п = 1 2) од = С Примеры задания команды: 1) D — стереть один символ, на который указывает курсор; 2) D8C2W — удалить 3 символа, 2 слова в направлении вперед от текущего положения курсора; 3) —3DL — стереть три строки в направлении назад, начиная с текущего положения курсора. При удалении элементов текста происходит его соот- ветствующий сдвиг. _______________________ Команда UNDELETE. Команда восстанавливает эле- мент (символ, слово или строку), удаленный предшествую- щей командой DELETE. Различаются три формата коман- ды: UNDC — восстановить символ, UNDW—восстановить слово, UNDL — восстановить строку. Восстановление производится на место, предшествую- щее текущему положению курсора. Например, пусть со- держимое экрана имеет "вид: 1 ; ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ 2 ';... 8 ; П/П DECOD По команде DL строка 8 удаляется, и иа ее место пере- носится следующая строка из буфера, так что содержимое экрана принимает следующий вид: I , ПРОГРАММА СЛИЯНИЯ 2 Х МАССИВОВ ЧИСЕЛ 2 7 ; СИМВОЛИЧЕСКИЙ МАССИВ ЧИСЕЛ. ФОРМИРУЕМЫЙ 8 .MCALL EXIT0S 76
По команде UNDL содержимое экрана принимает свой прежний вид: 1 ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 2 8 ; П/П DECOD Команды INSERT и REPLACE. Обе команды позволяют вводить новый текст, начиная с места, на которое указывает курсор. Различие состоит в том, что по команде INSERT проводится вставка вводимого текста путем соответствую- щей раздвижки элементов текста. По команде REPLACE вводимый текст заменяет текст, заданный в команде обла- стью действия. Формат команды INSERT: I Формат команды REPLACE: nR { > т од По умолчанию: 1) т = п — 1 2) од = С После завершения набора команды курсор перемещается на свое старое место (место, предшествующее набору коман- ды). Набираемые вслед за этим на клавиатуре символы вво- дят, начиная с местоположения курсора, раздвигая текст на экране (команда INSERT) или заменяя заданные в команде элементы (команда REPLACE). Операция завер- шается вводом управляющего символа <CTRL/Z>. Например, по команде RW (заменить слово) содержимое экрана примет следующий вид: 1 ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 2 8 ; П/П DECOD 77
Если далее с клавиатуры ввести последовательность символов: ПОДПРОГРАММОЙ<СТРЕ/7>, то содержимое экрана примет вид: 1 ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 2 8 ; ПОДПРОГРАММОЙ DECOD , Команда SUBSTITUTE. Команда заменяет подстроку на другую подстроку, заданную в команде. Формат коман- ды: чУ nodcmpt! nodcmpj где п — число проводимых замен, по умолчанию 1; подотру — заменяемая подстрока; notempr-— заменяющая подстрока. Например, в результате выполнения команды: —S/СИМВОЛ AR—/СИМВОЛИЧЕСКОЕ ИМЯ AR — / содержимое экрана, приведенное в предыдущем примере, принимает вид: 1 ПРОГРАММА СЛИЯНИЯ 2-Х МАССИВОВ ЧИСЕЛ 2 6 ; СИМВОЛИЧЕСКОЕ ИМЯ AR — ОБ'ЕДИНЕННЫЙ МАССИВ 7 ; СИМВОЛЬНЫЙ МАССИВ ЧИСЕЛ. ФОРМИРУЕМЫЙ В ; ПОДПРОГРАММОЙ DECOD 1.5.4. Дополнительные возможности экранного режима При редактировании бывает полезно задавать в качестве области действия команды группу строк одним из следую- щих способов: 1) BR — от текущего положения курсора до начала буфера; 2) ER — от текущего положения курсора до конца бу- фера; 3) SR — установленный диапазон строк. 78
Например, команда DER <CCR> удаляет все символы до конца буфера, начиная с символа, на который указывает курсор. Особо следует остановиться на указателе области дейст- вия SR. Использованию SR в команде предшествует установ- ка курсора на начало требуемого диапазона, например по команде перемещения курсора. Начало диапазона фиксиру- ется последующей командой SEL. Затем установка курсора иа новое место отмечает конец задаваемого диапазона. По- следующая команда редактирования, содержащая указатель области действия SR, охватывает только элементы текста, входящие в выбранный диапазон. Например: ’АВС’ — установка курсора в начало последователь- ности символов АВС; SEL — фиксация начала диапазона; 5L — установка курсора на коней диапазона; DSR — удалить все строки в заданном диапазоне. Команды CUT и PASTE. Команда CUT позволяет из- влечь фрагмент текста из текущего буфера и поместить его в заданный буфер. Формат команды: п CUT т од[= буфер] Значения умолчания: 1) п = т = 1 2) од — С Если буфер не указан, то подразумевается внутренний буфер с именем PASTE. Например, по команде CUT 5L <CR> пять строк, на- чиная с текущей, помещаются во внутренний буфер PASTE. Команда PASTE помещает содержимое заданного буфе- ра или его часть в текущий буфер редактируемого файла, перед символом, на который указывает курсор. Формат команды: ft) п PASTE т °д 1= где атрибуты команды такие же, как и в команде CUT. Например, по команде PASTE 2L две строки из буфера PASTE помещаются в текущий буфер перед символом, на который указывает курсор. Комбинации команд CUT и PASTE позволяют выде- лять заданный участок текста, который затем может быть разнесен в нужные места текущего буфера. 79
Очистка экрана. В процессе работы на экран терминала могут поступать незапланированные сообщения, например от администратора системы, которые размещаются среди редактируемого текста. По команде REF экран очищается от избыточного текста. Выход из экранного режима. По команде EXIT редак- тор переводится в строковый режим, о чем свидетельствует подсказка — символ «*», который появляется на экране. Завершение работы редактора осуществляется повтор- ным заданием команды EXIT в строковом режиме (см. п. 1.4.4). Глава.2 ОБСЛУЖИВАНИЕ ФАЙЛОВ При отладке программ, а также при работе с данными поль- зователю приходится часто прибегать к различного рода ма- нипуляциям над файлами. Для этих целей в ДОС КП пре- дусмотрена группа системных программ, назначение кото- рых — обслуживание файлов. Под обслуживанием здесь понимается выполнение таких операций над файлами, как копирование, переименование, изменение атрибутов, удале- ние файлов, их сравнение, преобразование форматов фай- лов и т. п. Операции могут выполняться над одним файлом и над группой файлов путем задания в спецификациях фай- лов символов маскирования «♦» и/или «?> (см. ч. I, гл. 2). Среди функций обслуживания файлов необходимо выде- лить: обмен файлами, сравнение файлов, преобразование форматов файлов. 2.1. ОБМЕН ФАЙЛАМИ Под обменом файлами подразумевается копирование фай- лов с одного устройства на другое: копирование файлов, на- ходящихся на дисках, из одного каталога в другой. Указан- ные процедуры выполняются программой обмена файлами PIP, одной из наиболее часто используемых программ опе- рационной системы ДОС КП. Помимо копирования файлов, программа PIP выполняет некоторые другие функции, например вывод содержимого каталогов файлов, изменение атрибутов файлов, некоторые специальные функции. Программа PIP загружается по команде RUN, напри- мер: RUN О PIP или по команде CCL, например: PIP После загрузки программа выводит запрос-подсказку «*» и переходит в ожидание приема командной строки, ко- 80
торая имеет формат: [выхф- 1 ехф1 \,вхф2, [,вл'фп]1 где выхф — спецификация выходного файла, если не указана, то подразумевается КВ: *. *, где «*» символ маскирования; вхф! — спецификация i-ro входного файла. Значение атрибу- тов по умолчанию: устройство —SY: каталог — теку- щий каталог; имя и расширение имени — символ мас- кирования «*». Несколько строк могут быть объединены в один команд- ный файл, спецификация которого задается в командной строке. 2.1.1. Копирование файлов При копировании файлов необходимо задание спецификации выходного файла и спецификаций входных файлов. Напри- мер: 1) * MYFILE.DAT — MTO-.MYFILE.DAT — копирование файла MYFILE.DAT, находящегося в те- кущем каталоге на ленте МТО, в текущий каталог структу- ры общего доступа; 2)*DK1:\5O, 5O\YORFIL.DAT = DK2-.[I00, 150\YORFIL.DAT — копирование файла YORFIL.DAT из каталога [100, 150] на диске DK2: в каталог [50, 50] на диске DK1 : Если все атрибуты выходных файлов остаются неизмен- ными, начиная с имени файла, то такие атрибуты в специфи- кации выходного файла можно опустить. Например, две вы- шеприведенные строки могут быть записаны следующим образом: • SY: = MTO-.MYFILE.DAT . DKl-.\50,50\ = DK2-.\100.150\YORFIL.DAT При необходимости изменения атрибутов новые атрибу- ты должны быть явно указаны в спецификации выходного файла. Например, если файлу MYFILE.DAT в структуре об- щего доступа должен быть присвоен код <40>, который разрешает доступ к нему по чтению для всех пользователей, а расширение имени файла YORFIL.DAT на диске DK1: должно быть заменено на .TXT, то эти две строки можно записать следующим образом: • SY: <40> = MTOMYFILE.DAT • DK.\:[50,50\.TXT = DK2:[100,150\Y0RFIL.DAT 81
При необходимости копирования группы файлов в пра- вой части командной строки следует задать все их специфи- кации, разделенные знаками «,», а в левой части достаточ- но указать только имя устройства и каталог, если это не- обходимо. Например, строка: * LP: = F1LE1.DAT,FILE2.TXT обеспечивает вывод иа печать файлов FILE1.DAT, FILE2. TXT, находящихся в текущем каталоге структуры общего доступа. Если все вышеприведенные команды объединить в од- ном командном файле, например, с именем PIP.CMD, ко- торый может быть подготовлен редактором в текущем ката- логе структуры общего доступа, то для выполнения всех рассмотренных операций достаточно задать одну команд- ную строку @PIP.CMD 2.1.2. Вспомогательные функций PIP К вспомогательным функциям относятся вывод содержимо- го каталогов с заданными учетными номерами, удаление файлов, обнуление каталогов. Вывод содержимого каталогов. При выводе содержимо- го каталогов выдаются все основные атрибуты файлов, входящих в каталог, или заданных файлов каталога. Вывод каталога обеспечивается путем указания в спе- цификации входного файла ключа /LI. Например, для вы- вода атрибутов файла PROG.MAC на терминал необходимо задать строку • PROG.MAC1LI Строка . LP-. = A/L1 обеспечивает вывод на устройство печати содержимого всех каталогов устройства DK1: Удаление файлов. При указании в спецификациях вход- ных файлов ключа /DE соответствующие файлы удаляют- ся из заданного каталога иа заданном устройстве. Специфи- кация выходного файла в этом случае не задается. Напри- мер, строка * DK1:[2OO, 200]PROG.MAC/DE удаляет файл PROG.MAC из каталога [200, 2001 диска DK1: 82
Строка * ЦО, 10]PROG1.MAC,[10, 10]PROG2.МАС/DE удаляет файлы PROGI.MAC, PROG2.MAC из каталога (10, 101 структуры общего доступа. Обнуление каталогов. Обнуление каталогов предусма- тривает физическое удаление всех файлов каталога. Для этой цели используется ключ ZZE, задаваемый в командной строке устр-.{гр ,чл\/ ZE Например, строка » DP1-.U, 3]/ZE вызывает обнуление каталога (I, 3J на диске DPI: Указание ключа /ZE для магнитной ленты вызывает ее разметку. Очистка ленты была рассмотрена в ч. 1, гл. 2. Необходимо отметить, что при копировании файлов на ленту без ее предварительной очистки новые файлы поме- щаются за последним файлом, уже находящимся на ленте, т. е. все имеющиеся на ленте файлы сохраняются. Другие возможности программы PIP. Задание ключа /АР или /ЕХ в спецификации входного файла вызывает его слияние с уже существующим выходным файлом, специфи- кация которого задается в левой части командной строки. Например, строка » DKl:[l,3] MYDAT.DAT = МТ0:[15, 15\HISDAT.DAT/АР вызывает добавление в конец файла MYDAT.DAT, находя- щегося в каталоге [1, 31 на диске DKI: файла HISDAT.DAT из каталога (15, 15] ленты МТО: Задание в спецификации выходного файла ключа: /RTSihmb где имя — имя исполняющей системы (например, RFS), вызывает установку этого имени как атрибута для файла. Напомним, что связь с RTS имеет смысл только для фай- лов, содержащих программы в формате загрузки. Например, строка * DK1:/RTS:ORV = МТ:[1, 2\».TSK вызывает копирование из каталога (1, 2] магнитной ленты МТО: всех файлов с расширением имени .TSK в текущий ка- талог на диск DK1: При этом все программы требуют в дальнейшем для своего выполнения исполняющую систему 83
ORV.RTS. При копировании дисковых файлов этот ключ рекомендуется для изменения RTS. Задание в спецификациях входных файлов ключей /AF: dd-mmm-yy /BE: dd-mmm-yy /ON: dd-mmm-yy /SIN: dd-mmm-yy /UN: dd-mmm-yy /TO: где dd—mmm—yy — дата в формате день-месяц-год позволяет копировать только те входные файлы, которые были созданы: после указанной даты (/AF), до указанной даты (/BE), в указанный день (/ON), в указанный день или после него (/SIN), в указанный день или до него (/UN), в текущий день (/ТО). Ключ /IN при выполнении операций над группой фай- лов приводит к заданию вопроса о необходимости выпол- нения операции, например удаления, над очередным фай- лом. Ответ «Y» означает необходимость выполнения опера- ции, ответ <CR> — операции над очередным файлом не выполняются. Ключ /LO позволяет выводить на терминал сообщение о завершении выполнения операции над очередным файлом. Ниже приводятся примеры использования этих двух клю- чей: READY PIP • OKI: [/,3] . OBJ/DE/IN/LO • DK1 : [1, 3] HISFlL.ofrj? Y • DK1 : [1, 3] HISFIL.OBJ УДАЛЕН • DK1 : {1. 3) MYFIL.OBJ?<C/?> •DK1 : [1.31 HERFIL. OBJ? У • DK1 : [1, 3] HERFIL.OBJ УДАЛЕН • <CTRL/Z> READY В результате данной последовательности команд из ка- талога [1,3J устройства DK1: удаляются файлы HISFIL.OBJ и HERFIL.OBJ, файл MYFIL.OBJ остается. 84
Помимо вышеперечисленных возможностей, программа PIP выполняет ряд других функций, например переименова- ние файлов (ключ /RE), преобразование файлов в форматы СУД, управление составом листинга каталогов файлов, которые в данной книге не обсуждаются. Глава 3 ПОДГОТОВКА И ВЫПОЛНЕНИЕ ПРОГРАММ НА ЯЗЫКЕ БЕЙСИК-Р Язык Бейсик-Р играет особую роль в системе ДОС КП. Во-первых, это базовый язык системы, он определяет один из основных режимов ее работы. Исполняющая система BASIC.RTS интерпретирует операторы самого языка Бей- сик-Р и команды оператора, которые могут быть и не связа- ны с языком Бейсик-Р. Во-вторых, на языке Бейсик-Р составлена значительная часть системных программ ДОС КП, таких, как SYSTAT, TTYSET, UTILTY и других. Этот фактор позволяет рассматривать данный язык как язык си- стемного программирования, что существенно расширяет традиционные области применения языка Бейсик. Возможность написания системных программ на языке Бейсик-Р обеспечивается включением в него системных и специальных функций, предусматривающих программиро- вание ввода-вывода с полным контролем выполняемых опе- раций, доступ к таблицам монитора, управление выполне- нием программ, обращение к функциям монитора и т. д. Большинство функций дублируются общесистемными мак- рокомандами ДОС КП (см. п. 4.1.2). Эти функции, как и другие дополнительные возможности (например, строковая арифметика), и составляют расшире- ние языка Бейсик. Описание языка Бейсик-Р приведено в 19]. Учитывая приведенные особенности данного языка, а также реализа- цию его интерпретатора в виде исполняющей системы BASIC. RTC, схема подготовки и выполнения программ иа языке Бейсик-Р, которая кратко рассматривалась в гл. 1, сущест- венно отличается от аналогичных схем других языков ДОС КП, таких, как Макро, Фортран, Кобол. 3.1. РЕЖИМЫ РАБОТЫ ИНТЕРПРЕТАТОРА BASIC, RTS BASIC.RTS функционирует в двух режимах. В режиме 1 происходит интерпретация каждой введенной строки про- граммы на языке Бейсик-Р и ее непосредственное выпол- 85
нёние. В р ё ж и м е 2 производятся предварительное со- зданиё программы на языке Бейсик-Р с синтаксическим ана- лизом каждой вводимой строки, ее выполнение или транс- ляция в промежуточный код с последующим выполнением. Схема работы интерпретатора BASIC. RTS приведена на рис. 12. Рис. 12. Схема подготовки и выполнения про- грамм иа языке Бейсик-Р 86
Для работы в режиме 1 строки программы вводятся с терминала без указания их номеров, когда терминал на- ходится в командном режиме. Например: READY PR IN Т "ТРИ ПЛЮС ДВА" ТРИ ПЛЮС ДВА READY PRINT "3 + Z" 3 + 2 READY PRINT 3 + 2 5 READY Первые два оператора PRINT вызывают печать символь- ной строки, заключенной в кавычки, третий оператор PRINT — печать результата сложения чисел 3 и 2. Синтак- сис и семантика операторов Бейсик-Р подробно описывают- ся в [9]. В данном случае операторы языка используются для иллюстрации возможностей ДОС КП. Не сложно заметить, что во всех трех случаях каждый вводимый оператор немедленно выполняется. Результат его выполнения приводится в строке, следующей за строкой с оператором PRINT. После выполнения строки программы терминал переводится в командный режим. При наличии ошибки в строке программы на терминал выводится сообщение об ошибке и осуществляется перевод терминала в командный режим. Например: READY PRRNT 3 + 2 ?ЧТО? READY При работе в режиме 2 созданная в памяти программа может быть выполнена немедленно или сохранена на диске в исходном виде (в формате .BAS) или в промежуточном коде (в формате .ВАС). Возможно также создание программы в исходном виде на диске при помощи редактора. Однако при этом отсутствует синтаксический анализ вводимых строк программы. 87
3.2. КОМАНДЫ ОПЕРАТОРА СОЗДАНИЯ ИСХОДНЫХ ПРОГРАММ Создание исходной программы на языке Бейсик-Р начина- ется по команде оператора NEW, за которой может следо- вать имя программы. После ввода команды NEW курсор тер- минала перемещается в начало следующей строки, указы- вая место, с которого начинается ввод строки программы. Напомним, что ввод команд, как и строк программы, за- вершается нажатием клавиши ВК. Например: PEADY NEW MYPROG READY 10 PRINT "ТРИ ПЛЮС ДВА1' 20 PRINT "3*2" 30 PRINT 3'2 Если в команде NEW имя программы отсутствует, то после этой команды система запрашивает имя. В ответ на запрос следует задать имя или ввести символ <CR>. В последнем случае программе присваивается имя NONAME. Вводимая по команде NEW программа накапливается в памяти и становится текущей. Это значит, что некоторые команды оператора Бейсик без указания имени файла от- носятся к текущей программе. Так, после ввода команды оператора RUN выполняется текущая программа. После выполнения терминал переходит в командный режим, на- пример: READY NEWMYPROG 10 PRINT "ТРИ ПЛЮС ДВА" 20 PRINT "3 + 2" 30 PRINT 3+2 100 END RUN MYPROG 15:30 09.01.83 ТРИ ПЛЮС ДВА 3 + 2 5 READY 88
Возможно добавление новых строк в текущую програм- му. При этом строки должны соответствовать синтаксису языка Бейсик-Р. Например, строка READY 40 PRINT 5 + 5 добавляется в текущую программу и помещается между строками 30 и 100. Если эту программу вывести на терминал по команде LIST, то она будет иметь вид: READY LIST MYPROG 18 38 84.02.10 10 PRINT "ТРИ ПЛЮС Д8А" 20 PRINT 3 » 2" 30 PRINT 3.2 40 PRINT 5.5 100 END READY При обнаружении синтаксической ошибки в строке ин- терпретатор выдает соответствующее сообщение и перехо- дит в командный режим. Ошибочная строка остается в па- мяти. Исправление строки проводится ее повторным вводом с тем же номером или ее удалением по команде DELETE с последующим вводом. Например, команда READY DELETE 10 READY удаляет строку 10. Исправленная строка вводится следующим образом: READY 10 PRINT "ТРИ ПЛЮС ДВА" READY В командах LIST и DELETE возможно задание номеров выводимых или удаляемых строк либо интервала строк, указанными строками ограничивается диапазон выполнения команды. 89
Команда RENAME, за которой следует имя програм- мы, заменяет это имя, указанное ранее в команде NEW. Например, по команде READY RENAME HISPRO READY текущая программа вместо имени MYPROG получает но- вое имя HISPRO. Программа, находящаяся в памяти, будет текущей до тех пор, пока оператор не заменит ее другой программой по команде OLD или по следующей команде NEW. При вы- ходе пользователя из системы или при завершении работы системы программа теряется, если не были приняты спе- циальные меры для ее сохранения. Сохранение программы на диске проводится по команде SAVE Если в команде SAVE ничего не указано, то теку- щая программа сохраняется на диске структуры общего до- ступа в каталоге под текущим учетным номером, т. е. номе- ром, указанным пользователем при регистрации. Напри- мер, если учетный номер пользователя [200,200], то описы- ваемая в предыдущем разделе программа с именем HISPRO по команде READY SAVE READY сохраняется на устройстве SY: в каталоге (200, 200] с име* нем HISPRO.BAS. Указанием в команде SAVE спецификации файла мож- но изменить имя сохраняемой программы и другие ее ат- рибуты. Например, команда REAOY SAVE MYPROG READY сохраняет текущую программу HISPRO на диске структуры общего доступа в каталоге (200,200] под именем MYPROG. BAS. Если на диске уже имеется программа с таким же име- 90
нем, то вместо команды SAVE следует использовать коман- ду REPLACE. Сохраненная на диске программа может быть загруже- на в память по команде OLD, за которой может следовать спецификация файла. Например, команда READY OLD MYPROG READY обеспечивает вызов с диска структуры общего доступа из текущего каталога программы MYPROG. BAS и ее трансля- цию в промежуточный код. Вызванная программа размеща- ется в памяти и становится текущей, после чего к ней могут быть применимы команды оператора, описанные выше. 3.4. ТРАНСЛЯЦИЯ ПРОГРАММ Текущая или сохраненная на диске исходная программа на языке Бейсик-Р может быть сохранена на диске в проме- жуточном коде, т. е. в виде файла с расширением имени .ВАС, посредством команды COMPILE. Программа в промежуточном коде загружается для вы- полнения значительно быстрее, чем программа в исходном виде, поскольку отпадает необходимость в проведении конт- роля синтаксиса и семантики программы, ее настройки на работу с BASIC.RTS, которые составляют этап трансляции программы. Трансляции подлежит текущая программа. Если теку- щая программа отсутствует, то она должна быть создана по команде NEW или вызвана с диска по команде OLD. На- пример: ready OLD MYPROG READY COMPtLt READY В результате выполнения приведенных команд програм- ма MYPROG.BAS, находящаяся в текущем каталоге струк- туры общего доступа, транслируется в промежуточный код, который размещается в файле MYPROG. ВАС в текущем ка- талоге структуры общего доступа. При указании в команде COMPILE спецификации фай- ла программа в промежуточном коде выводится на заданное 91
устройство, в заданный каталог, с заданным именем. Напри- мер: READ* OLD MVPROG RE AD* СОМРце DK3 [150,120]H!SPRO<104> READ* В приведенном примере программа MYPROG.BAS, на- ходящаяся в текущем каталоге структуры общего доступа, транслируется в промежуточный код, который выводится в файл HISPRO.BAC на диск DK3: в каталог [160, 120] 3.5. ОСОБЕННОСТИ ВЫПОЛНЕНИЯ КОМАНДЫ RUN Команда RUN для программ на языке Бейсик-Р, указанная без спецификации файла, означает выполнение текущей про- граммы. Например, последовательность команд—' --------- READY OLD MYPROG READY RUN MYPROG 18 55 84.02.10 ТРИ ПЛЮС ДВА 3 + 2 5 10 READY приводит к предварительной загрузке в память программы MYPROG.BAS и ее выполнению. Указание в команде RUN спецификации файла приво- дит к загрузке и выполнению программы, заданной в специ- фикации файла, т. е. в этом случае команда RUN отрабаты- вается обычным образом. Например: READ” Run mvprOG MYPROG 18 56 B4.02 10 ТРИ ПЛЮС ДВА 3 ' 2 5 10 READY 92
По команде RUN могут загружаться для выполнения программы в формате .ВАС и программы в формате .BAS. Если на указанном в команде RUN устройстве в заданном каталоге имеются две копии одной и той же программы (од- на в формате .BAS, другая в формате .ВАС), то при от- сутствии в команде RUN явного указания расширения име- ни файла загружается программа в формате .ВАС. 3.6. СЛИЯНИЕ ПРОГРАММ И ВЫПОЛНЕНИЕ В ЦЕПОЧКЕ Для объединения сохраненной на диске исходной програм мы с текущей исходной программой, находящейся в памяти применяется команда APPEND. В этой команде указывает ся спецификация файла сохраненной программы, например READY NEW ИМЯ НОВОГО ФАЙЛА-<LF> READY 7 'ТЕСТОВАЯ ПРОГРАММА ДЛЯ 2 'ДЕМОНСТРАЦИИ КОМАНД 3 'ОПЕРАТОРА БЕЙСИК-Р APPEND MYPROG READY REPLACE MYPROG READY В приведенном примере вновь создаваемая программа- с именем NONAME, представляющая собой три строки ком- ментариев, объединяется с имеющейся на диске структуры общего доступа программой MYPROG.BAS, образуя еди- ную исходную программу с именем MYPROG.BAS, кото- рая заменяет на диске структуры общего доступа старую программу MYPROG.BAS. Для связывания программ в процессе их выполнения ис- пользуется оператор CHAIN, который должен задаваться в самой программе на языке Бейсик-Р. Эта возможность оказывается особенно полезной при составлении программ, превышающих по размеру максимально допустимый раз- мер задания (16 Келов), позволяя разделить программу на секции (меньше 16 Келов) и обеспечить передачу управления от секции к секции. В операторе CHAIN задается спецификация файла, оп- ределяющая программу, которой передается управление. 93
В команде может быть указан номер строки программы, на- чиная с которой выполняется программа. На рис. 13 приво- дится пример использования оператора CHAIN: READY OLD MYPROG READY LIST MYPROG 18-58 8402.10 1 (ТЕСТОВАЯ ПРОГРАММА ДЛЯ 2 (ДЕМОНСТРАЦИИ КОМАНД 3 (ОПЕРАТОРА БЕЙСИК-Р 10 PRINT "ТРИ ПЛЮС ДВА" 20 PRINT "3 + 2" 30 PRINT3 + 2 40 PRINT 5+ 5 100 END READY NEW TEST READY 10PRINT"ПРИМЕР ИСПОЛЬЗОВАНИЯ CHAIN" 20 CHAIN "MYPROG" LINE 30 RUN TEST 19:oi 84.02.10 ПРИМЕР ИСПОЛЬЗОВАНИЯ СНА1А/ 5 10 READY Рис. 13. Пример использования опера- тора CHAIN В приведенном примере для наглядности выводится текст программы MYPROG, находящейся в текущем каталоге структуры общего доступа. Затем создается новая програм- ма с именем TEST, которая выводит на терминал текстовое сообщение н вызывает для выполнения программу MYPROG. Программа MYPROG начинает выполняться с 30-й стро- ки, что определено указанием LINE в операторе CHAIN. 3.7. ОТЛАДКА ПРОГРАММ Для отладки программ на языке Бейснк-Р наряду с коман- дами LIST и DELETE, описанными выше, применяются команды: STOP — останов программы, CONT —- продол- 94
жение выполнения программы после останова, GOTO — продолжение выполнения программы с заданной строки. Зиги команды, кроме команды CONT, так же как и CHAIN, могут использоваться в самой программе как операторы. READY OLD MYPROG READY 3STOP 26 STOP LIST MYPROG 19 02 84.02.10 1 'ТЕСТОВАЯ ПРОГРАММА ДЛЯ 2 (ДЕМОНСТРАЦИИ КОМАНД 3 STOP 10 PRINT ТРИ ПЛЮС ДВА" 20 PRINT 3 • 2" 26 STOP 30 PRINT 3*2 40 PRINT 5 + 5 100 ENO READY RUN MYPROG 19102 84.02.10 СТОП В СТРОКЕ 3 READY CONT ТРИ ПЛЮС ДВА 3 + 2 СТОП В СТРОКЕ 26 READY GOTO 40 10 READY Рис. 14. Пример отладки программы Обычно при отладке программ на языке Бейсик-Р опе- ратор STOP включается в отлаживаемую программу, а команда CONT вводится с терминала для продолжения вы- полнения программы. После останова программы на терминал выводится сооб- щение о номере строки останова (рис. 14). 95
В приведенном примере на рис. 14 в программу MYPROG. BAS, загруженную в память из текущего катало- га структуры общего доступа, включены два оператора STOP с номерами строк 3 и 26. При выполнении по команде RUN измененной программы MYPROG, которая стала теку- щей, имели место два останова, в строках 3 и 26. После ос- танова в строке 3 программа была продолжена, начиная со строки 20, по команде CONT, введенной с терминала, а пос- ле останова в строке 26 — со строки 40 по команде GO ТО 40. Отладочные команды STOP, CONT, GO ТО и некоторые другие (например, PRINT), которые вводятся оператором с терминала и могут задаваться в качестве операторов в са- мой исходной программе иа языке Бейсик-Р, не являются командами оператора-пользователя, а относятся к операто- рам языка Бейснк-Р.При задании таких операторов с тер- минала без указания номера строки BASIC.RTS обрабаты- вает их в режиме непосредственного выполнения, т. е. не- медленно после ввода. Таким образом, можно, остановив программу в нужном месте, после выполнения оператора STOP распечатать зна- чения переменных, изменить значения некоторых из них и передать управление в любую точку программы. Глава 4 ПОДГОТОВКА ПРОГРАММ В РЕЖИМАХ РАФОС И ОС РВ Как отмечалось уже ранее, подготовка программы в режи- мах РАФОС и ОС РВ состоит из следующих этапов: тран- сляции программы в объектный код, т. е. получения объект- ного модуля, и компоновки программы в загрузочный фор- мат. Трансляция программы выполняется соответствующим компилятором. При трансляции программ на языке Макро может быть использована соответствующая системная или пользовательская макробиблиотека. Компоновка программ выполняется программой-компоиовщиком, которая объе- диняет несколько объектных модулей в программу в форма- те загрузки. В процессе компоновки может быть использо- вана системная или пользовательская библиотека объект- ных модулей. Для работы с библиотеками макроопределений или объектных модулей используются специальные системные программы-библиотекари. Наличие двух различных исполняющих систем РАФОС н ОС РВ обусловливает функционирование в ДОС КП про- 96
грамм в формате загрузки РАФОС (формат .SAV) и в форма- те загрузки ОС РВ (формат .TSK). Соответственно в ДОС КП существуют два типа объектных модулей — в формате РАФОС и в формате ОС РВ. Расширения имен файлов объектных модулей одного и другого форматов одинаковы (.OBJ). По этим причинам в ДОС КП предусмотрены два набора системных программ, каждый нз которых включает компи- ляторы, библиотекари и компоновщики. В табл. 2 приведены системные программные средства для подготовки программ в режимах РАФОС и ОС РВ, си- стемные библиотеки, а также исполняющие системы, под уп- равлением которых функционируют перечисленные систем- ные Программы и полученные при их помощи программы в загрузочном формате. Таблица 2. Средства подготовки программ . Системные средства подготовки программ Режим РАФОС ОС РВ Исполняющая система Компиляторы Библиотекари Компоновщики Системная макробиб- лиотека Системная объектная библиотека RFS. RTS Макро Фортран Паскаль СИ LIBR LINK SYSMAC.SML SYSLIB.OBJ ORV.RTS Макро Фортран РПГ-П Кобол Бейсик-Р2 СИ LBR ТКВ OCMAC.SML SYSLIB.OLB Как видно из табл. 2, в составе ДОС КП для некоторых языков программирования, например Макро, предусмо- трено два компилятора, функционирующих один в режиме РАФОС, другой — в ОС РВ. Этот фактор следует учитывать при подготовке программ. Объектные модули, полученные после трансляции, необходимо обрабатывать соответствую- щим библиотекарем и компоновщиком. На рис. 15 приведе- на обобщенная схема подготовки программ в форматах РАФОС и ОС РВ. 4 Зак. 454 97
Рис. 15. Схема подготовки программ в форматах РАФОС и ОС РВ 4.1. ТРАНСЛЯЦИЯ ПРОГРАММ Трансляция исходных программ для большинства компиля- торов, функционирующих в среде ДОС КП, осуществляет- ся по следующей схеме. 1. Вызов компилятора по команде RUN или CCL. Пос- ле загрузки компилятор выдает запрос-подсказку и пере- ходит в состояние ожидания приема командной строки, на- пример: 1) вызов компилятора МАКРО РАФОС R EADY RUN MACRO 2) вызов компилятора МАКРО ОС РВ READY МАС МАС > 98
2. В ответ на запрос-подсказку компилятору следует за- дать командную строку, которая имеет следующий формат: выхф-t, выхфг, выхф3 = вхф1, .... вхфп где выхф1 — спецификация файла объемного модуля; выхфг — спецификация файла листинга; выхфз — спецификация файла перекрестных ссылок; вхф1 — спецификация файла исходной программы. Спецификации входных и выходных файлов задаются в соответствии с общесистемными соглашениями ДОС КП. В табл. 3 приведены имена и расширения имен файлов, ис- пользуемые по умолчанию для различных компиляторов. Таблица 3. Имена и расширения имен файлов для компиляторов Файл Режим РАФОС Режим ОС РВ имя файла расширение имени файла имя файла расширение имени файла Выходной объектный Задание обязатель- но, если файл созда- ется .OBJ Задание обязатель- но, если файл создается .OBJ Листинг Входной То же .LST То же .LST исходная Задание .МАС—язык Задание .MAC —язык программа обязательно Макро .FOR — язык Фортран .PAS — язык Паскаль . С — язык СИ обязательно Макро .FTN — язык Фортран .CBL — язык Кобол .B2S Бей- снк-Р2 .С — язык СИ .RPG — язык РПГ-П системная макробиблио- тека (только для языка Макро) SYSMAC .SML ОСМАС .SML пользова- тельская мак- робиблиоте- ка (только для языка Макро) Задание обязательно .МАС Задание обязательно .MLB 4*
Примечания: 1. При трансляции программ на языке МАКРО для поиска мак- роопределений по умолчанию используется системная макробиб- лиотека SYSMAC.SML (РАФОС) или OCMAC.SML (ОС РВ), задание ее имени во входной строке не требуется. Если необходима пользовательская макробиблиотека, то она должна быть указана спецификацией входного файла. 2. Помимо стандартных атрибутов, в отдельных спецификациях могут задаваться ключи, характер использования которых зависит от компилятора. 3. Листинг трансляции может быть выведен на АЦПУ или на терминал. Для этой цели в спецификации файла листинга достаточ- но задать только имя требуемого устройства. 3. После обработки командной строки может быть вве- дена следующая строка и т. д. Выход из компилятора за- вершается вводом управляющего символа <CTRL/Z>. Каждый компилятор использует свой набор ключей. Одни ключи задаются в любом месте командной строки, другие — только для входных или выходных файлов либо в строго определенных спецификациях файлов (например, ключи, определяющие пользовательскую макробиблиоте- ку). Ключи задают режимы работы компилятора, обеспечи- вают управление процессом трансляции. Группа командных строк может быть объединена в еди- ный командный файл, имя которого указывается в ответе на запрос компилятора вместо самой командной строки. 4.1.1. Примеры задания командных строк компилятора Пример!. Трансляция программы PROG1.MAC, под- готовленной редактором и находящейся в структуре общего доступа в текущем каталоге. Объектный файл выводится также в текущий каталог структуры общего доступа, файл листинга — на устройство печати. Трансляция проводится компилятором РАФОС—MACRO. READY MACRO •PROG1, LP—PROGl ’<CTRL/Z> ~ READY Пример 2. Трансляция программы USER.CBL ком- пилятором языка Кобол. Объектный модуль и листинг трансляции не выводятся, трансляция проводится с целью 100
выявления ошибок, допущенных при составлении програм- мы. READY RUN О COBOL CBL> USER CBU><CTRL/Z> READY Пример 3. Трансляция программы USER.PAS ком- пилятором Паскаль. Компилятор Паскаль переводит про- грамму на язык Макро, после чего ее необходимо обрабо- тать компилятором языка Макро. В данном примере листинг программы на языке Паскаль выводится на терминал, на языке Макро — не выводится. Объектный модуль и проме- жуточная программа на языке Макро выводятся на диск DK2: в каталог (200, 2001: READY RUN OPASCAL •ОК2 [200,200] USER, TI: = USER •<CTRL/Z> READY MACRO • DK2 [200,200] USER=DK2 [200,200] USER •<CTRL/Z> READY 4.1.2. Системные макрокоманды ДОС КП При программировании на языке Макро можно использо- вать системные макрокоманды, которые делятся натри груп- пы: общесистемные макрокоманды ДОС КП, соответствую- щие системным функциям языка Бейсик-Р; макрокоманды однозадачного монитора РАФОС и макрокоманды ОС РВ. Общесистемные макрокоманды интерпретируются монито- ром ДОС КП и допустимы в программах, обрабатываемых трансляторами MACRO, МАС. Макрокоманды РАФОС до- пустимы только в программах, обрабатываемых транслято- ром MACRO, макрокоманды ОС РВ — трансляторомМАС. При выполнении такой макрокоманды соответствующая ис- полняющая система RFS.RTS или ORV.RTS заменяет ее идентичной по функциям общесистемной макрокомандой или группой макрокоманд, которые далее отрабатываются 10!
монитором. Это и есть собственно процесс эмуляции в ДОС КП систем РАФОС и ОС РВ. Макроопределения РАФОС и ОС РВ находятся в систем- ных макробиблиотеках SYSMAC.SML (РАФОС) и ОСМАС. SML (ОС РВ) и вызываются в программу стандартным об- разом по директиве .MCALL [61. Макроопределения общесистемных макрокоманд на- ходятся в префиксном файле COMMON.MAC. Если обще- системные макрокоманды используются в программе, то он должен следовать первым в списке входных файлов в ко- мандной строке компилятора МАКРО. Например, если программа USER.МАС использует общесистемные макро- команды, то ее трансляция осуществляется следующим об- разом: READY MACRO • USER= COMMON, USER » или ready ____ MAC MAC> USER*COMMON, USER MAO 4.2. РАБОТА С БИБЛИОТЕКАМИ Как указывалось выше, в ДОС КП предусмотрена возмож- ность работы с двумя типами библиотек: макробиблиотека- ми и библиотеками объектных модулей. В макробиблиотеку включают наиболее часть исполь- зуемые макроопределения. В этом случае отпадает необ- ходимость описывать такие макроопределения в исходной программе иа языке Макро. Задание имени соответствую- щего макроопределения в директиве .MCALL [6] обеспечи- вает его включение в текст программы при трансляции, а следовательно, и порождение макрорасширения при обра- ботке макрокоманды. Аналогично обстоит дело и с объектными модулями. В библиотеку объектных модулей включаются часто исполь- зуемые модули. При компоновке загрузочной программы до- статочно указать имя соответствующей библиотеки. Вклю- чение в программу необходимых модулей производится либо путем явного указания имен модулей, либо автомати- чески при разрешении глобальных ссылок. Последнее обес- печивается наличием в составе библиотек объектных моду- лей таблицы точек входа, которая содержит все символи- 102
ческие имена, определенные в модулях, входящих в библио- теку как глобальные, и на которые осуществляется переда- ча управления. При трансляции программ на языке Макро системные макроопределения выбираются из системной макробибли- отеки: SYSMAC.SML — для режима РАФОС, OCMAC.SML — для режима ОС РВ. Имя системной макробиблиотеки в командной строке не задается, требуемая библиотека выбирается по умолча- нию. При необходимости возможно создание дополнительных макробиблиотек и включение в них требуемых макроопре- делений. Для использования дополнительной макробибли- отеки в командной строке компилятора языка Макро сле- дует указывать имя входной макробиблиотеки явным обра- зом с ключом /М для режима РАФОС или /ML для режима ОС РВ. Аналогично при компоновке программ для разрешения глобальных ссылок после просмотра заданных объектных мо- дулей просматриваются системные библиотеки объектных модулей: SYSLIB.OBJ — для режима РАФОС, SYSLIB.OLB — для режима ОС РВ. При необходимости работы с дополнительными библио- теками объектных модулей их следует задавать явно с ис- пользованием при компоновке соответствующих ключей. В табл. 4 приведены характеристики библиотек. Таблица 4. Характеристики библиотек Характеристики библиотек Режим РАФОС ОС РВ Макробиблио- теки: ИМЯ расширение имени нмя - расширение имени системная дополнитель- ные SYSMAC Любое .SML .МАС ОСМАС Любое .SML .MLB Библиотеки объектных модулей: системная дополнитель- ные ИМЯ расширение имени ИМЯ расширение имени SYSLIB Любое .OBJ .OBJ SYSLIB Любое .OLB .OLB 103
Макробиблиотеки используют трансляторы MACRO (ключ /М) и МАС (ключ ML). Библиотеки объектных модулей используют компоновщик LINK (для библиотеки Фортран задается ключ /F) и построитель задач ТКВ (ключ /LB). Для работы с библиотеками в ДОС КП предусмотрены две программы: LIBR — программа-библиотекарь режима РАФОС и LBR — программа-библиотекарь режима ОС РВ. Программы LIBR и LBR загружаются по команде RUN: RUN © LIBR или RUN © LBR или по команде CCL: LIBR LBR После загрузки выдается запрос-подсказка «*» — для LIBR или «LBR» — для LBR, и программа переходит в со- стояние ожидания приема командной строки, которая имеет следующий формат: выхфг, выхф2 = вхф2, вхф2.фхфп где выхфг — спецификация выходного библиотечного файла; выхф2 — спецификация файла листинга; вхф} — спецификация входных файлов. В качестве входных файлов задаются исходные файлы на языке Макро — при работе с библиотеками макроопределений, объект- ные файлы или файлы библиотек объектных модулей — при работе с библиотеками объектных модулей. В спецификации файлов могут входить ключи, задаю- щие режимы работы с библиотеками. Примеры работы программы LIBR Вызов программы LIBR: READY RUN LIBR ♦ 1. Создать библиотечный файл MYLIB.OBJ и включить в него модули: MYMOD1.OBJ, MYMOD2.OBJ, MYMOD3. OBJ: * MY LIB = MY MODI ,MY M0D2.MY M0D3 2. Включить в библиотеку MYLIB.OBJ модуль MY- MOD4.OBJ, сохранив в ней все ранее включенные модули: * MYLIB = MYL1B.MYM0D4 I Л4
3. Удалить из библиотеки MYLIB модули MYM0D1, MYMOD2: * MYLIB = MYLIBfD МОДУЛ Ь?Л1 Y MODI МОДУ ЛЬ? MY MOD 2 МОДУЛЬ?<СД> * 4. Извлечь модуль MYM0D3 из библиотеки MYLIB и занести его в файл MYM0D3 на диск DK2: в каталог [200, 2001: * DK2:[200, 200]MY M0D3 = MYL1B/E MM$?GLNAM ИМЯ?<СЯ> * В ответе на вопрос ИМЯ? задается имя модуля, указан- ное в директиве TITLE, или имя любой точки входа в мо- дуль. 5. Удалить из библиотеки MYLIB глобальные точки входа: ENTRY1, ENTRY2: MYLIB = = MYL1B!G UM$?ENTRY1 HMfl?ENTRY2 ИМЯ?<СЯ> 6. Включить в библиотеку MYLIB новый модуль MY MOD5 и заменить в этой же библиотеке модуль MYMOD4 другим модулем с тем же именем: * MYLIB = MYLIB, MYM0D5, MYM0D4/R * Аналогично задаются командные строки программы LBR. 4.3. КОМПОНОВКА ПРОГРАММ Компоновка программ представляет собой процесс построе- ния из объектных модулей, полученных в результате транс- ляции, программы в формате загрузки, которая может быть вызвана для выполнения по команде RUN или по соответ- ствующей команде CCL. В компоновке могут участвовать объектные модули, выбираемые из соответствующих библи- отек. В ДОС КП компоновка программ выполняется при по- мощи одного из двух компоновщиков: LINK — для получе- ния загрузочной программы в формате РАФОС (формат .SAV) или ТКВ — для получения загрузочной программы в формате ОС РВ (.TSK). 105
4.3.1. Структура загрузочных программ Программы в формате загрузки, получаемые в результате работы компоновщика, делятся на два типа: односегмент- ные без перекрытий и многосегментные с перекрытиями. Программы с перекрытиями создаются с целью экономии виртуального адресного пространства, общий размер ко- торого не может превышать 28 Келов для программ в форма- те РАФОС и 31 Кслово для программ в формате ОС РВ. 6 Рис. 16. Структура программы Р: а—без пере- крытий, б — с перекрытиями 32K 28К 16К Чн о RTS Неиспользуемая память В С я Например, пусть программа Р состоит из трех модулей: А, размером 4 Кслова; В, размером 14 Келов; С, размером 10 Келов. Если программа построена как одиосегментная без пе- рекрытий (см. рис. 16, а), то общий объем виртуального адресного пространства программы составляет 28 Келов. Если же модули В и С независимы, т. е. не взаимодейст- вуют друг с другом, а вызываются поочередно из модуля А, то программу Р можно построить с перекрытиями (см. рис. 16, б). В этом случае программа состоит из трех сегментов А, В, С (в нашем примере имена сегментов соот- ветствуют именам составляющих их модулей). В программах с перекрытиями один из сегментов (в нашем случае А) должен всегда присутствовать в памяти. Такой сегмент на- зывается корневым (ROOT). Остальные сегменты (сегменты В и С) могут находиться на диске и загружаться в память по мере необходимости, перекрывая друг друга. Такие сег- менты носят название сегментов перекрытий. В общем случае структура программы с перекрытиями может быть представлена в виде дерева (рис. 17). 106
Структура программы, соответствующая дереву, изо- браженному на рис. 17, приведена на рис. 18. Совокупности сегментов, находящихся в памяти одно- временно при выполнении программы, составляют отдельные пути загрузки. Так, для приведенного выше дерева допу- стимыми являются следующие пути: ROOT, А, Ах, Alt ROOT, А, А,, А,, ROOT, А, А, ROOT, В, Вл и т. д. СИ С12 C2I С22 I , I с _J В1 В2 ROOT Рис. 17. Дерево перекрытий д L Сегменты, находящиеся в узлах дерева, называются ли- стьями. Структура перекрытий определяется пользователем при построении программы и описывается для компоновщика специальным образом. При выборе структуры программы необходимо учиты- вать следующие факторы. Взаимосвязи между сегментами. Сегменты перекрытий, находящиеся на разных путях загрузки, должны быть ло- гически независимыми. Обращения таких сегментов друг к другу недопустимы, обмен данными между ними возможен через общие области, резервируемые в сегментах нижних уровней. Размер программы. Экономия виртуального адресного пространства программы, достигаемая за счет образования перекрытий, позволяет составлять программы, превышаю- щие по размеру 31 Кслово. Время выполнения программы. При образовании пере- крытий время выполнения программы увеличивается за счет необходимости дополнительных обращений к дискам для загрузки сегментов перекрытий. 107
Каждый сегмент состоит из одного или нескольких мо- дулей, полученных в результате их раздельной трансляции. В ДОС КП допускается компоновка сегментов из модулей, полученных в результате работы различных компиляторов, например МАКРО и Фортран, МАКРО и Кобол и т. д. Вза- имодействие модулей, исходные программы которых были составлены на различных языках программирования, осу- ществляются через оператор CALL, передача параметров осуществляется через регистр 5 [10], обмен данными — че- рез общие области (например, COMMON для языка Фортран). 4.3.2. Программные секции Программные модули состоят из программных секций. Сек- ционирование может быть явным, т. е. задается соответст- вующими средствами языка, на котором составляется про- грамма (например, директива .PSECT в языке Макро) [6], или неявным, что предусматривает наличие в программе одной неименованной секции. Детально атрибуты секций для языка Макро рассмотре- ны в [6]. Эти атрибуты учитываются при секционировании и для других языков программирования и обрабатываются при компоновке программ, которая практически сводится к компоновке программных секций, составляющих модули. Особое значение при компоновке имеют атрибуты, оп- ределяющие тип секции — локальная (LGL) или глобаль- 108
ная (GBL). Для локальных секций с одним и тем же име- нем память выделяется в каждом сегменте, в котором встре- чаются такие секции. Для глобальных секций с одним и тем же именем, встречающихся в разных сегментах, память вы- деляется для каждого пути только в одном сегменте, кото- рый ближе к корневому. Например, пусть программа состоит из сегментов ROOT, А, В, Al, А2. В Сегментах А, А1, В определена секция COMDAT с атрибутом GBL. Память для секции COMDAT выделяется в сегментах А н В, так как эти сегменты нахо- дятся на разных путях. В сегменте А! память для COMDAT не выделяется, а при обращении к этой секции в сегменте А1 в процессе выполнения программы используется секция COMDAT в сегменте А. При размещении секций в сегментах последние упорядо- чиваются в алфавитном порядке по именам или располагают- ся в порядке их следования, если компоновщику указан спе- циальный ключ. Возможно размещение секций в заданном месте сегмента. 4.3.3. Глобальные символические имена Глобальные символические имена используются для свя- зи между отдельно транслируемыми модулями, которые мо- гут при компоновке помещаться в один и тот же или в раз- ные сегменты. Вычисление соответствующих им адресов или значений осуществляется на этапе компоновки. Этот процесс назы- вается разрешением глобальных ссылок. 4.3.4. Функции компоновщика Приведем перечень основных функций, выполняемых ком- поновщиком: связывание программных секций, находящихся в задан- ных модулях или в модулях, выбираемых из библиотек объектных модулей; вычисление перемещаемых величин; разрешение глобальных ссылок; построение сегментов и структуры перекрытий; создание карты распределения памяти и таблицы опре- деления символов STB; создание файла загрузочной программы. В результате работы компоновщика могут быть созданы три выходных файла: 109
собственно программа в формате загрузки с расшире- нием имени .SAV или .TSK; файл карты распределения памяти (загрузки), который может быть выведен на печать или на диск с расширением имени .МАР; файл таблицы определения символов с расширением имени .STB. Карта распределения памяти содержит описание струк- туры построенной программы, перечень объектных моду- лей и программных секций, входящих в сегменты, адреса сегментов и их составляющих, список глобальных симво- лов и другие данные. Таблица определения символов используется для про- грамм в формате ОС РВ при компоновке с резидентными биб- лиотеками. 4.3.5. Компоновщик LINK ’ Для компоновки объектных модулей в формате РАФОС необходимо вызывать LINK по команде RUN1 RUN © LINK или по команде CCL: LINK Программа выводит на терминал подсказку «*» и пере- ходит в состояние ожидания приема командной строки, которая имеет формат: выхф^ выхф2, выхфа = вхфх, вхф2,...вфп где выхф1 — спецификация файла программы в формате загрузки; выхф2 — спецификация файла — карты распределения памяти .МАР; выхф3 — спецификация файла — таблицы символов; вхф! .... вхфп — спецификация входных файлов — объектных модулей или библиотек объектных модулей. Если в командной строке заданы имена библиотек объект- ных модулей, то LINK пытается разрешить неразрешен- ные глобальные ссылки, оставшиеся после обработки объектных модулей, заданных в строке через указанные библиотеки. Если и после этого остаются неразрешенные ссылки, то просматривается библиотека SYSLIB.OBJ, на- ходящаяся в каталоге [1, 2] структуры общего доступа. В спецификациях файлов могут быть заданы ключи, определяющие процесс компоновки программ. Организация работы с перекрытиями. Для каждого сегмента перекрытия в виртуальном адресном пространстве ' ’О
программы отводится свой район. Районы нумеруются в возрастающем порядке, начиная с I. К району с одним и тем же номером может относиться несколько логически независимых сегментов, которые при обращении к ним загружаются в свой район, перекрывая находящийся в нем сегмент. Размер района равен величи- не наибольшего из сегментов, которые с ним связаны. Принадлежность сегмента к району задается ключом /0: п, где п — номер района. Ключ/0 задается в специфика- ции входного файла, который представляет собой послед- ний модуль из группы модулей, составляющих сегмент. Например: Ml, М2, M3/0:l, Pl, Р2, Р2/0:1 в правой части входной строки означает, что модули Ml, М2, М3 составляют сегмент перекрытия, для которого отво- дится район 1. Этот же район отводится для другого сег- мента, состоящего из модулей Pl, Р2. Корневой сегмент со- стоит из модулей, спецификация файла которого следует первой в правой части командной строки. READY LINK •[150.150}PROG.LP=ROOT/F/K:28. / •A/О: 1 • В/0:1 1 район 1 • С/О:1 • А 1/0:2 • А2/О:2 • 81 /0.2 , район 2 • 82/0:2 • С1/0.2 • С2/0.2 • All /0:3 • .А 12/0:3 - ъ /z/u. и •С21/0:3 • 022/0:3 . •// •<CTRL/Z> READY Рис. 19. Пример работы програм- мы LINK Пример работы программы LINK. Пример на рис. 19 иллюстрирует процесс построения программы PROG.SAV, структура которой приведена на рис. 18.
Файл программы в формате загрузки выводится в ката* лог [150, 150] структуры общего доступа, карта загрузки — на АЦПУ. Файл PROG.STB не создается. Для выполнения программы необходима минимальная память 28 Келов, для разрешения глобальных ссылок ис- пользуется библиотека SYSLIB.OBJ. 4.3.6. Построитель задач ТКВ Построитель задач ТКВ, применяемый в ДОС КП для ком- поновки программ в формате ОС РВ, имеет ряд дополнитель- ных возможностей, отсутствующих в программе LINK, и ряд отличий. К дополнительным возможностям ТКВ от- носится работа с разделяемыми общими областями и рези- дентными библиотеками. Основное отличие ТКВ от LINK состоит в способе задания структуры перекрытий. Для этой цели в ТКВ предусмотрен специальный язык описания пере- крытий, на котором задаются файлы описания перекрытий (ФОП-файлы), являющиеся входными при компоновке про- грамм. В этом же языке предусмотрена возможность управ- ления размещением программных секций путем явного указания местоположения секций в структуре программы. При компоновке программ для разрешения неопределен- ных ссылок может быть использована системная библиоте- ка ОС РВ SYSLIB.OLB, которая по умолчанию выбирает- ся из каталога [1,1] структуры общего доступа. Вызов ТКВ. Вызов ТКВ осуществляется по команде RUN: RUN ® ТКВ или по команде CCL: ТКВ После загрузки ТКВ выводит запрос-подсказку 'ТКВ> * и переходит в состояние ожидания приема командной стро- ки, которая может быть представлена в одном из двух фор- матов: /) выхфг, выхфа, выхф3 = вхф^ вхфа, .вхфп ИЛИ . 2) выхфх, выхфг, выхф3 = вхф Если командная строка представлена в формате 1, что характерно для построения односегментных программ, то входные файлы, находящиеся в правой части строки, пред- ставляют собой объектные модули или библиотеки объект- ных модулей. В формате 2 входной файл представляет собой 112
ФОП-файл. Этот формат применяется при построении мно- госегментных программе перекрытиями, а ФОП-файл, имею- щий расширение имени .ODL, содержит описание струк- туры программы. Выходные файлы: М1хф1 — файл загрузочной программы в формате .TSK; выхфг — файл карты распределения памяти (.МАР); выхфз — файл таблицы символов (.STB). Задание любого из выходных файлов необязательно. Пример вызова Т К В. Построение загрузоч- ной программы MYPROG.TSK из объектных модулей MYPRO1.OBJ и MYPRO2.OBJ. Карта распределения па- мяти выводится на печать, файл .STB не создается: READY ткв ТКВ >MYPROG, LP: = MYPRO1. MYPRO2 ТКВ>// ТКВ> <CTRL/Z> READY В спецификациях файлов задаются ключи ТКВ, опре- деляющие режим компоновки. После командной строки мо- гут быть заданы дополнительные параметры. Признаком необходимости задания параметров является ввод знака «/» в ответ на запрос-подсказку ТКВ. В ответ выводится требование о вводе параметров, например: READY ткв TKB УМ YPROG sMYPROG ТКВ>/ ПАРАМЕТРЫ: ТКВ /1-й параметр ТКВ >2-й параметр ТКВ И READY Признаком конца ввода параметров служат символы «//>, набираемые в ответ на подсказку «ТКВ». Разделяемые общие области и резидентные библиотеки. Разделяемая общая область и резидентная библиотека по существу представляют собой единое понятие с одним раз- личием: общая область содержит данные, к которым могут 113
обращаться несколько различных программ, а резидентная библиотека — программы, используемые различными не- зависимыми программами в качестве подпрограмм. Разделяемые области предназначены для хранения дан- ных, которые подлежат совместному использованию раз- ными программами, или для обмена данными между про- граммами. Например, программа А может писать данные в разделяемую область DATA, а программа В — читать дан- ные из этой области. Резидентные библиотеки обычно составляются из под- программ, которые подлежат совместному использованию Рис. 20. Использование подпрограмм: а — включение SIN и COS в программы А, В, С; б — включение SIN и COS в резидентную библиотеку различными программами. Программы, составляющие ре- зидентную библиотеку, должны быть реентерабельными, к иим возможен доступ только по чтению. Здесь и далее, когда мы говорим о программах, исполь- зующих разделяемые области или резидентные библиоте- ки, мы имеем в виду загрузочные программы в формате .TSK, работающие в рамках разных заданий. Основное преимущество работы с разделяемыми обла- стями и резидентными библиотеками состоит в значительной экономии физической оперативной памяти, которая улучша- ет производительность всей системы в целом. Разделяемая область или резидентная библиотека раз- мещается в памяти отдельно от использующих их программ. Для нескольких программ достаточно иметь одну копию раз- деляемой области или библиотеки. На рис. 20 приведен пример, когда подпрограммы SIN и COS включаются в каждую использующую их программу (рис. 20, а) и в рези- дентную библиотеку (рис. 20, б). Работа с резидентной библиотекой является для програм- мы полностью «прозрачной». Это означает, что обращение к резидентной библиотеке или к данным разделяемой обла- 114
сти осуществляется по обычным глобальным ссылкам. Точки входа в резидентную библиотеку всегда являются глобаль- ными. Так, обращение программ А, В и С к подпрограммам SIN и COS (см. рис. 19) в случае а) и в случае б) одинако- вое. Однако если эти подпрограммы помещены в резидентную библиотеку, то в каждой вызывающей программе в вирту- альном адресном пространстве выделяется «адресное окно» (область виртуальных адресов), которое отображается че- рез регистры диспетчера памяти на район физической памя- ти, в котором фактически находится резидентная библиоте- ка. Размер окна может быть равен размеру библиотеки или разделяемой общей области или может быть меньше его. В последнем случае одно и то же окно поочередно отобра- жается на разные участки библиотеки или разделяемой об- ласти. Местоположение и размер окна определяются при компоновке. Если в программе используется хотя бы одна ре- зидентная библиотека или разделяемая общая область, то для нее при компоновке выделяются 2 окна. Одно окно — для отображения виртуальных адресов основной части про- граммы, другое — для отображения адресов, отведенных для резидентной библиотеки. Через одно и то же окно воз- можно отображение на различные разделяемые области или резидентные библиотеки. Организация работы с резидентны- ми библиотеками. Для работы с резидентными библиотеками (областями) необходимо следующее. 1. Построить саму резидентную библиотеку (область) при помощи ТКВ. 2. Преобразовать файл резидентной библиотеки в файл образа библиотеки .LIB при помощи программы MAKSIL. 3. Построить программы, использующие резидентные области или библиотеки. 4. Включить резидентную библиотеку (область) в систе- му при помощи программы UTILITY. 5. Загрузить программы, использующие библиотеку для выполнения. Пункты 1, 2, 4 выполняются администратором системы, остальные могут быть выполнены обычным пользователем. Рассмотрим указанные процедуры несколько подробнее. Построение резидентных библио- тек (областей). При построении резидентной биб- лиотеки (области) обязательно задание двух выходных фай- лов — .TSK и .STB. Эти файлы могут помещаться на лю- бом устройстве и в любом каталоге. Однако их рекомендует- ся размещать на устройстве LB:, т.е. в структуре общего 115
доступа, в каталоге (1, 1], откуда они извлекаются по умол- чанию при компоновке, если используется параметр LIBR или COMMON (см. ниже). Резидентная библиотека (область) может быть построе- на как позиционно-независимая или как абсолютная. В первом случае в спецификации файла .TSK указы- вается ключ /Р1. При разработке программ, входящих в биб- лиотеку, необходимо придерживаться правил составления позиционно-независимых программ [6]. Позиционная неза- висимость означает возможность создания окна в программе, использующей библиотеку в любом месте своего виртуаль- ного адресного пространства. Прн построении позиционно не- зависимой библиотеки необходимо использовать параметр: PAR = имя , где имя означает имя района физической памяти, который библио- тека будет занимать при выполнении. Должно совпадать с именем файла .TSK и .STB. Задается по причинам формального характера для совместимости с ОС РВ. Для абсолютной библиотеки адресное окно создается в строго определенном месте программ, использующих биб- лиотеку. Виртуальный адрес начала окна и его размер за- даются параметром: PAR = имя : адр [: разм] где имя — см. позиционно-независимую библиотеку; адр — восьмеричный начальный адрес окна в программе, использующей библиотеку, должен быть кратен 20000в; разм — длина окна, восьмеричное число. Если отсутствует, то размер окна равен фактической длине библиотеки. Начальный адрес окна связан с соответствующим реги- стром диспетчера памяти, через который осуществляется отображение виртуальных адресов окна на физические адре- са библиотеки. Отсюда вытекает требование кратности на- чального адреса окна 20000в, т. е. 4 Кслова. Например, начальный адрес окна 140000в означает, что отображение адресов окна будет производиться через 6-й регистр диспет- чера памяти. Прн построении резидентной библиотеки обязательно задание ключа /—HD, что означает построение файла .TSK без заголовка, а также параметра STACK = 0, что означает отсутствие стека в библиотеке. Пример построения резидентной библиотеки. В качестве примера построения рези- дентной библиотеки используем подпрограмму перестанов- ки двух строк символов одинаковой длины. Признаком кон- ца строки является нулевой байт. 116
Предположим, что программа, приведенная на рис. 21, занесена в каталог [1,2] структуры общего доступа под име- нем R ЕР .МАС при помощи редактора. ENABL LC TITLE REP : П/П ПЕРЕМЕНЫ СТРОК МЕСТАМИ ОБРАЩЕНИЕ К ПОДПОГРАММЕ: • MOV PARAM. R5 ; АДРЕС ТАБЛИЦЫ ПАРАМЕТРОВ CALL REP ; ВЫЗОВ REP . ПРОДОЛЖЕНИЕ ПРОГРАММЫ , param: •WORD АДР1 ; АДР1 - АДРЕС 1-Й СТРОКИ •WORD АДР2 . АДР2 - АДРЕС 2-Й СТРОКИ • GLOBL REP ; ОПРЕДЕЛЕНИЕ ГЛОБАЛЬНОЙ ТОЧКИ ВХОДА REP* MOV RO, - (SP) , СОХРАНЕНИЕ РЕГИСТРОВ MOV R1, — (SP) ;R0, R1,R2 MOV R2, - (SP) MOV(R5) + ,R1 , АДРЕС ПЕРВОЙ СТРОКИ MOV(R5)e.R2 ; АДРЕС ВТОРОЙ СТРОКИ ЦИКЛ ПЕРЕСЫЛКИ ю TSTBR1 ; КОНЕЦ СТРОКИ BEQ RET ; ДА - ВЫХОД MOVBPRI, R0 ; БАЙТ В ПРОМЕЖУТОЧНЫЙ БУФЕР MOVBSR2, (R11+ ; ИЗ 2-Й В 1-Ю MOVB RO, (R2) + ; ИЗ БУФЕРА ВО ВТОРУЮ BR 10 RET: MOV (SP) + , R0 ВОССТАНОВЛЕНИЕ MOV (SPH- , R1 ; РЕГИСТРОВ MOV (SP)+ . R2 ; RO, R1, R2 RETURN ;ВЫХОД END Рис. 21. Текст подпрограммы перемены строк местами Для создания резидентной библиотеки необходимо вы- полнить: 1) трансляцию программы READY MAC MAC >/?EP, LP: = PEP MAC ><CTRL/Z> READY 2) компоновку программы в позиционно-независимую резидентную библиотеку, в файлы REP.TSK и REP.STB 117
(которые создаются на устройстве LB:, т. е. в каталоге [1,И структуры общего доступа); файл RЕР.МАР не созда- ется. READY ТКВ TKG>LB:REPLIB/-HD/PI„LB:REPLIB=REP ТКВ>/ ПАРАМЕТРЫ: ТКВ>Я4/?=Я£РД/В ТКВ>$ТАСК=О ТКВ>// ТКВ ><CTRL/Z> READY Примечание- Если необходимо построить абсолютную резидент- ную библиотеку, то в командной строке не следует задавать ключ /Р1, а параметр PAR можно задать следующим образом: PAR «= REPLIB : 140 000 где 140 000 — адрес начала окна в вызывающей программе. 3) создание библиотечного файла. Библиотечный файл создается программой MAKSIL в каталоге [0, 1] структуры общего доступа из входного файла REPLIB.TSK. В файл библиотеки может быть включена таблица символов REPLIB.STB для возможной корректировки библиотеки по символическим именам. READY RUNMACSIL MACSILV1.0 ИМЯ БИБЛИОТЕКИ ? REPLIB ВХОДНОЙ ФАЙЛ ? LB:REPLIB ВКЛЮЧАТЬ STB?<C7?> ВЫХОДНОЙ ФАЙЛ ? REPLIB REPLIB.TSK ПЕРЕИМЕНОВАНА В REPLIB. TSK <40> READY В результате работы MAKSIL в каталоге [0,1] структуры общего доступа создан файл REPLIB.LIB, который далее должен быть установлен в системе программой UTILITY в качестве резидентной библиотеки. Кроме того, на устрой- стве LB: остались файлы REPLIB.TSK и REPLIB.STB. Необходимо отметить, что занесение библиотеки в ката- лог [0, 1] не обязательно. Если файл .LIB необходимо раз- местить на физическом устройстве в конкретном каталоге, то их следует указать в ответе на вопрос MAKSIL о выход- ном файле, как обычно. 118
Компоновка программы с резидент- ной библиотекой. Программа использующая ре- зидентную библиотеку, может иметь достаточно сложную структуру с перекрытиями. При компоновке такой програм- мы обязательно задание хотя бы одного из следующих пара- метров: LIBR 1 , дг , COMMON RESLIB RESCOM = вхф/кд[: рег] где имя — имя файла резидентной библиотеки, т. е. имя файлов с расширениями .TSK и .STB, находящимися на устрой- стве LB:; вхф — спецификация файла резидентной библиотеки, вклю- чающая нмя устройства, каталог, имена файлов с рас- ширениями .TSK и .STB, которые должны находить- ся иа данном устройстве и в заданном каталоге; кд — код доступа к библиотеке (области): RW — по чтению/ записи, RO — только по чтению; рег — номер первого из регистров диспетчера памяти, выделяе- мых для отображения адресов окна программы при ра- боте с библиотекой, число в интервале от 1 до 7. При работе с одной и той же позиционно-независимой библиотекой в разных программах могут быть исполь- зованы разные регистры диспетчера памяти. При ра- боте с абсолютной библиотекой для всех программ ре- гистры одни и те же. Первый регистр должен соответ- ствовать начальному адресу окна, указанному при по- строении абсолютной библиотеки. Параметры COMMON и RESCOM задаются при компо- новке программы с резидентной общей областью, LIBR и RESLIB — с резидентной библиотекой. Различие между COMMON, LIBR и RESLIB, RESCOM состоит в том, что первая пара параметров предусматривает наличие файлов резидентной библиотеки .TSK и .STB при компоновке про- граммы на устройстве LB: вторая — на заданном уст- ройстве и в заданном каталоге. Компоновка программы с резидентной библиотекой (об- ластью) осуществляется при помощи файла библиотеки .STB, используемого для разрешения глобальных ссылок. На рис. 22 приведена общая схема построения и запуска программ, взаимодействующих с резидентной библиотекой. Установка резидентных библиотек. Перед загрузкой первой программы, использующей рези- дентную библиотеку, библиотека должна быть установле- на в системе. Установка резидентных библиотек (областей) идентична установке RTS (см. ч. III, гл. 1) и выполняется П9
компоновка прогрднмтк с резидентной библиотекой Построение резидентной библиотеки Рис. 22. Общая схема работы с резидентной библио- текой 120
администратором системы при помощи программы UTILITY Для этих целей используется команда ADD LIBRARY вхф [/ключ...[/ключ}} где вхф — спецификация файла резидентной библиотеки, вклю- чающая устройство, учетный номер и имя файла библио- теки. Ключи: ADDR: п — иомер страницы памяти размером в 1 Ксло- во, начиная с которой загружается библиотека, где п— число в интервале от 1 до 124. Заданная страница должна находиться в пользовательской области (ПОЛЬЗОВА- ТЕЛЬ). Если ключ не указан, то адрес для загрузки библиотеки выбирается автоматически; /STAY — резидентная библиотека все время находит- ся в памяти. По умолчанию библиотека выгружаемая. Примеры установки резидентных библиотек (областей): READY RUN UTILTY UTILTY V1.0 #ADD LIBRARY REPLIB/ADDR: 120/STA Y HADD LIBRARY DK1:[2,2] COMMON/ADDR: 100/REMOVE #<CTRL/Z> READY В протоколе SYSTAT имеется раздел, описывающий состояние установленных резидентных библиотек. Этот раздел можно получить на терминале по команде READY SYS/L Пример построения программы с использованием резидентной библи- отеки. Программа использует резидентную библиоте ку, подготовленную в предыдущем примере. Вызывающая программа содержит две строки символов, которые выво- дятся иа терминал, затем меняются местами и снова выво- дятся на терминал. Текст программы приведен на рис. 23. Подготовка программы включает следующие этапы: 1) ввод программы и создание файла DEM.MAC при по- мощи редактора; 121
.ENABL LC •TITLE DEMO ; ДЕМОНСТРАЦИЯ РАБОТЫ С РЕЗИДЕНТНОЙ БИБЛИОТЕКОЙ .GLOBL REP ; ВЫЗОВ МАКРОКОМАНД ОС РВ - QIOWSS, EXIT0S •MCALL QIOWOS, EXITOS START: QIOWQS, IO.WVB, 5,„„ <STR1, 56., 40> ; ВЫВОД СТРОК MOV #TABADR, R5' ; АДРЕС ТАБЛИЦЫ ПАРАМЕТРОВ CALL REP QIOWOS IO.WVB, 5,„„<STR1, 56„ 40> ; ВЫВОД СТРОК EX ITOS ; ВЫХОД TABADR: .WORD STR1 ; АДРЕС 1-Й СТРОКИ •WORD STR2 ; АДРЕС 2-Й СТРОКИ STR1: ASC11 /ПЕРЕСТАНОВКА СТРОК МЕСТАМИ/ <15><12> STR2: ASCII /ДЕМОНСТРАЦИЯ БИБЛИОТЕК /<15><12> .END START Рис. 23. Программа демонстрации работы с резидентной библио- текой 2) трансляцию программы: READY МАС МАО DEM, LP =DEM MACXCTRL/Z> READY 3) компоновку программы с резидентной библиотекой REPLIB, файлы которой REPLIB.TSK и REPLIB.STB находятся на устройстве LB: файлы DEM.MAP и DEM.STB не создаются. Регистр диспетчера памяти выбирается автоматически: READY ткв ТКВ>ОЕМ=ОЕМ ткв>/ ПАРАМЕТРЫ: TKB>L,W? REPUB:R0 ТКВ>// TKB><CTRL/Z> READY Выполнение программы, использу- ющей резидентную библиотеку. Перед 122
выполнением программы администратор должен установить резидентную библиотеку программой UTILTY: READY RUN UTILTY it ADD LIBRARY REPLIB/ADDR:120 #<CTRL/Zy READY Установка резидентной библиотеки идентична установ- ке RTS и не означает загрузку библиотеки в память. Уста- новленная библиотека загружается в память при первом обращении к ней и остается в памяти до тех пор, пока с ней взаимодействует хотя бы одна программа. Остальное вре- мя библиотека может находиться на диске. После установки библиотеки может быть загружена вза- имодействующая с ней программа: READY RUN QDEM ПЕРЕСТАНОВКА СТРОК МЕСТАМИ ДЕМОНСТРАЦИЯ БИБЛИОТЕК ДЕМОНСТРАЦИЯ БИБЛИОТЕК ПЕРЕСТАНОВКА СТРОК МЕСТАМИ READY Общие замечания по работе с ре- зидентными библиотеками. Использова- ние резидентных библиотек позволяет существенно повы- сить эффективность функционирования всей системы ДОС КП в целом. Резидентные библиотеки широко используются при работе с системой управления данными (СУД), кото- рая в свою очередь используется при работе программ на языках Кобол, Бейсик-Р2, РПГ-П, при работе ФОБРИН-2. В составе СУД пользователям поставляются две стандартные резидентные библиотеки: одна — для ра- боты с файлами с последовательной организацией, другая— для работы с файлами с последовательной, относительной и индексной организацией. Структура перекрытий в ТКВ. При построении много- сегментных программ предварительно должен быть создан ФОП-файл. В правой части командной строки ТКВ указы- 123
вается спецификация ФОП-файла с ключом /МР. Стандарт- ное расширение имени ФОП-файла — .ODL. Например: READY ТКВ ТКВ > USER = USER/MP ТКВ >// ТКВ > < CTRL/Z > READY Для построения программы USER.TSK используется файл USER.ODL, находящийся в текущем каталоге струк- туры общего доступа. Файл .ODL создается программой- редактором и состоит из команд языка описания перекрытий. Команды языка описания пере- крытий. ФОП-файл содержит по крайней мере одну команду, которая задает собственно всю структуру пере- крытий. Описание структуры перекрытий указывается спе- цификациями файлов объектных модулей или библиотек объектных модулей, которые составляют сегменты или вклю- чаются в сегменты при использовании библиотек. В сегменты включаются названные модули или модули, отбираемые из библиотек при разрешении глобальных ссы- лок. При задании библиотеки используется ключ /LB, для того чтобы программа ТКВ смогла отличить ее от объект- ного модуля. Обычно в спецификациях файлов, находящихся в ФОП- файле, расширения имен файлов не задаются, так как пред- полагается расширение .OBJ для объектных модулей, .OLB — для библиотек. Описание структуры программы осуществляется при помощи спецзнаков: «—» (тире) — конкатенация заданных модулей в один сегмент; «,» (запятая )— разделяет сегменты перекрытий. Каж- дый сегмент может состоять из одного илн нескольких мо- дулей, разделенных знаками «—». «(» и «)» (скобки) — включают структурные элементы, на- ходящиеся на одном уровне при построении многоуровне- вого дерева перекрытий; «*» — указатель вектора автозагрузки, рекомендуется указывать перед скобкой для обеспечения надежности за- грузки сегментов перекрытий. 124
Например, структура программы, изображенная на рис. 16, б, может быть описана в команде .ROOT следую- щим образом: .ROOT А — *(В, С) т. е. корневой сегмент А сцепляется с модулями А и В, ко- торые образуют сегменты, перекрывающие друг друга. Если в корневой или в другие сегменты необходимо включить другие модули, то их необходимо «сцепить с соответствующими, сегментами. Пусть, например, в сег- мент А должен входить модуль SUBA, а в сегменты В и С— модули SUBB и SUBC соответственно, выбираемые из библиотеки USER.OLB, находящейся на устройстве LB:. В этом случае команда .ROOT будет иметь вид: ROOT A-SUBA-*(В-LB:USER/LB:SUBB,C-LB:USER/LB:SUBC) Структура программы, соответствующая заданной команде ROOT, приведена на рис. 24. Как показывает последний пример, строка команда .ROOT может быть достаточно длинной и сложной. В це- лях упрощения задания описания структуры программы в язык описания перекрытий введена команда .FCTR, поз- воляющая задать продолжение команда .ROOT. Команде 125
.FCTR предшествует метка, которая указывается в команде .ROOT на месте структурного элемента, описываемого в команде .FCTR. Может быть задано несколько команд FCTR с использованием в каждой из них меток на последу- ющие команды .FCTR. Например, структура программы, приведенная на рис. 24, может быть описана следующим образом: ROOT A-SUBA (FSUBB, FSUBC) FSUBB: .FCTR B-FLIBB FSUBC' FCTR C-FLIBC FLIBB FCTR LB:USER/LB:SUBB FLIBC .FCTR LB:USER/LB:SUBC •END Команда .END, следующая последней, завершает файл описания перекрытий. Пример построения программы с перекрытиями. Расширим программу DEM, приве- денную на рис. 23 .ENABL LC .Title demi ; ДЕМОНСТРАЦИЯ РАБОТЫ С РЕЗИДЕНТНОЙ БИБЛИОТЕКОЙ ; И ПЕРЕКРЫТИЯМИ .GLOBL REP, SUBA ; ВЫЗОВ МАКРОКОМАНД ОС РВ - QI0W6S, EXIT0S MCALL QIOWOS. EXOTOS START: QIDMOS 10. WVB, 5,„„<STR1,56,40?; ВЫВОД СТРОК MOV TABADR, R5 CALL REP QIOWOS 10. WVB, 5,„„ <STR1,56., 40>; ВЫВОД СТРОК CALL SUBA ; ВЫВОЗ МОДУЛЯ A EXITOS TABADR: .WORD STR 1 •WORDTR2 STR1: ASCII /ПЕРЕСТАНОВКА СТРОК МЕСТАМИ/ <15X12> STR2: ASCII /ДЕМОНСТРАЦИЯ БИБЛИОТЕКИ / <15><12> •END START Рис. 25. Текст программы DEMI Программа DEMI вызывает подпрограмму SUBA, вы- водящую на печать строку текста, и вызывающую по очереди две программы SUBB и SUBC, каждая из которых выводит по строке текста. Модули DEM и SUBA составляют корне- вой сегмент, а модули SUBB и SUBC являются сегментами перекрытий. 126
Текст программы SUBA приведен на рис. 26 .ENABL LC TITLE SUBA .GLOBL SUBB, SUBC ВЫЗОВ МАКРОКОМАНД ОС РВ - QIOW0S, EXIT0S .MCALL QIOWOS. EXIT0S SUBA:: QIOWOS IO WVB, 5,„„ <STR, 13., 40> ’ ВЫВОД СТРОК CALL SUBB CALL SUBC RETURN STRf -ASCII /МОДУЛЬ SUBA/<15X12> .END Рис. 26. Текст программы SUBA Текст программы SUBB приведен на рис. 27 •ENABL LC •TITLE SUBB ; ВЫЗОВ МАКРОКОМАНД ОС РВ - QIOWOS, EXIT0S •MCALL QIOW0S, EXNT0S SUBB" QIOWOS IO. WVB, 5,„„ <STR, 13., 40> ; ВЫВОД СТРОКИ RETURN STR. .ASCII/МОДУЛЬ SUBB/ <15x12> •END Рис. 27. Текст программы SUBB Текст программы SUBC приведен на рис. 28 ENABL LC .TITLE SUBC ; ВЫЗОВ МАКРОКОМАНД ОС РВ - QIOWOS, EXNT0S .MCALL QIOWOS, EXIT0S SUBC" QIOMOS IO.WVB, 5.<STR, 13., 40> RETURN STR- .ASCII/МОДУЛЬ SUBC/<15X12> .END Рис. 28. Текст программы SUBC Перед построением программы DEMI включим програм- мы SUBB и SUBC в библиотеку USER.OLB. Предполагаем, что все файлы размещаются в текущем каталоге структуры общего доступа. Процесс создания программы DEM1 включает следующие этапы: 1) создание редактором исходных программ DEM1, SUBA, SUBB, SUBC; 127
2) трансляцию программ: READY MAC MAC >DEM1=DEM1 MAC>SUBA=SUBA MAC >SUBB=SUBB MAC >SUBC=SUBC MACXCTBL/Z> READY 3) включение программ SUBB n SUBC в библиотеку USER.OLB: «EADY LBB LBR > USERW=SUBBJBUBC LBRXCTRL/Z> READY 4) создание редактором ФОП-файла DEM1.ODL: .ROOT DEMI - UBA - «(LABI, LAB2) LABI: .FCTR USER/LB:SUBB LAB2: .FCTR USER/LB:SUBC •END 5) построение программы DEMI с использованием ре- зидентной библиотеки REPLIB, созданной в примере, при- веденном в п. 4.3.7 (регистры диспетчера памяти выбирают- ся автоматически); создается файл DEM.MAP: READY ТКВ TKB>DEM1, DEMI = DEMI/МР ткв>/ ПАРАМЕТРЫ: ТКВ > RESLIB = USER:RO ТКВ > Ц ТКВ >< CTRL!Z> READY 128
6) распечатку на LP: карты распределения памяти при помощи программы PIP: READY PIP • lp:=demi, map •<CTRL/Z> READY 7) установку резидентной библиотеки: READY UT ADD LIBRARY REPLIB/ADDR.-120 READY 8) загрузить и выполнить программу DEMI: RUN DEMI ПЕРЕСТАНОВКА СТРОК МЕСТАМИ ДЕМОНСТРАЦИЯ БИБЛИОТЕК ДЕМОНСТРАЦИЯ БИБЛИОТЕК ПЕРЕСТАНОВКА СТРОК МЕСТАМИ ВЫВОДИТСЯ модулем DEM1 МОДУЛЬ А - выводится модулем SUBA МОДУЛЬ В ~ выводится модулем SUBB МОДУЛЬ С — Выводится модулем SUBC 5 Зак. 4S4 129
Часть III ФУНКЦИИ И ВОЗМОЖНОСТИ АДМИНИСТРАТОРА СИСТЕМЫ Привилегированные пользователи, составляющие груп- пу администратора системы, наделены более широкими пол- номочиями для управления работой остальных пользова- телей и несут ответственность за эффективность и работо- способность системы. В главах этой части описаны основные функции, выполняемые администратором, и возможности, которые система предоставляет дополнительно по сравне- нию с непривилегированными пользователями. Глава 1 ПОДГОТОВКА СИСТЕМЫ К РАБОТЕ Подготовка системы к работе в режиме разделения вре- мени выполняется администратором системы, ответственным за обеспечение совместной работы всех пользователей си- стемы, эффективное использование ресурсов вычислитель- ного комплекса и работоспособность системы. Подготовка к работе состоит из нескольких этапов. Некоторые из них для каждой конкретной системы нужно выполнить только один раз, другие этапы администратор системы должен выполнять перед каждым сеансом разделе- ния времени. На первом этапе (этапе генерации системы) администратор выполняет: построение монитора разделе- ния времени в соответствии с конфигурацией имеющихся технических средств и требованиями, предъявляемыми к системе; компоновку исполняющей системы — интерпрета- тора языка Бейсик-Р; построение программ, составляющих системную библиотеку ДОС КП; построение дополнитель- ных программных средств и систем программирования, 130
которые необходимы для работы пользователей. Состав программных средств выбирается администратором систе- мы с учетом задач, решаемых в выбранной области приме- нения. Перед выполнением генерации системы администратор системы должен продумать конфигурацию необходимых тех- нических и программных средств, определить рабочую дис- ковую структуру, продумать размещение программных компонентов по дискам и каталогам. Например, при работе с диском большого объема размещение всех системных биб- лиотек под одним учетным номером вызывает значительное увеличение размера каталога файлов. Это приводит к за- метному снижению производительности системы из-за су- щественного увеличения времени поиска по каталогу. После генерации монитора и исполняющей системы Бей- сик администратор должен выполнить инициализацию ДОС КП. На этом этапе администратор системы может выбрать для работы конкретный монитор из сгенерированных ра- нее мониторов разделения времени, настроить систему для работы с устройствами, имеющими на общей шине нестан- дартные адреса или нестандартные векторы прерываний [10], определить параметры, используемые в системе по умолчанию, и характеристики отдельных устройств. На последнем этапе подготовки системы к работе, кото- рый администратор системы должен выполнять перед каж- дым сеансом разделения времени, необходимо загрузить систему с системного диска, выполнить запуск режима раз- деления времени и установить начальные характеристики системы, т. е. определить системные параметры, которые хранятся в таблицах монитора в оперативной памяти, а не на диске и, следовательно, не сохраняются после оконча- ния сеанса разделения времени. Деятельность администратора системы имеет значение на всех этапах подготовки системы к работе, и ошибки, допущенные на каждом из этих этапов, могут усложнить дальнейшее управление системой или сделать невозможным совместную эффективную работу пользователей системы. Некоторые системные параметры могут изменяться на всех этапах подготовки системы к работе, но ограничения на изменяемые параметры определяются на предшествую- щих этапах. Рассмотрим, например, такой параметр, как максимальное количество заданий, обрабатываемых систе- мой одновременно (JOBMAX), который может изменяться на всех этапах подготовки системы к работе, а также опе- ративно, в режиме разделения времени. 5* 131
ДОС КП может обслуживать параллельно не более 63 заданий. Прн генерации монитора администратор опреде- ляет максимальное количество заданий для данной системы. В пределах этого максимума число заданий может быть из- менено на этапе инициализации системы. Это значение явля- ется пределом количества обслуживаемых заданий до тех пор, пока оно не будет изменено в режиме определения си- стемных параметров, используемых по умолчанию. Число заданий может быть затем изменено при запуске режима разделения времени, однако новое значение этого параметра хранится не на системном диске, а в оперативной памяти, поэтому оно сохраняется только в течение данного сеанса разделения времени и теряется после завершения работы системы. Администратор системы во время определения на- чальных характеристик системы может с помощью програм- мы UTILTY изменять максимальное количество заданий, работающих в системе, но уже в пределах, определенных для этого параметра на предыдущих этапах подготовки си- стемы. Заданное число заданий может выполняться в системе параллельно в режиме разделения времени, если обеспече- но достаточное дисковое пространство для свопинга всех за- даний, т. е. общий объем всех файлов свопинга в дисковых блоках по 512 байт, используемых в системе, должен быть больше чем 4 X tn X п, где т — количество заданий, ко- торое может обслуживать система (JOBMAX); п. — макси- мальный размер задания в Келов (SWAPMAX). Приведенный пример дает представление о возможности легкого изменения основных параметров системы на любом этапе подготовки системы к работе и демонстрирует иерар- хию этапов подготовки системы к работе. 1.1. ГЕНЕРАЦИЯ СИСТЕМЫ Генерация рабочей системы содержит следующие основные этапы: загрузку с дистрибутивного носителя программы ини- циализации ДОС КП — INIT.SYS; подготовку диска для подсистемы генерации; копирование подсистемы генерации с дистрибутивной магнитной ленты иа диск; инициализацию подсистемы генерации; диалог программы генерации для определения конфигу- рации вычислительного комплекса и основных параметров и характеристик системы; 132
построение в пакетном режиме монитора разделения вре- мени и интерпретатора языка Бейсик-Р; запуск сгенерированной рабочей системы в режиме раз- деления времени; построение системной библиотеки, дополнительных про- граммных компонентов и систем программирования. Процесс генерации рабочей системы выполняется с ди- стрибутивного носителя, в качестве которого использует- ся магнитная лента. В исходном виде ДОС КП размещается на трех дистрибутивных магнитных лентах с метками SYSGEN, SYSLB1 и SYSLB2. Эти ленты содержат файлы для генерации следующих программных компонентов: SYSGEN — монитора разделения времени и интерпре- татора языка Бейсик-Р системной библиотеки ДОС КП; SYSLB1 — языков программирования (Фортран, Пас- каль, Бейсик-Р2, Кобол, РПГ-П, СИ); SYSLB2—системы управления данными и базами дан- ных (СУД-2, ФОБРИН-2, РИБД) и других программных компонентов (ЭКСПЕРТ, ПСПД, БНТР). 1.1.1. Подготовка подсистемы генерации Процесс генерации начинается с загрузки программы INIT.SYS с магнитной ленты SYSGEN, которая выполня- ется аппаратным загрузчиком вычислительного комплекса. Программа INIT.SYS выполняется автономно (без управ- ления операционной системы) и работает в следующих ре- жимах: DSKINT — инициализация дисков, т. е. их формати- рование и создание минимальной файловой структуры ДОС КП; COPY — копирование подсистемы генерации с дистри- бутивной ленты на диск; INSTALL — выбор монитора для работы в режиме раз- деления времени; DEFALT — определение параметров системы, исполь- зуемых выбранным монитором по умолчанию; REFRESH — размещение системных файлов в катало- ге [0,11 иа диске; SET — определение параметров внешних устройств; SAVRES — копирование и восстановление дисков; HARDWR — определение нестандартных адресов и век- торов прерываний внешних устройств; START — запуск системы разделения времени. Необходимый режим задается в ответ на запрос INIT.SYS — РЕЖИМ: 133
Программа ' INIT.SYS используется администратором иа этапе генерации и при запуске рабочей системы для ра- боты в режиме разделения времени. Режимы INIT.SYS DSKINT, INSTALL, DEFALT и START описаны в п. 1.2, а режим SAVRES — в гл. 4. В данном подразделе подроб- но описываются режимы COPY и REFRESH программы INIT.SYS, которые, как правило, используются только для подготовки подсистемы генерации. После загрузки INIT.SYS с дистрибутивной магнитной ленты администратор системы должен прежде всего подго- товить диск для подсистемы генерации. На этом диске будет выполняться построение рабочего монитора, интер- претатора Бейсик-Р, построение системных библиотек и дополнительных программных компонентов. Этот же диск может быть использован впоследствии как системный диск генерируемой рабочей системы. При подготовке дисков для подсистемы генерации инициализация дисков выполняет- ся в режиме DSK.INT программы INIT.SYS. Для генерации ДОС КП диск должен быть инициализи- рован как системный. Построение монитора ДОС КП выполняется программа- ми, работающими под управлением исполняющей системы РАФОС. Для создания на инициализированном диске под- системы генерации с помощью режима COPY программы INIT.SYS выполняется копирование с дистрибутивной маг- нитной ленты SYSGEN программы INIT.SYS, монитора SYSGEN.SIL, исполняющей системы RFS.RTS и других файлов, необходимых для настройки и запуска с диска подсистемы генерации. Операция COPY завершается ав- томатической перезагрузкой программы INIT.SYS с дис- ка генерации. Подготовка подсистемы генерации завершается инициа- лизацией подсистемы с помощью программы INIT.SYS и ее запуском в режиме START. 1.1.2. Инициализация подсистемы генерации Процедура инициализации подсистемы генерации анало- гична процедуре инициализации рабочей системы ДОС КП, описанной в п. 1.2. При выборе монитора в режиме INSTALL администра- тор указывает имя SYSGEN. В этом случае INIT.SYS устанавливает в качестве рабочего монитора SYSGEN.SIL, скопированный на диск с дистрибутивной магнитной лен- ты в режиме COPY. В качестве обязательной исполняющей системы в ре- жиме DEFALT выбирается эмулятор РАФОС, а формат 134
меток магнитной ленты, используемый по умолчанию, сле- дует задать как формат ДОС СМ, так как дистрибутивная магнитная лента записана именно в этом формате. Макси- мальный размер задания должен быть выбран равным 28 Ксловам. После выбора монитора и определения умолчаний адми- нистратор системы выполняет в режиме REFRESH разме- щение необходимых для работы системных файлов в ката- логе [0,11. В режиме REFRESH можно выполнить следую- щие функции: LIST — просмотр состояния всех необходимых систем- ных файлов, определение их размера, положения на диске и других атрибутов; CHANGE — изменение характеристик этих файлов; FILE — создание или удаление файлов, помещенных в каталог [0,1] по выбору пользователя и не входящих в список необходимых системных файлов; BADS — помещение в файл учета дефектных блоков информации об обнаруженных пользоватёлем дефектных блоках; CLEAN — операция чистки диска, аналогичная опера- ции, выполняемой командой CLEAN программы UTILTY (см. п. 2.2.2, гл. 2). В режиме REFRESH эта операция вы- полняется в максимальном объеме. Обязательной операцией в режиме REFRESH на эта- пе генерации системы является создание системного файла свопинга SWAP.SYS. Для успешной генерации системы этот файл должен быть достаточен для размещения в нем двух заданий размером по 28 Келов. Определение необходимого размера этого файла описано выше. В системе может быть до 4 файлов свопин- га с именами SWAP.SYS, SWAPO.SYS, SWAP1. SYS и SWAP3.SYS. Из них файл SWAP.SYS является обязатель- ным. Остальные файлы с номерами 0, 1 и 3 — дополнитель- ные. Создание дополнительных файлов свопинга может быть выполнено в режиме REFRESH или программой UTILTY (см. гл. 2, п. 2.2.3). Подготовка подсистемы генерации завершается запус- ком системы в режиме START, как это описано в п. 1.2.4. 1.1.3. Определение конфигурации вычислительного комплекса и характеристик системы Для построения монитора рабочей системы, полностью со- ответствующего конфигурации вычислительного комплекса и отвечающего требованиям, предъявляемым к системе. 135
администратор должен в процессе генерации определить эту конфигурацию в диалоге с программой SYSGEN.SAV, которая задает вопросы о количестве устройств каждого типа, поддерживаемого ДОС КП в составе комплекса. Если система генерируется для работы на том же комплексе, где выполняется генерация, то программа SYSGEN.SAV ав- томатически определяет наличие в составе комплекса уст- ройств каждого типа, их количество и выдает после соот- ветствующего вопроса подсказку. Число устройств, опре- деленное программой, может быть использовано как стан- дартный ответ на вопрос (т. е. введено нажатием клавиши ПС) или изменено явным образом (вводом нужного числа, который завершается нажатием клавиши ВК). Кроме вопросов о конфигурации, в диалог включен ряд вопросов, ответы на которые позволяют администратору си- стемы определить, какие из дополнительных возможностей должны быть включены в монитор. К таким возможностям можно отнести кэширование дискового обмена, буфериза- цию при выводе данных на печатающее устройство, возмож- ность управления эхо-печатью и др. После определения состава монитора ДОС КП задаются- вопросы о возможностях интерпретатора языка Бейсик-Р дня построения исполняющей системы Бейсик. Монитор и интерпретатор Бейсик строятся из объект- ных модулей. Однако мониторные таблицы и программы уп- равления обменом с терминалами (терминальный драйвер) находятся на дистрибутивном носителе в исходном виде на языке макроассемблера. Для выполнения трансляции в со- ответствии с ответами администратора программа SYSGEN. SAV создает файл параметров условной трансляции — CONFIG.MAC. Кроме этого, также по ответам администра- тора программа SYSGEN.SAV строит командный файл SYSGEN.CTL, который содержит командные строки для генерации монитора и интерпретатора Бейсик-Р в пакет- ном режиме. 1.1.4. Построение монитора Построение рабочего монитора и исполняющей системы Бейсик в пакетном режиме выполняет специальная програм- ма SYSBAT.SAV. Программа SYSBAT регистрирует в систе- ме псевдотерминал и последовательно помещает в буфер вво- да псевдотерминала командные строки из файла SYSGEN. CTL, имитируя их ввод пользователем. При работе SYSBAT ведет протокол построения в файле SYSGEN.LOG, кото- рый может быть впоследствии распечатан и проанализиро- ван администратором. 136
1.1.5. Построение системных библиотек и дополнительного программного обеспечения Построение системной библиотеки н дополнительного про- граммного обеспечения выполняется под управлением сге- нерированного рабочего монитора и построенного интерпре- татора Бейсик-Р. Поэтому администратор должен завер- шить работу подсистемы генерации, перезагрузить с систем- ного диска программу INIT.SYS и выполнить инициализа- цию рабочей системы, как описано в п. 1.2. В режиме INSTALL следует установить сгенерированный монитор. В качестве обязательной в режиме DEFALT устанавлива- ется та RTS, которую выбирает администратор. Как пра- вило, в системе с достаточным объемом оперативной памяти в качестве обязательной выбирается исполняющая система Бейсик, сгенерированная на предыдущем этапе. Инициализация рабочей системы при построении систем- ной библиотеки и дополнительного обеспечения завершает- ся запуском операций разделения времени, который выпол- няется в режиме START. Построение дополнительных программных компонент выполняется с дистрибутивных магнитных лент (SYSLB1 и SYSLB2) специальной программой BUILD.ВАС. В ответ на запросы этой программы администратор системы задает командные файлы для построения необходимых для данной системы компонент.- Состав программного обеспечения ДОС КП приведен в ч. I, гл. 3. Генерация дополнительных мониторов разделения вре- мени, отличающихся друг от друга параметрами, определяе- мыми в диалоге пользователя с программой SYSGEN.SAV, может выполняться непосредственно в режиме разделения времени с дистрибутивной магнитной ленты и с диска ДОС КП, иа который предварительно скопированы все необхо- димые файлы. 1.2. ИНИЦИАЛИЗАЦИЯ ДОС КП Следующим этапом подготовки системы к работе является этап инициализации, Его можно рассматривать как послед- ний шаг настройки системы перед запуском режима разде- ления времени. Операции по инициализации системы адми- нистратор выполняет с консольного терминала, используя программу INIT.SYS, загружаемую с системного диска ап- паратным загрузчиком. На этом этапе администратор системы определяет мони- тор, который будет использоваться для организации режи- ма разделения времени, устанавливает для этого монитора 137
параметры, используемые по умолчанию, обязательную ис- полняющую систему, стандартный формат меток магнит- ной ленты, формат даты и времени, тип используемого тай- мера и т. п. Если в системе имеются нестандартно подключенные уст- ройства илн необходимо установить специальные характе- ристики устройств (например, ширину печати АЦПУ), то администратор системы должен, используя режимы ра- боты программы INIT.SYS — HARDWR и SET, задать ад- реса и векторы таких устройств и определить соответствую- щие параметры. Другие режимы работы INIT.SYS администратор си- стемы может использовать для инициализации новых дис- ков для работы в ДОС КП (создания на них минимальной файловой структуры), манипуляции с системными файлами в каталоге [0, 1], копирования носителей, загрузки различ- ных устройств, загрузки одиночных самовыполняющихся программ. Наиболее часто используемым режимом программы INIT.SYS является режим разделения времени, который за- вершает выполнение INIT.SYS, загружает монитор разделе- ния времени и передает ему управление. 1.2.1. Выбор рабочего монитора На системном диске (если он достаточно большого объема) можно разместить несколько вариантов монитора ДОС КП, сгенерированных для различных режимов работы системы или для разных конфигураций вычислительного комплек- са, и выбирать необходимый для каждого сеанса разделения времени. Кроме того, администратор системы может гене- рировать новые версии монитора, работая в режиме разде- ления времени параллельно с другими пользователями. Таким образом, проблем соответствия монитора выбранно- му режиму работы или конфигурации технических средств обычно не возникает. Все это позволяет использовать для работы именно тот монитор, в который включены драйве- ры устройств, имеющихся в настоящий момент в составе вычислительного комплекса, и характеристики которого (включенные дополнительные возможности, объем резидент- ной части) максимально соответствуют режиму работы си- стемы в данном сеансе разделения времени. Монитор режима разделения времени выбирается адми- нистратором системы на этапе инициализации и остается установленным до его следующего изменения в режиме INSTALL или до окончания сеанса разделения времени. 138
1.2.2. Определение характеристик по умолчанию Этап инициализации можно рассматривать как этап опре- деления некоторых параметров системы, которые сохра- няются неизменными между сеансами разделения времени. Некоторые из этих параметров нельзя изменить в режиме разделения времени, другие могут быть оперативно изме- нены администратором системы либо они используются в системе как значения по умолчанию и могут быть подавлены явным указанием соответствующего параметра в команде пользователя. К характеристикам, определяемым в режиме инициа- лизации DEFALT, относятся такие параметры, как макси- мальное число заданий, которое может обрабатываться си- стемой, размер свопинга заданий, т. е. максимальный раз- мер задания, которое будет выгружаться из памяти в файл свопинга на диск при необходимости освободить область оперативной памяти для очередного задания, получившего квант времени выполнения. Эти два параметра определяют максимальные значения, превышение которых в режиме разделения времени невозможно. Другими параметрами являются формат записи маг- нитной ленты и формат представления текущей даты и те- кущего времени. На этапе инициализации определяется фор- мат записи на магнитной ленте (ДОС СМ или ЕС ЭВМ), ко- торый будет использоваться по умолчанию, т. е. в тех слу- чаях, когда он явно не определен пользователем. Однако это не исключает возможности явного указания формата маг- нитной ленты и работы с ней в формате, отличном от выбран- ного по умолйанию (см. ч. I, гл. 2). После входа в режим разделения времени дата и время хранятся и используются в системе в выбранном админи- стратором формате. Аналогично на весь сеанс разделения вре- мени выбирается обязательная исполняющая система, т.е. RTS, которая постоянно резидентна в памяти и использу- ется по умолчанию. Файл обязательной исполняющей си- стемы должен размещаться на системном диске в каталоге (О, 11. Администратор системы может поместить на системный диск несколько файлов, содержащих тексты сообщений си- стемы об ошибках.Такие файлы также должны размещаться в каталоге [0, 1] на системном диске. На этапе инициализа- ции системы для отдельного сеанса разделения времени ад- министратор системы может выбрать для использования любой из этих файлов. Например, на системном диске на- 139
ходится файл текстов сообщений об ошибках на русском языке и аналогичный файл сообщений на английском язы- ке. Администратор системы имеет возможность выбрать один из них и определить, на каком языке будут печататься си- стемные сообщения об ошибках. На этом же этапе администратор системы может внести изменения в таблицу распределения оперативной памяти, РЕЖИМ: DEFAULT ФУНКЦИЯ? LIST РАСПРЕДЕЛЕНИЕ ПАМЯТИ: ОК: 00000000- 00213777 (35К) : МОНИТОР J5214000- °°313777 (16К) : RTS (BASIC) 003’4000~ 00757777 (73К) : ПОЛЬЗОВАТЕЛЬ 124К: 00760000- КОНЕЦ ФУНКЦИЯ?XBUF ФУНКЦИЯ?*?/^ РАСШИРЕНН0Г0 е^ЕРА? 122К + 2 РАСПРЕДЕЛЕНИЕ ПАМЯТИ- 0К: 00000000— 35К: 00214000- 51К: 00314000— 122К: 00750000— 124К: 00760000- ФУНКЦИЯ? <CTRL/C> 00213777 (35К) : МОНИТОР 00313777 (16К) : RTS (BASIC) 00747777 (71К) : ПОЛЬЗОВАТЕЛЬ “777777 (2К) : XBUF 00757777 КОНЕЦ РЕЖИМ: Рис. 29. Создание расширенного буфера например создать в оперативной памяти расширенный бу- фер, используемый для кэширования каталогов и данных при обращении к диску. Пример на рис. 29 показывает действия администратора системы для создания расширенного буфера размером 2 Кслова. Эта таблица определяет размещение в памяти только постоянно резидентных элементов системы — монитора, обязательной RTS и расширенного буфера. Область поль- зователя динамически распределяется между заданиями пользователей и дополнительными исполняющими систе- мами. 1.2.3. Инициализация дисков ДОС КП, кроме стандартной процедуры разметки диска (форматирования), принятой в СМ ЭВМ, т. е. разделения диска на блоки по 512 байт и нанесения соответствующей разметки, требует выполнения процедуры инициализации дисков. 140
Как правило, инициализация дисков выполняется до- запуска режима разделения времени в режиме DSKINT. Администратор системы в этом режиме может отформати- ровать указанный диск, выполнить ряд проверок на нали- чие на диске дефектных блоков и инициализировать диск— т. е. создать на нем минимальную файловую структуру ДОС КП. Упрощенный вариант инициализации диска возможен и в режиме разделения времени. С помощью программы DSKINT администратор системы может создать минималь- ную файловую структуру ДОС КП на предварительно от- форматированном диске. Проверка диска на наличие де- фектных блоков при таком способе инициализации диска для работы в ДОС КП не производится. Проверка диска на этапе инициализации системы может включать процедуры записи на диск данных, их последую- щее считывание и сравнение результатов. Допускается до 8 проверок по стандартным шестнадцатиразрядным шабло- нам, а также проверки по шаблонам, определенным пользо- вателем. Минимальная файловая структура на диске ДОС КП: главный каталог файлов MFD, системный каталог [0,1], в котором размещаются два файла: SATT.SYS — файл рас- пределения дискового пространства и BADB.SYS — файл дефектных дисковых блоков. В процессе инициализации все пространство диска раз- бивается на кластеры указанного администратором разме- ра. Файл SATT. SYS содержит таблицу распределения дис- кового пространства в виде вектора, состоящего из бит. Но- мер бита соответствует номеру дискового кластера. Установ- ка бита в единицу означает, что данный кластер занят, оброс его в нуль означает, что соответствующий кластер свободен. При создании файла на диске происходит анализ файла SATT.SYS, и для файла отводится нужное количество сво- бодных дисковых кластеров, после чего они помечаются в SATT.SYS как занятые. При удалении файла соответствующие биты файла SATT.SYS сбрасываются в 0, т. е. кластеры помечаются как свободные, и могут быть снова заняты другим файлом. Файл BADB.SYS имеет структуру, аналогичную струк- туре файла SATT.SYS. Если при проверке на наличие дефектных блоков обна- ружено расхождение записываемых и считанных данных, кластер, в котором находится дефектный блок, объявляется дефектным и соответствующий разряд в файле BADB.SYS 141
устанавливается в единицу. Если какой-либо разряд в фай- ле BADB.SYS установлен в единицу, то соответствующий бит в файле SATT.SYS также устанавливается в единицу, что запрещает использование дефектного блока для хране- ния информации. Эта возможность позволяет обходить на диске до 161 дефектного кластера. При инициализации диска ему также присваивается метка (от 1 до 6 алфавитно-цифровых символов), которая проверяется затем при монтировании диска для однознач- ной идентификации тома. Любой диск можно инициализировать как системный (SYS), личный (PRI) или диск структуры общего доступа (PUB). На системном диске после генерации ДОС КП раз- мещаются программа начальной инициализации системы INIT.SYS, монитор разделения времени, обязательная ис- полняющая система и обязательный файл свопинга SWAP. SYS. В нулевой блок системного диска при копировании INIT.SYS в режиме COPY записывается программа-авто- загрузчик, запускаемая при аппаратной загрузке системы и диска и загружающая программу INIT.SYS в оператив- ную память. В нулевой блок личного диска и диска структуры обще- го доступа записывается при инициализации диска фиктив- ный автозагрузчик, который при попытке автозагрузки не- системного диска выводит на консольный терминал сообще- ние об ошибке. Для оптимизации работы с диском администратор систе- мы может при выполнении DSK.INT разместить файл рас- пределения дискового пространства SATT.SYS в любом ме- сте диска. По умолчанию файл SATT.SYS размещается око- ло середины диска, что позволяет в нормальных условиях уменьшить среднее время поиска этого файла. По выбору администратора системы диск может быть инициализирован с различными характеристиками. На- пример, можно указать, что новые файлы при занесении на диск помещаются не в конец каталога, а в его начало. Та- кой способ инициализации позволяет ускорить доступ к новым файлам, так как поиск файлов по каталогу выполня- ется с его начала. Другой характеристикой диска является способ обра- ботки даты обращения к файлу. В каталоге диска для каж- дого файла, кроме даты его создания, хранится еще и дата последнего обращения к нему. Администратор системы мо- жет задать обработку этой даты таким образом, что она бу- дет изменяться не при каждом обращении к файлу, а только при его модификации. Использование этого параметра дает 142
возможность администратору следить за доступом пользо- вателей по записи к особо важным файлам данных или про- грамм. Еще одним важным параметром инициализации диска является размер кластера главного каталога файлов (MFD). Размер кластера каталога MFD, во-первых, определяет ко- личество файлов и/или каталогов файлов пользователей; так как MFD — это каталог всех пользовательских катало- гов (UFD) на диске. Во-вторых, если в системе разрешено кэширование каталогов, то наибольший эффект дает кэши- рование каталогов, размер кластера которых равен разме- ру кластера кэша. 1.2.4. Запуск режима разделения времени Наиболее часто используемым режимом инициализации ДОС КП является режим START, запускающий режим раз- деления времени. Этот режим администратор системы дол- жен выполнять перед каждым сеансом разделения времени. В режиме START администратор может изменить макси- мальное число заданий в системе и максимальный размер задания, выгружаемый по свопингу, а также размер кла- стера кэша и таблицу размещения в памяти резидентной части системы. Однако в отличие от режима DEFALT эти изменения остаются в силе только для данного сеанса разделения времени и не сохраняются после завершения работы систе- мы. В результате выполнения режима START на место про- , граммы INIT.SYS в оперативную память загружается мо- нитор разделения времени, который запускает специальную программу INIT.BAC, входящую в состав системной биб- лиотеки ДОС КП. Эта программа запрашивает имя команд- ного файла и затем начинает выполнять указанные в этом файле команды, устанавливающие начальные системные характеристики. 1.3. УСТАНОВКА НАЧАЛЬНЫХ ХАРАКТЕРИСТИК ! Определение начальных характеристик системы — это за- ключительный этап подготовки системы к работе. На этом этапе определяются параметры, хранящиеся в оператив- ной памяти и не сохраняющиеся между сеансами разделе- ния времени. Этап определения начальных характеристик должен быть выполнен для каждого сеанса разделения вре- 143
мени. Данный этап включает в себя ряд действий. К таким действиям относится, например, определение кратких сис- темных команд (CCL-команд), позволяющих одной корот- кой командой вызвать заданную программу или потребо- вать выполнения какой-либо ее отдельной функции. Опре- деление кратких команд необходимо для каждого сеанса разделения времени, так как CCL-определения создаются не на диске, а в оперативной памяти и не сохраняются пос- ле завершения работы системы. То же можно сказать о монтировании личных дисков и дисков структуры общего доступа. Кроме того, для нормальной работы пользователей не- обходим запуск некоторых системных программ, которые выполняются в отсоединенном режиме. Эти программы мо- гут выполнять различные действия, расширяя возможности монитора. К таким программам относится, например, про- грамма ERRCPY, регистрирующая ошибки, обнаруженные во время работы системы. Используя эту же возможность и функции приема/передачи сообщений, в ДОС КП реализо- ван спулинг на печатающее устройство и режим пакетной обработки заданий. Запуск заданий системы спулинга так- же осуществляется на этапе установки начальных харак- теристик системы. Действия, аналогичные описанным выше, администра- тор должен выполнять каждый раз при запуске сеанса раз- деления времени. Чтобы избежать ежедневного выполне- ния этих действий вручную (а их число может быть значи- тельным), сэкономить время и избежать возможных оши- бок, администратор системы может оформить эти процеду- ры в виде командного файла и потребовать его выполнения программой INIT.BAC при старте системы. Заметим, что в момент запуска программы INIT.BAC регистрация пользователей со всех терминалов, подклю- ченных к системе, кроме консольного, запрещена. Регист- рация пользователей в системе разрешается по команде LOGINS, помещаемой в конец командного файла запуска системы. Информировать пользователей о готовности сис- темы к работе можно, поместив команду SENDxxx после команды LOGINS.INIT.BAC по команде SENDxxx посы- лает на все терминалы текст ххх. Если система должна в разных ситуациях работать в различных режимах, то администратор системы может иметь на системном диске любое количество различных командных файлов, выбирая при необходимости подходя- щий для данного случая. Кроме этого, возможность оформ- лять команды в косвенные командные файлы позволяет ад- 144
министратору системы легко создавать основные команд- ные файлы, содержащие различные комбинации косвен- ных командных файлов, выполняющих конкретные про- цедуры. Пример командного файла START.CTL для запуска системы приведен на рис. 30. MOUNT DKKSYSLIB (SRTS.CMD (®CCL.CMD @TTY.CMD @ SPOOL.CMD DETACH LOGIN KBO: (1, 2) FORCE KBOIRUN SYOIERRINT FORCE KBO: 100 FORCE KBO:YES ATTACH LOGINS SEND ОПЕРАЦИОННАЯ СИСТЕМА ДОС КП ГОТОВА К РАБОТЕ! END. Рис. 30. Пример командного файла START CTL Выполняя этот командный файл, программа INIT.BAC сначала монтирует пакет структуры общего доступа с мет- кой SYSLIB, установленный на DK1: и содержащий сис- темные программы и файлы. Затем начинают выполняться команды из косвенных командных файлов RTS.CMD (ус- тановка дополнительных исполняющих систем), CCL.CMD (определение языка кратких системных команд), TTY.CMD (установка характеристик отдельных терминалов) и SPOOL.CMD (запуск в отсоединенном режиме программ спулинга). После этого программа INIT.BAC отсоединяет- ся от консольного терминала (команда DETACH), терми- нал регистрируется в системе под учетным номером [1,2] и с него запускается программа регистрации ошибок. В конце командного файла в системе разрешается регистра- ция пользователей (LOGINS). Сообщение о готовности системы к работе рассылается на все терминалы. Последняя команда в файле START.CTL (команда END) указывает на конец командного файла и завершение работы програм- мы INIT.BAC. Заканчивая работу, программа INIT.BAC освобождает консольный терминал, который становится доступным для регистрации пользователя. Отметим, что команда FORCE помещает в буфер ввода терминала, заданного в команде, строку, следующую за но- мером терминала, т. е. имитирует ввод этой строки с тер- 145
DETACH LOGIN KBO. (1.21 FORCE KBO RUN UTILTY FORCE KBO'.ADD RFS FORCE KBOiADD ORV FORCE KBO:EXIT FORCE KBO BYE/F ATTACH Рис. 31. Пример косвенного ко- мандного файла RTS. CMD минала. Пример косвенного командного файла RTS.CMD приведен на рис. 31. Выполняя команды из косвенного командного файла RTS.CMD, программа INIT.ВАС отсоединяется от консоль- ного терминала, регистрирует с него задание под учетным номером 11, 2], запускает служебную программу UTILTY, выполняющую две команды (ADD RFS и ADD ORV), с по- мощью которых исполняющие системы RFS.RTS и ORV.RTS устанавливаются как дополнитель- ные. Затем выполнение програм- мы завершается, задание, создан- ное по команде LOGIN, удаляет- ся, программа INIT.BAC присое- диняется к консольному термина- лу (команда ATTACH) и продол- жает выполнять команды из пре- дыдущего командного файла. После запуска программы, регистрирующей системные ошиб- ки, и разрешения регистрации в системе заданий поль- зователей система полностью готова к нормальной работе в режиме разделения времени. 1.3.1. Монтирование дисковой структуры В командный файл запуска системы рекомендуется вклю- чить команды монтирования дисков, работающих в систе- ме, так как в момент запуска режима разделения времени единственным диском, смонтированным в системе, явля- ется системный диск. Администратор системы должен про- думать дисковую структуру рабочей системы, разместить в ней библиотеки системных и прикладных программ, фай- лы свопинга и обеспечить достаточное свободное дисковое пространство для работы пользователей. При создании учетных номеров пользователей админи- стратор определяет, сколько дисковых блоков каждый поль- зователь может занимать в структуре общего доступа пос- ле выхода из системы. Пользователь, обращаясь к струк- туре общего доступа, не знает, на каком именно диске бу- дет расположен его файл. Система располагает файл на том диске, где в настоящий момент больше свободного места. Если в процессе работы администратор системы демонтиру- ет диск структуры общего доступа, то он лишает пользова- телей возможности обращаться к своим файлам, которые, 146
Возможно, остались на демонтированном диске. Поэтому рекомендуется создавать структуру общего доступа в мо- мент запуска режима разделения времени и оставлять ее неизменной до завершения работы системы. В режиме раз- деления времени администратору рекомендуется выпол- нять единственную функцию, изменяющую дисковую струк- туру общего доступа, — монтирование новых дисков об- щего доступа, т. е. расширение структуры, для того, чтобы обеспечить дисковое пространство достаточного размера для нормальной работы пользователей. При монтировании дисков возможно использование ключей, определяющих системное логическое имя, по ко- торому можно обращаться к диску, тип доступа к нему. Как правило, если дисковая структура постоянна для данной системы, команды монтирования дисков оформля- ются в виде косвенного командного файла и выполняются при запуске системы программой INIT.BAC. Так как администратор системы отвечает за сохранность данных, оставленных пользователями в структуре общего доступа, ои должен позаботиться о сохранении дисков структуры общего доступа на магнитной ленте (как это опи- сано в гл. 4) и при необходимости восстанавливать разру- шенные диски до их монтирования в системе. 1,3.2. Установка дополнительных исполняющих систем В качестве обязательной исполняющей системы обычно вы- бирается интерпретатор языка Бейсик-Р, так как под уп- равлением этой RTS работает большинство системных программ. Так как она одновременно является и языковым процессором, то по размерам значительно превышает ис- полняющие системы РАФОС и ОС РВ (RTS Бейсик зани- мает в памяти 16 Келов, а эмуляторы РАФОС и ОС РВ — по 4 Кслова). В системах с малым объемом оперативной памяти бы- вает удобно выбрать в качестве обязательной исполняющую систему РАФОС и освободить дополнительно 12 Келов опе- ративной памяти, в тех случаях, когда выполняются зада- ния, не использующие интерпретатор Бейсик-Р. При необходимости дополнительные исполняющие сис- темы можно сделать постоянно резидентными в памяти, указав в команде добавления исполняющей системы ключ /STAY. Установка дополнительных RTS должна выполняться каждый раз при запуске режима разделения времени. Как правило, эта процедура оформляется в виде командного 147
файла и выполняется программой INIT.BAC на этапе уста- новки начальных характеристик системы (см. файл RTS.CMD). Добавление RTS выполняется по команде ADD программы UTILTY. Администратор может задавать при установке отдельные параметры исполняющей системы, указывая в команде ADD дополнительные ключи. Например, команда ADD RFS/ADDR : 98/STAY добавляет исполняющую систему РАФОС, размещенную в каталоге 10, 11 в файле RFS.RTS, и делает ее постоянно ре- зидентной в оперативной памяти, начиная с секции, разме- ром в 1 Кслово, номер 98 (ключ /ADDR). Команда ADD не выполняет непосредственную загрузку указанной исполняющей системы в оперативную память. Загрузка RTS выполняется автоматически при запуске программы, использующей эту исполняющую систему. При попытке запустить программу, использующую не установленную в данный момент исполняющую систему, на терминал пользователя выдается сообщение ?ПРОГРАММЫ ИЛИ ФАЙЛА НЕТ Как правило, команды установки дополнительных RTS помещаются в начало командного файла запуска системы, так как для дальнейшей установки начальных характерис- тик системы может потребоваться использование программ, работающих под управлением RTS, отличных от обязатель- ной. Если администратору системы требуется изменить ха- рактеристики установленной дополнительной исполняю- щей системы, он должен выполнить команду REMOVE, удаляющую указанную RTS (т. е. делающую ее недоступной для программ пользователей), и вновь установить ее ко- мандой ADD с указанием необходимых ключей для изме- нения соответствующих характеристик. Порядок установки дополнительных RTS влияет на обработку команд оператора. Для каждой RTS по умолча- нию определено расширение имени файла, который содер- жит программу, работающую под управлением этой испол- няющей системы. Администратор системы может изменять это расширение, указывая ключ /ЕХТ : ххх в команде ADD. Стандартные расширения: SAV -для RFS.RTS -TSK -ДЛЯ ORV.RTS •ВАС -для BASIC.RTS. 148
Если пользователь запускает по команде RUN програм- му PROG, не указывая расширения имени файла, где хра- нится эта программа (например, RUN PROG), то система выполняет поиск файла с именем PROG и расширением имени, которое соответствует обязательной исполняющей системе. Если такого файла нет, то ищется файл с расшире- нием имени, используемым первой установленной допол- нительной RTS и т. д. Порядок следования исполняющих систем соответствует порядку, в котором выполнялись команды добавления исполняющих систем. Однако адми- нистратор системы может его изменять, указывая в коман- де ADD, устанавливающей эту RTS, ключ /POSITION:п, где п — номер RTS в списке. Так, команда ADD ORV/POSITION : 1 помещает дискрипторный блок исполняющей системы ОС РВ сразу после дискрипторного блока обязательной испол- няющей системы в связном списке таких блоков. 1.3.3. Определение языка кратких команд Язык кратких системных команд (CCL) значительно расши- ряет набор команд оператора, обрабатываемых исполняю- щими системами. Используя краткую команду, пользо- ватель может вызвать системную программу, указанную в определении CCL-команды, запустить ее с указанной строки, если эта программа составлена на языке Бейсик-Р, выполнить командную строку, заданную при вводе коман- ды. Кроме того, привилегированный пользователь может запускать программу в отсоединенном от терминала режи- ме, указывая с CCL-командой ключ /DET. Например, команда PIP/DET МТ1 : (*, *1 = МТО : [ *, *1 выполняет копирование магнитной ленты, установленной на МТО:, на магнитную ленту МТ1:, не занимая физическо- го терминала. Каждое определение CCL-команды занимает один малый буфер. Список CCL-определений составляет связный спи- сок малых буферов в оперативной памяти, поэтому опре- деление стандартного языка CCL необходимо выполнять при запуске каждого сеанса разделения времени. Админи- стратор системы может создавать CCL-определения, исполь- зуя команду CCL программы UTILTY. 149
Например, команда CCL UT—ILTY = Ц,2] UTILTY.BAC; PRIV 3000 создает определение краткой команды, вызывающей запуск программы UTILTY.BAC со строки номер 3000 из ката- лога [1,2]. Программа сохраняет при запуске временную привилегированность, на что указывает ключевое слово READY RUN UTIL TV UTHTV VI 0 XUS'CCl АЛ ACH--I. 21 LOGIN « .PRIV 30000 ATP K i । 2IATPk . PRIV 30000 BYE и 21 LOGOUT • PRiV 0 DIS MOUNT» PRiv 30000 ' Di RtCTORv I i 21 DIRECT «.PRIV 30000 EDT • 11 2IEDT tsk.O FIT i i 21 Fit . PRIV 30000 HEllO-’I । 2ILOGIN • PRIV0 LBR- - I I 21 LBR TSK 0 LIBR ’ 11 21 LiBR SAV.820B LIN-Kdi 21 LINK SAV B208 LOG-IN= I I 21 LOGIN • PRIV 0 MACR-0= 11 2IMACRD SAV.8216 MAC- ’ I । 2IMAC TSK.O MOU-NT |i 2IUMOUNT • PRIV 30000 PIP li 2IPIP SAV’8208 Pl-EASE = li 2IPLEASE • PRiv 30000 QU-EUE'ti 2I0UE *. PRIV 30000 SE 1 । 1 21 TTVSE ’ • PRiv 30000 SW iTCH=|i 21 SWITCH • PRIV 30000 SY $tat. । । 21 SYSTAT PRiv 30000 TKB ’1'21 TKB TSK Q UT 4TV-11 2IUT1LTV -.30000 BAS-iC2=DK2 И 2) BASIC2 TSK;30000 »<CTRL/?' READY Рис. 32. Пример выполнения команды LIST CCL PRIV в CCL-определении. Дефис в команде UTILTY ука- зывает точку сокращения. В данном случае пользователю для вызова программы UTILTY достаточно ввести два сим- вола UT. Допустимы также команды UTI, UTIL, UTILT и UTILTY, вызывающие выполнение той же команды крат- кого командного языка. Для определения стандартного языка кратких команд удобно оформить вызов программы UTILTY и команды, 150
определяющей язык CCL, в виде командного файла, который выполняет программа INIT.BAC при установке начальных характеристик режима разделения времени (файл CCL.CMD). Впоследствии в процессе оперативного управления ра- ботой операционной системы администратор может добав- лять новые CCL-команды, изменять прежние CCL-опреде- ления и удалять CCL-команды. Например, программа UMOUNT.BAC, монтирующая и демонтирующая в системе личные диски пользователей, не может быть запущена по команде RUN. Эта программа вызывается только по CCL- командам MOUNT и DISMOUNT. Удаляя и создавая эти CCL-определения, администратор системы может соответст- венно запрещать и разрешать пользователям вызов этой программы, т. е. запрещать или разрешать непривилеги- рованным пользователям монтирование в системе личных дисков. Удаление CCL-определений выполняется по команде- CCL программы UTILTY без указания вызываемой прог- раммы. Например, команда CCL MOUNT = удаляет CCL-определение, вызывающее программу UMOUNT для монтирования личных дисков. Проверить- список CCL-определений, созданных в системе, позволяет команда LIST CCL программы UTILTY (рис. 32). 1.3.4. Запуск программы регистрации ошибок В ДОС КП ошибки регистрируются не монитором разде- ления времени, а специальной программой. Перед тем как администратор разрешит пользователям регистрировать- ся в системе, должна быть запущена программа, регистри- рующая ошибки оборудования, обнаруженные в процессе работы. Подробно обработка системных ошибок ДОСКП описана в гл. 5. 1.4. СОЗДАНИЕ УЧЕТНЫХ НОМЕРОВ В функции администратора системы по подготовке системы к работе входит обязанность определять круг пользовате- лей системы. Для входа в систему пользователь должен ввести свой учетный номер и пароль в ответ на запросы программы LOGIN, осуществляющей регистрацию. Эту информацию пользователю сообщает администратор сис- темы, создающий учетные номера и пароли пользователей при помощи программы REACT, входящей в состав систем- 151
ной библиотеки. При создании учетного номера на систем- ном диске администратор определяет его пароль и квоту. Квота учетного номера — это объем дискового пространст- ва в структуре общего доступа, которое пользователь имеет право занимать после выхода из системы. Во время работы системы объем дискового пространства, занимаемого любым пользователем, ограничивается только физическим объемом свободного пространства на всех дисках, составляющих структуру общего доступа. Выходя из системы, пользова- тели обращаются к специальной программе LOGOUT, ко- торая выполняет проверку соответствия объема дискового пространства, занятого программами и данными этого поль- зователя, и квоты, отведенной ему администратором сис- темы при создании учетного номера. Если квота превышена, то выход из системы разрешается пользователю только пос- ле удаления некоторых файлов и освобождения необходи- мого пространства в структуре общего доступа. Учетные номера пользователей хранятся на системном диске в глав- ном каталоге файлов (MFD). При расширении структуры общего доступа по мере необходимости учетные номера ра- ботающих в системе пользователей автоматически созда- ются и на новых дисках. Для создания учетных номеров на личных дисках адми- нистратор системы должен использовать функцию ENTER системной программы REACT. Удалить каталог с диска можно, вызвав функцию DELETE программы REACT. Удаление каталога выпол- няется, если каталог не содержит ни одного файла. Таким образом, перед удалением каталога администратор систе- мы должен выполнить его обнуление с помощью команды ZERO' программы UTILTY. Например, команда ZERO DK3 : ЦО, 15] выполняет удаление всех файлов из каталога НО, 15] на диске DK3:. Глава 2 ОПЕРАТИВНОЕ УПРАВЛЕНИЕ РЕЖИМОМ РАЗДЕЛЕНИЯ ВРЕМЕНИ Главной задачей администратора системы являются обес- печение нормальной совместной работой всех пользователей системы и оптимизация работы системы, увеличение ее об- щей производительности. Функции администратора по оперативному управлению работой системы: 152
оптимизация работы системы в целом, т. е. уменьшение непроизводительных потерь на свопинг заданий, уменьше- ние числа физических обращений к дискам, времени поис- ка файлов в каталогах и т. п.; управление дисковой структурой общего доступа; управление работой системы спулинга, оптимизация вы- вода файлов на печатающее устройство; текущий контроль за работой заданий пользователей, освобождение занятых неиспользуемых устройств; сбор и анализ статистики о работе пользователей в сис- теме. Большинство этих функций администратор системы вы- полняет с помощью системной программы UTILTY. Для слежения за состоянием системы используются программы SYSTAT и DISPLY. Остановимся на ряде важных функций, относящихся к оперативному управлению работой ДОС КП в режиме разделения времени. 2.1. ОПТИМИЗАЦИЯ РАБОТЫ СИСТЕМЫ ДОС КП предоставляет администратору системы широкие возможности для оптимизации работы системы. Используя команды программы UTILTY, администратор может из- менить соответствующие параметры таким образом, чтобы сократить в данной системе потери на свопинг, уменьшить количество физических обращений к дискам, сократить поиск файлов по каталогам и т. п. Правильно выбранный вариант генерации системы и своевременное правильное изменение основных параметров, влияющих на работу за- даний, может значительно увеличить эффективность ДОС КП, уменьшить время реакции системы на запрос пользо- вателя. 2.1.1. Управление приоритетами Каждому заданию, работающему под управлением ДОС КП, автоматически назначается квант времени выполнения и приоритет. Приоритет задания может изменяться в диапа- зоне от —128 до +128. Стандартное значение приоритета, присваиваемое системой первоначально всем заданиям, рав- но —8. Величина приоритета влияет на то, как часто зада- ние будет получать очередной квант времени выполнения, а величина кванта определяет, как долго задание будет вы- полняться, не выгружаясь по свопингу и не прерываясь системой. Стандартная величина кванта времени выполне- ния равна 6 единицам квантования, или приблизительно 153
1/10 секунды. Задание, получившее очередной квант, вы- полняется до тех пор, пока оно не-перейдет в ожидание окончания операции ввода-вывода, либо до конца кванта времени выполнения. После этого система начинает выпол- нять следующее задание, стоящее первым в очереди зада- ний, готовых к работе. Если выполнение задания постоян- но прерывается системой из-за того, что квант времени слиш- ком мал, целесообразно увеличить такому заданию величи- ну кванта, чтобы уменьшить потери на свопинг заданий. Свопингом называется процесс выгрузки приостановлен- ного задания в специальный файл на диск для того, чтобы освободить при необходимости место в оперативной памяти для очередного выполняемого задания. При получении за- данием следующего кванта времени выполнения оно также по свопингу загружается в оперативную память и продол- жает свою работу с той точки, в которой оно было приоста- новлено. Как правило, потери на свопинг администратор системы может уменьшить, увеличив величины кванта времени вы- полнения и уменьшив приоритет тех заданий, которые вы- полняют длительные громоздкие вычисления без частого взаимодействия с оператором и без интенсивного обмена с внешними устройствами. В этом случае задание будет вы- полняться приблизительно в том же темпе, реже получая квант времени выполнения (из-за более низкого приорите- та). Но в то же время такая программа выполняется в те- чение более длительного промежутка времени, т. е. реже выгружается по свопингу, что уменьшает непроизводитель- ную работу системы. Изменение приоритетов и квантов времени отдельных заданий администратор системы может выполнять, не прерывая работу пользователей, используя команды PRIORITY и RUNBURST программы UTILTY. Например, команды PRIORITY 2 —16 RUNBURST 2 12 изменяют характеристики выполнения задания номер 2, уменьшая его приоритет до —16 и увеличивая вдвое по сравнению со стандартным квант времени выполнения это- го задания. Эти параметры можно задавать только для заданий, ко- торые уже существуют в системе, т. е. после регистрации задания в системе. Номера заданий присваиваются по мере 154
регистрации пользователей в системе. Вновь создаваемому заданию присваивается первый свободный порядковый но- мер. Так как номера присваиваются динамически, то опре- делить нестандартный приоритет или квант времени вы- полнения для задания номер п до регистрации этого зада- ния нельзя. Поэтому администратор системы должен опе- ративно изменять эти параметры для каждого конкретного задания, исходя из того, какая программа выполняется в рамках этого задания с учетом характеристик остальных программ, работающих в системе, и требований, предъяв- ляемых к системе. 2.1.2. Управление кэшированием Другой возможностью улучшения эффективности системы является использование возможности кэширования ката- логов и данных. Понятие кэширования было введено в ч. I, гл. 2, п. 2.3.3. При обращении к дисковому блоку в буфер в оперативной памяти, называемый кэшем, помещается несколько смежных блоков и при последующем обращении к этому блоку или к смежному с ним физического обраще- ния к диску не происходит, а данные копируются в буфер программы из кэша. При записи на диск данные корректи- руются н в кэше, и на диске. При обращении к дисковому блоку в том случае, если кэширование разрешено, система проверяет, находятся ли необходимые данные в кэше. Если данные находятся в кэ- ше, то считывание выполняется из оперативной памяти без физического обращения к диску. Если необходимых дан- ных в кэше не обнаружено, то система проверяет, есть ли в кэше свободное место для помещения нового кластера данных, и если есть, то в кэш считывается одновременно определенное администратором число смежных дисковых блоков и затем данные передаются вызывающей программе. В случае, если весь кэш заполнен данными, система ищет, какой кластер кэша можно заменить на новый. Кластер кэша подлежит замене в том случае, если время нахождения его в оперативной памяти с момента послед- него обращения превысило величину, определяемую адми- нистратором системы. Кроме того, при кэшировании в по- следовательном режиме замене подлежит кластер кэша, ес- ли было обращение к последнему блоку в этом кластере. В том случае, если система не обнаруживает ни одного клас- тера, который может быть заменен, помещения нового кластера в кэш не происходит, а выполняется нормальное обращение к диску. 155
Улучшение характеристик системы зависит от пара- метров кэширования, т. е. от того, насколько хорошо режим кэширования соответствует типу задач, решаемых в систе- ме, организации файлов и т. п. Так как за одно обращение к диску считывается несколько смежных блоков и для раз- мещения кэша необходимо выделить дополнительную об- ласть памяти, кэширование может даже ухудшить характе- ристики системы. Это объясняется тем, что уменьшается область памяти, динамически распределяемой между зада- ниями пользователей, что увеличивает потери времени на свопинг. Поэтому администратор системы должен внима- тельно следить за эффективностью использования кэша, провести ряд экспериментов для выбора оптимального ре- жима кэширования. В системах с малым объемом памяти возможно, что ухудшение временных характеристик из-за увеличения потерь на свопинг будет более существенным, чем увеличение быстродействия за счет уменьшения числа физических обращений к дискам из-за использования кэ- ширования. Управляя кэшированием в ДОС КП, администратор имеет возможность установить следующие режимы работы: запретить кэширование обращений к диску; разрешить кэширование только каталогов; разрешить кэширование каталогов и кэширование дан- ных. Кэширование каталогов целесообразно разрешать практически всегда, так как ДОС КП ведет последователь- ный поиск файлов в каталоге и, устанавливая размер клас- тера каталога равным размеру кластера кэша, администра- тор системы делает возможным размещать в оперативной памяти весь просматриваемый каталог. Это сокращает вре- мя поиска файла и значительно улучшает характеристики обмена с диском. Основным параметром кэширования, выбираемым ад- министратором системы, является размер кластера кэша. Размер кластера кэша определяет, сколько дисковых бло- ков файла будут помещаться в кэш при обращении програм- мы к диску. Администратор должен выбрать обоснованное соотношение кластера кэша с кластером диска. Например, если кластер кэша меньше кластера диска, то в кэш при об- ращении к диску помещаются не все данные кластера кэ- шируемого файла. А если размер кластера кэша больше кластера диска, то для его заполнения требуется не одно, а несколько физических обращений к диску. Администратор системы может разрешить или запретить определенный тип кэширования (каталогов или данных), 156
определить параметры кэширования, разрешенного по всей системе или для отдельных файлов пользователей. Напри- мер, команда программы UTILTY ENABLE CACHE/FILE/LIMIT : 65535/DIR : 65535/DATA : 65535 разрешает кэширование каталогов и данных без ограниче- ний, ключ /FILE в команде ENABLE CACHE определяет, что кэширование данных выполняется, если в режиме от- крытия файла или в элементе каталога этого файла опреде- ляется необходимость кэширования. Команда DISABLE CACHE запрещает кэширование в системе. READY RUN UTILTY UTILTY VI.О #LIST CACHE КЭШИРОВАНИЕ РАЗРЕШЕНО КЭШИРОВАНИЕ ВОЗМОЖНО ТЕКУЩИЕ ПАРАМЕТРЫ: РАЗМЕР КЛАСТЕРА: 4 КЭШИРОВАНИЕ ДАННЫХ: ПО ФАЙЛУ МАЛЫЕ БУФЕРА: НЕ ИСПОЛЬЗУЮТСЯ КОЛИЧЕСТВО ОБЩЕЕ КАТАЛОГИ ДАННЫЕ КЛАСТЕРОВ 65535 65535 65535 # CTRL/Z> READY Рис. 33. Характеристики выбранного режима кэ- ширования Поскольку кэширование всех без исключения обраще- ний к дискам может вызвать дополнительные непроизводи- тельные затраты времени при работе с файлами, админист- ратор системы имеет возможность определить, какие имен- но файлы целесообразно кэшировать при обращении к ним. Для этого используется команда FLAG программы UTILTY. Например, команда FLAG [4,43] TEST.DAT/CACHE/SEQ помечает файл [4,43] TEST.DAT таким образом, что при обращении к этому файлу данные будут кэшироваться в последовательном режиме. Текущие характеристики выбранного режима кэширо- вания администратор системы может проверить, исполь- зуя команду LIST CACHE программы UTILTY (рис. 33). 157
2.2. КОНТРОЛЬ ЗА СОСТОЯНИЕМ СИСТЕМЫ Важной функцией администратора системы является теку- щий контроль за выполнением заданий пользователей и основными системными параметрами. В ряде случаев вме- шательство администратора позволяет избежать тупиковых ситуаций и поддерживать эффективность работы системы на достаточно высоком уровне. К таким ситуациям можно отнести: уменьшение числа свободных малых буферов до критического; заполнение всего дискового пространства структуры общего доступа; освобождение зарезервирован- ных за отдельным заданием внешних устройств, которые используются нерационально, и т. д. Контроль за текущим состоянием системы администра- тор может выполнять с помощью программы SYSTAT, рас- печатывающей протокол состояния системы в момент вы- зова этой программы, и DISPLAY -программы, которая динамически корректирует сообщение о состоянии системы на терминале через заданные промежутки времени. 2.2.1. Программы отображения состояния системы Программа SYSTAT выводит на выбранное устройство про- токол состояния системы в момент запуска программы. Для слежения за динамикой работы системы администратор должен периодически вызывать эту программу. Программа SYSTAT может выполняться на всех типах терминалов, и ее отдельные режимы доступны также и непривилегирован- ному пользователю. Он может вызвать эту программу для контроля окружения, в котором будет работать его програм- ма (узнать, например, запущено или нет в системе то или иное задание, какие диски смонтированы в системе, к каким устройствам в данный момент запрещен доступ и почему). Программу SYSTAT можно запустить с терминала, ие за- регистрированного в системе. Запустив эту программу до регистрации в системе, потенциальный пользователь имеет возможность определить, стоит ли вообще входить в систе- му с данной дисковой структурой. Например, для него мо- жет не иметь смысла начинать работать с системой, если в данный момент в ней не организован режим пакетной обра- ботки или не смонтирован необходимый библиотечный диск. В отличие от SYSTAT программа DISPLAY доступна только администратору системы. Эта программа выдает на терминал сообщение о состоянии системы и динамически корректирует информацию через промежутки времени, за- 158
даваемые администратором при запуске программы. Про- грамма обеспечивает режим, в котором она может выпол- няться отсоединенно, предоставляя терминал в распоря- жение администратора для любых других целей. Работая в этом режиме, администратор системы может периодически подсоединяться к заданию, получая сообщение о текущем состоянии системы. Для непрерывного слежения за состоянием ДОС КП, как правило, удобнее использовать программу динамичес- кого отображения DISPLY, которая работает в «экранном» ОТКРЫТЫЕ ФАЙЛЫ И ОТКРЫВШИЕ ИХ ЗАДАНИЯ ОКО : ФАЙЛ OP/PR РАЗМЕР КЛС ОКО : [1,2] OPSER 6 .LOG <607 1/0 RD, WR 0 2 ОКО : [1,2] SPOOL 5 .CMD<60> 1/0 RD, WR 1 2 DKO : [1,2] MY 2 .LOG <607 1/0 RD, WR 13 2 DK1 : — ФАЙЛ OP/RR РАЗМЕР КЛС DK1 : [1,2] 0PSER1 6 .WRK <40 > 1/0 RD.WR 21 2 DK1 : [1, 7] OPSER0 .WRK <607 1/0 6 RD, WR DK2 : — НЕТ DK3 : — НЕТ ОТКРЫТЫХ ФАЙЛОВ 2 2 Рис. 34. Сообщение SYSTAT об открытых фай- лах режиме, т. е. использует возможности управления курсо- ром терминала для того, чтобы, сохраняя на экране сооб- щение о состоянии системы, периодически корректировать только изменившуюся информацию. Сообщение о состоянии системы, выдаваемое программой DISPLY, имеет примерно тот же вид, что и сообщение про- граммы SYSTAT. Вводом команд администратор системы может получать на экране тот или другой раздел сообщения, требовать более подробной индикации отдельных характе- ристик. Эти возможности позволяют преодолеть ограниче- ния размера экрана. Способы запуска программы SYSTAT и отдельные разделы сообщения SYSTAT о состоянии системы были описаны в ч. I. По сравнению с непривилегированными пользователями администратору системы программа SYSTAT предоставля- ет следующие дополнительные возможности. 159
При демонтировании дисков администратор может об- наружить, что иа них находятся открытые файлы, не по- зволяющие демонтировать диски. Кроме этого, некоторые системные программы при за- пуске проверяют, используют ли другие задания опреде- ленные специальные файлы. Например, программа может выдать сообщение об ошибке в случае, если рабочий файл программы открыт каким-либо другим заданием. В подобных ситуациях администратор системы имеет возможность определить, какие именно файлы открыты на дисках и какими заданиями. Программа SYSTAT выдает сообщение об открытых файлах, если при запуске SYSTAT указан ключ /W (рис. 34). Сокращения SYSTAT в комментариях протокола о сос- тоянии системы даиы в Приложении 2. 2.2.2. Управление структурой общего доступа К важным, совместно используемым всеми пользователями системным ресурсам, можно отнести и объем свободного дискового пространства структуры общего доступа. Поль- зователь, работая в системе, может занимать неограничен- ное дисковое пространство. Система накладывает ограни- чение только иа объем файлов пользователя в структуре общего доступа, сохраняемый после выхода пользователя из системы. Заполнение всей структуры общего доступа может при- вести к ошибкам работы системных и служебных программ. Администратор системы должен следить за этим парамет- ром и при необходимости включать дополнительные диски в структуру общего доступа. Если такой возможности нет из-за ограничений на состав технических средств, он дол- жен предпринять дополнительные меры по освобождению дискового пространства или уменьшению числа работаю- щих в системе пользователей. К таким мерам можно от- нести рассылку на все терминалы соответствующих сообще- ний, удаление и приостановку выполнения заданий и т. п. Для этой цели могут быть использованы команды програм- мы UTILTY, такие, как SEND, FORCE или KILL. При завершении работы всей системы программа завер- шения SHUTUP (см. гл. 6) проводит автоматическое демон- тирование всех дисков с принудительным закрытием всех находящихся на них открытых файлов. Снятие диска с устройства без его демонтирования мо- жет привести к тому, что отдельные файлы на диске оста- 160
нутся незакрытыми, на диске останутся временные файлы и файл SATT.SYS не будет отражать фактического распре- деления пространства диска. При повторном монтировании такого диска на терминал выдается сообщение о необходи- мости его чистки перед использованием. Чистка диска выполняется с помощью команды CLEAN программы UTILTY или программой ONLCLN. При чист- ке с диска удаляются все незакрытые или временные фай- лы и проводится корректировка файла SATT.SYS. В команде CLEAN или программе ONLCLN необходимо задать только имя устройства, на котором находится диск, например: CLEAN DK1: Перед физическим снятием каждого диска необходимо провести его демонтирование, выполняемое командой DISMOUNT программы UTILTY. После демонтирования диск становится недоступным для работы. Демонтирование диска является единственной процедурой, которая коррект- но завершает работу с диском. Демонтирование может быть выполнено успешно толь- ко в том случае, если на диске нет открытых файлов. Нали- чие открытых файлов означает, что с диском еще работают пользователи и его демонтирование может оказаться преж- девременным. Для решения вопроса о демонтировании дис- ка в этом случае целесообразно получить список открытых файлов, что может выполнить администратор системы, как описано в п. 2.2.1. 2.2.3. Текущий контроль работы пользователей На общую произведительность системы влияет количество свободных в данный момент малых буферов. Малый буфер представляет собой 32-байтный блок в буферной области резидентной части монитора ДОС КП. Цепочки таких буферов используются драйверами внешних устройств и различными подпрограммами управляющей программы ДОС КП для временного хранения информации. Некото- рые процессы в системе приостанавливаются при отсутствии необходимого числа свободных малых буферов, что может существенно уменьшить общую производительность систе- мы. Чтобы избежать подобных ситуаций, администратор системы обязан следить за наличием свободных буферов. При генерации он должен задать достаточный размер буфер- ' 6 Зак. 454 16!
ного пула, но избыточное число малых буферов может су- щественно повлиять на размер резидентной части монито- ра, что бывает критично в системах с малым объемом опе- ративной памяти. При возникновении ситуаций, когда число малых буфе- ров становится меньше критического (меньше 10), админи- стратор системы может запретить дальнейшую регистрацию пользователей в системе,-используя команду NO LOGINS. Аналогичную функцию выполняет команда SET LOGINS п, которая определяет максимум возможных регистраций в системе равным п. Как правило, эти команды используются вместе с коман- дами управления файлами свопинга. Для увеличения числа заданий, которые могут работать в системе параллельно, необходимо увеличить до нужной величины предел разре- шенных регистраций и обеспечить достаточный объем про- странства свопинга. Так, до выполнения команда SET LOGINS п, если п больше, чем Уа/Ушах, где Vs — общий объем файлов свопинга в Ксловах, a Vmax — максималь- ный размер задания в Ксловах, нужно ввести команду UTILTY: ADD SWAPFILE т свф., где т — номер добавляемого раздела свопинга (0, 1 или 3), свф — спецификация файла свопинга. Если устанавливаемый файл не существует на указан- ном диске, то задание после спецификации файла ключа /SI.ra вызывает создание непрерывного файла размером п дисковых блоков по 512 байт, который затем используется для свопинга заданий. Если администратор системы обнаруживает, что какое- либо задание на длительное время зарезервировало за со- бой внешнее устройство по команде ASSIGN (например, магнитную ленту), сделав его недоступным для других поль- зователей, а не использует его, то он может либо послать на терминал, к которому подсоединено данное задание, тре- бование освободить устройство, либо использовать коман- ду SEIZE программы UTILTY. Например, команда SEIZE МТО: резервирует устройство, занятое каким-либо заданием, за заданием, под которым выполняется программа UTILTY, т. е. за заданием администратора. После этого администра- тор системы может вернуть это устройство в систему (сде- 162
лать его доступным для всех пользователей) с помощью команды оператора DEASS IGN, например; READY DEASSIGN МТО : READY Еще одна важная функция администратора системы — обеспечение работы программ спулинга и пакетного режи- ма. Эти функции системы реализованы не в мониторе ДОС КП, а с помощью специальных системных программ, опи- санных в гл. 3. 2.3. СБОР И АНАЛИЗ СТАТИСТИКИ РАБОТЫ ПОЛЬЗОВАТЕЛЕЙ Для успешной работы ДОС КП, облегчения принятия ре- шений по оптимизации работы системы администратор дол- жен внимательно относиться к ведению статистики работы пользователей. В ДОС КП ведутся протокол работы аппаратных средств вычислительного комплекса, регистрация ошибок и сбоев. Анализ статистики этого типа позволяет администратору системы делать заключение о работоспособности того или иного устройства, учитывать это при планировании исполь- зования ресурсов вычислительного комплекса, повышая тем самым надежность вычислительной системы. Подроб- нее ведение такой статистики описано в гл. 5. В ДОС КП ведется постоянный контроль за учетной ин- формацией всех пользователей, что позволяет определять, кто и сколько в системе использовал системные ресурсы — процессорное время, память, время связи с ЭВМ, время работы с внешними устройствами. Статистика работы пользователей накапливается для каждого учетного номера и корректируется на системном диске в каталоге MFD после каждого действия, которое может изменить любой из отслеживаемых параметров. Системная программа MONEY позволяет администра- тору распечатать протокол учета работы любого пользова- теля или всех пользователей системы, а также может быть вызвана любым пользователем для контроля за использо- ванными им системными ресурсами. Непрерывное накопление подобной информации может привести к переполнению буфера хранения и к потере 6* 163
учетной информации. Поэтому администратор системы дол- жен периодически выводить протокол работы пользователей и выполнять функцию RESET (СБРОС) программы MONEY для обнуления накопленной информации. Размер буферов хранения позволяет накапливать учетную информацию, не вызывая переполнения приблизительно в течение неде- ли нормальной работы пользователей. READY RUN MONEY MONEY V1.0 ПРОГРАММА УЧЕТА ПОЛЬЗОВАТЕЛЕЙ УСТРОЙСТВО ВЫВОДА? кв ПЕЧАТАТЬ ПАРОЛЬ ’ N СБРОС’ У ДИСК?ОКО ВЫБОРОЧНО? У УЧЕТНЫЙ НОМЕР? 20, 25 ДАННЫЕ СБРОШЕНЫ ppN ВРЕМЯ КСТ ВРЕМЯ ВРЕМЯ ДИСК КВОТА ПРОЦЕССОРА СВЯЗИ УСТР 20,25 2:15:30:3 39000 3:45 26 470 600 УЧЕТНЫЙ НОМЕР? <CTRL/Z> READY Рис. 35. Сообщение MONEY о статистике работы пользователя В примере на рис. 35 дана статистика работы пользова- теля с учетным номером [20, 25]. После вывода протокола на экран терминала накопленная информация сбрасывает- ся в нуль и начинает накапливаться сначала. Протокол статистики показывает, что пользователь с учетным номером [20,251 использовал 2 ч 15 м 30,3 с процес- сорного времени, занимает на диске 470 из 600 отведенных ему дисковых блоков, использовал внешние устройства, отличные от дисков, в течение 26 м, занимая линию связи терминала с ЭВМ в течение 3 ч 45 м. Параметр КСТ — это фактор использования оперативной памяти. Этот пара- метр увеличивается на единицу, если задание, размером в 1 Кслово, находится в памяти в течение одной единицы кван- тования (одной пятидесятой доли секунды). Большему по размеру заданию соответствует большее значение КСТ. Разделив использованное время процессора на значение КСТ, можно определить средний размер задания пользова- теля. Так, для нашего примера средний размер задания равен 2,1 Кслова. 164
Глава 3 ПРОГРАММЫ СПУЛИНГА В системе с разделением времени возникает проблема сов- местного использования устройств и ресурсов, которые не могут быть доступны одновременно всем, а обычно резерви- руются на определенное время только за одним пользова- телем. В ДОС КП устройства резервируются за отдельными заданиями. Однако если резервирование магнитной ленты оправдано, то резервирование устройств печати за отдель- ным заданием неприемлемо. Вывод на печать отдельных фай- лов, получение твердой копии протокола выполнения за- “ дания, листинга программы, каталога файлов на каком- либо носителе необходимы практически всем пользователям системы. В случае резервирования устройства печати поль- зователь должен периодически проверять состояние уст- ройства и ждать, когда оно освободится. Но даже в этом случае у него нет гарантии, что после освобождения устрой- ство не будет зарезервировано за другим заданием. Это особенно важно для систем, в состав которых входит не- большое (1—2) количество устройств печати, причем не быстродействующих устройств широкой печати, а знако- синтезирующих устройств последовательного типа. Резервирование печатающего устройства за отдельным заданием может значительно снизить эффективность его использования. Так, вывод может происходить не в макси- мальном темпе, когда задание постоянно заполняет буфер печатающего устройства сразу после вывода информации из него на печать, а по мере получения каких-либо резуль- татов, например трансляции большой по объему программы. Администратор системы в этом случае лишен возможности оптимизировать работу устройства печати. Естественно в такой ситуации организовать очереди запросов к определенному печатающему устройству. Мо- нитор ДОС КП не ведет подобных очередей; администратор системы может организовать их с помощью специальных программ спулинга, входящих в системную библиотеку ДОС КП. К ним относятся программа ведения очередей и программа связи с оператором. Непосредственное выпол- нение запросов пользователей нз очередей выполняется программой вывода на печать SPOOL. С помощью тех же системных программ могут быть орга- низованы очереди запросов на пакетную обработку. Непо- средственное выполнение таких запросов выполняет про- грамма BATCH. 165
Программы, входящие в систему спулинга, выполняют- ся в отсоединенном режиме, т.е. не занимают физический терминал. Взаимодействие между ними осуществляется с помощью механизма приема/передачи сообщений, реали- зованного в ДОС КП. 3.1. ОБЩАЯ СХЕМА Запуск программ, составляющих систему спулинга, осу- ществляется обычно на этапе установки начальных харак- теристик системы по командам из специального файла, ко- торые выполняет программа INIT.BAC. Запуск программ выполняется в определенном порядке. Первой должна быть запущена программа обслуживания оператора OPSER, которая впоследствии при запуске дру- гих программ помещает информацию о них во внутреннюю таблицу управляемых заданий. Затем запускается програм- ма ведения очередей QUEMAN и после этого — программы SPOOL и BATCH, реализующие непосредственное выпол- нение запросов пользователей из очередей на печать или к процессору пакетной обработки. Кроме того, все программы объявляют себя приемниками сообщений. Чтобы поставить запрос в очередь на печать или к про- цессору пакетной обработки, пользователь вызывает со своего терминала программу QUE и задает командную стро- ку, в которой указывает очередь, куда следует поместить запрос (команду) и спецификацию обрабатываемого файла. В случае вывода на печать это спецификация файла, кото- рый нужно распечатать. Если запрос ставится в очередь пакетной обработки, то указанный файл должен содержать команды, выполняемые в пакетном режиме. Выполняя команду Q, программа QUE помещает запрос в специальный файл очередей QUEUE .SYS и посылает со- общение о запросе программе QUEMAN. Программа QUEMAN просматривает файл системных очередей и посылает программе, выполняющей запросы пользователей (SPOOL или BATCH), сообщение, в котором указывается командный файл пакетной обработки (програм- ма BATCH) или файл, который необходимо распечатать (для программы SPOOL). Программы SPOOL и BATCH обра- батывают полученный запрос и после его выполнения по- сылают сообщение программе QUEMAN о том, что запрос выполнен и задание готово обработать следующий. Если QUEMAN определяет, что в очереди, обрабатываемой этим заданием, есть еще запросы, процедура повторяется; если очередь пуста, программа переходит в состояние ожидания. 166
Программа QUEMAN, кроме того, передает сообщения о ходе обработки очередей и выполнении запросов на кон- соль обслуживания оператора. Этн сообщения передаются через программу OPSER. Программа OPSER осуществляет прием/передачу всех сообщений, которые обеспечивают связь программ спу- линга с оператором. Взаимодействие заданий спулинга с оператором через программу OPSER может осуществляться одним из следую- щих способов: 1) сообщениями. Сообщение — это специальным обра- зом сформатированные данные, которые без анализа и из- менений передаются программой OPSER заданию, которое определяется именем приемника сообщения и интерпрети- руется принимающей программой как одна из команд ко- мандного языка данной программы. Для ссылок оператора каждому сообщению OPSER присваивается порядковый номер; 2) запросами на вмешательство оператора. Запрос на вмешательство — это сообщение, которое требует опреде- ленного действия оператора или ответа на какой-либо воп- рос и приостанавливает обработку данного задания до по- лучения ответной реакции оператора (например, оператор должен смонтировать пакет магнитных дисков); 3) с помощью информационных строк. Информацион- ная строка не содержит данных о внешних выполняемых действиях и не требует немедленной реакции оператора, но передача информационных строк гарантирует полное протоколирование работы всей системы обслуживания оче- редей. Оператор может передавать программам спулинга коман- ды прерывания либо отвечать на запросы этих программ, передавая им сообщения через программу связи с операто- ром OPSER. Как уже говорилось выше, программа OPSER, как правило, выполняется в отсоединенном режиме, поэто- му для обращения к ней оператор должен запустить со сво- его терминала программу PLEASE, передающую сообще- ния программе OPSER, которая затем посылает его соот- ветствующей программе спулинга. Общая схема взаимодействия программ при обработке запросов пользователей приведена на рис. 36. Окончание работы всех перечисленных программ вы- полняется самой программой OPSER на этапе выполнения специальной фазы завершения работы системы с помощью программы SHUTUP, запускаемой администратором систе- мы для завершения сеанса разделения времени. Для сохра- 167
нения преемственности выполнения запросов между сеан- сами разделения времени и чтобы избежать потерь запросов пользователей, нужно строго придерживаться порядка, в котором следует заканчивать программы. В первую оче- редь завершаются программы с наиболее низким уровнем завершения. Программа SHUTUP не выполняет закрытия системы до тех пор, пока программа OPSER не закончит работу всех управляемых ею программ. Окончание рабо- печати Рис. 36. Общая схема функционирования программ спулинга ты программ может происходить как в немедленном режи- ме, так и с ожиданием точки логического окончания (на- пример, конца обработки очередного запроса). Так как все файлы, составляющие базу данных рассмат- риваемых программ (файл системных очередей, таблицы управляющих программ и т. п.), хранятся на дисках, а не в оперативной памяти, при перезапуске системы обслужи- вания очередей выполнение запросов из очередей продол- жается с той точки, в которой оно завершилось. Это дает возможность каждому пользователю один раз поставить свой запрос в очередь и не заботиться о том, когда и как его запрос будет обработан. Система сама следит за выпол- нением запросов из очереди, причем эта очередь сохраняется от сеанса к сеансу разделения времени. Если время выпол- нения запроса критично для пользователя, он может обра- 168
титься к администратору системы, который имеет возмож- ность изменять порядок обработки очередей и ставить от- дельные задания в начало системной очереди. 3.2. УПРАВЛЕНИЕ СПУЛИНГОМ И ПРОГРАММА ВЕДЕНИЯ ОЧЕРЕДЕЙ Администратор системы организует очереди вывода на печать и очереди пакетной обработки, запуская программу ведения очередей и необходимое число копий программ SPOOL и BATCH. В ДОС КП можно организовать до 8 оче- редей пакетной обработки и до 8 очередей к печатающим устройствам. Кроме того, ведутся общие очереди для вы- вода на печать и для пакетной обработки. Запросы, постав- ленные в общую очередь вывода на печать, будут обраба- тываться первой свободной программой SPOOL. Эти запро- сы пользователь может ставить в тех случаях, когда пара- метры печати и тип печатающего устройства не имеют ре- шающего значения для данного запроса. Работой системы спулинга администратор системы уп- равляет при запуске программ, задавая соответствующие ключи, которые определяют параметры, используемые при работе этих программ. Администратор системы имеет воз- можность оперативно изменять отдельные характеристики заданий пользователей, используя команды прерывания. 3.2.1. Команды управления При запуске программы OPSER или командами, переда- ваемыми через программу PLEASE, администратор системы может определить круг пользователей, которым разрешено вмешиваться в работу системы спулинга. Команда OPERA- TOR позволяет определить номера терминалов, с которых может быть запущена программа PLEASE. Команда имеет следующий формат: OPERATOR KBn : [m, pj где [т, р] — учетный номер пользователя, которому разрешено передавать команды программе OPSER; п — номер терминала, с которого можно вводить команды. Например, по умолчанию выполняется команда OPERATOR КВ * ; [1, *1 т. е. к программе OPSER разрешено обращение всех при- вилегированных пользователей с любого терминала систе- мы. 169
Аналогично администратор системы может изменить назначение консоли обслуживания оператора, т. е. выбрать терминал, иа который оператору выводятся сообщения о работе программ спулинга и запросы на вмешательство оператора. К таким запросам можно отнести требования программы SPOOL вывести устройство печати из режима автономной работы или установить бумагу на начало стра- ницы. По умолчанию в качестве консоли обслуживания оператора используется терминал, с которого выполнялся запуск программы OPSER. Команда CHANGE CONSOLE изменяет назначение кон- соли. Например, если программа OPSER была запущена с КВО:, для того чтобы все сообщения о работе системы спу- линга выводились на терминал КВ5:, нужно передать про- грамме OPSER команду CHANGE CONSOLE КВ5 : Возможность назначения в качестве консоли обслужи- вания оператора любого терминала системы обеспечивает гибкое использование терминалов, входящих в конфигу- рацию систем. Это может играть определенную роль, так как вывод сообщений о работе программ спулинга на экран терминала, с которого пользователь взаимодействует с другой программой, может вызвать смешение текстов на экране и затруднить или сделать невозможной нормальную работу оператора. Кроме возможности переназначения консоли обслужи- вания оператора, администратор системы может опреде- лять типы выдаваемых на нее сообщений.Например, коман- да MESSAGE NONE запрещает вывод всех сообщений’ на консоль обслуживания оператора, а команда MESSAGE REQUESTS разрешает вывод на экран только запросов на вмешательство оператора. Наиболее важной командой программы OPSER явля- ется команда INTERRUPT, с помощью которой оператор может передавать команды всем остальным программам, реализующим систему спулинга. Команда прерывания INTERRUPT имеет формат: INTERRUPT п : текст где п — идентификатор программы, которой должна быть передана команда. Эта программа идентифицируется либо номером задания, в рамках которого она выпол- няется, либо идентификатором приемника сообще- ний, который присваивается ей при запуске; текст — команда, которую должна выполнить указанная программа. Программа OPSER передает этот текст без изменений. 170
Используя эту команду, оператор управляет непосред- ственной работой каждого отдельного задания, входящего в систему спулинга. Команды, распознаваемые каждой программой спулин- га, можно условно разделить на три группы: команды, не влияющие на непосредственную обработку запросов пользователей (PAUSE, CONTINUE, LAST, STATUS); команды, прямо влияющие на работу программ и оди- наковые для всех заданий спулинга (END, ABORT, OFFLINE); уникальные для каждой программы команды (например, команды управления форматом печати, распознаваемые только программой SPOOL). В первую группу входят команды, дающие админист- ратору системы дополнительные возможности управлять работой этих программ или следить за их работой. Коман- да PAUSE позволяет приостановить работу выбранной программы, а команда CONTINUE продолжить ее нормаль- ную работу. По команде PAUSE программа спулинга пе- реходит в состояние ожидания, в котором она обрабатыва- ет большинство команд прерывания, но не производит об- работку запросов. Оператор может запросить справку о состоянии любой программы, передав ей команду STATUS. После приема этой команды программа выдаст информацию о своем сос- тоянии на терминал, с которого была введена команда STATUS. Допустим, что программа находится в состоянии ожидания ответа оператора на запрос, который не был им получен, так как он запретил вывод сообщений на консоль обслуживания оператора. В этом случае оператор может потребовать от программы повторения последнего сообще- ния, передав ей команду LAST. С помощью команд второй группы END или OFFLINE указанная в команде прерывания программа может быть завершена. Кроме перечисленных команд, каждая программа рас- познает некоторые команды, являющиеся уникальными для этой программы. Например, команда NOTICE, помещающая замечание оператора о выполнении пакетного задания в файл протокола пользователя, обрабатывается только про- граммой пакетного процессора BATCH, а команда NEXT, помещающая указанный запрос в начало заданной опера- тором очереди, обрабатывается только программой QUEMAN. Эти команды определяются непосредственно 171
функциями конкретной программы и не имеют смысла для других программ. Такие команды подробнее описаны в раз- делах, посвященных соответствующим программам. 3.2.2. Программа управления очередями Все очереди запросов пользователя вывода на печать, а также очереди пакетной обработки в ДОС КП ведет про» грамма QUEMAN. Длина каждой очереди, обрабатываемой QUEMAN, не должна превышать 256 запросов. С помощью QUEMAN оператор может следить за состоянием очередей или вмешиваться в работу SPOOL, оптимизируя при необ- ходимости работу системы спулинга. Программа QUEMAN обрабатывает команды прерыва- ния, общие для всех программ спулинга, и выполняет не- сколько специальных команд, наиболее важными из кото- рых являются команды DISABLE, ENABLE и NEXT. Используя команду NEXT, администратор системы мо- жет поставить любой запрос первым в очереди, указав имя запроса и имя очереди, в начало которой его нужно помес- тить. Например, команда NEXT LP0: = REW ставит запрос пользователя REW, который требует вывода файла на устройство печати, в начало очереди вывода на устройство LPO: Команды DISABLE и ENABLE используются для уп- равления процессами ведения очередей и обработки запро- сов. Указывая в этих командах ключевые слова, админист- ратор может запрещать или разрешать определенный тип обработки. Например, команда DISABLE ALL приостанавливает операции спулинга в системе. Пользователь не может по- ставить запрос в очередь, и выполнения запросов из очере- дей не происходит. После команды ENABLE QUEUING запросы из очередей по-прежнему не выполняются, но оче- реди обрабатываются программой QUEMAN, и можно вы- полнить установку запроса в очередь. Если вместо команды ENABLE QUEUING была введена команда ENABLE SPOOLING, то выполняется обработка запросов нз очере- дей, т. е. идет вывод файлов на печать и выполнение пакет- ных заданий, но новые запросы в системные очереди не по- мещаются. 172
Как уже говорилось, длина каждой очереди не может превышать 256 запросов. Если администратор системы оп- ределил, что очереди запросов уже достигают значительной длины, он может приостановить на некоторое время процесс постановки новых запросов в очередь. Для этого может быть выполнена процедура, описанная в предыдущем примере, либо введена команда DISABLE QUEUING. Продол- жение нормальной работы системы спулинга может быть инициировано командой ENABLE ALL. 3.3. ПРОГРАММА SPOOL Запросы пользователей на вывод файлов на печатающее устройство выполняются программой SPOOL. Кроме это- го, программа SPOOL может выполнять дополнительные функции, определяемые администратором системы. К таким функциям относится, например, вывод на устройство печа- ти в указанном формате, т. е. управление длиной и шири- ной страницы. Программа обрабатывает также управляю- щие символы, если устройство аппаратно не распознает их, т. е. осуществляет функции контроллера печатающего уст- ройства. Например, если устройство не распознает символ перевода формата, программа SPOOL сама считает напеча- танные строки и выводит вместо символа перевода формата нужное количество символов перевода строки. Если уст- ройство не распознает символов перевода строки, то про- грамма SPOOL сама считает количество напечатанных в строке символов и выводит вместо символа перевода строки нужное количество пробелов и т. п. Для облегчения нахождения нужного файла, распеча- танного из общей очереди, программа SPOOL снабжает каждый выведенный файл страницей заголовка, на которой большими буквами напечатаны учетный номер пользователя, имя файла и другая необходимая для опознавания листин- га информация. Программа содержит три модуля и выполняет следую- щие действия: резервирует за собой одно из устройств печати, делая его недоступным для заданий; управляет форматом печати согласно характеристикам, определенным оператором при запуске программы или по командам прерывания; реализует функции устройства управления АЦПУ; ин- терпретируя при необходимости такие управляющие сим- волы, как <FF>, <LF>; 173
взаимодействует в нормальном режиме с программой QUEMAN, а при необходимости и с оператором, требуя, например, устранить неисправность на устройстве; обрабатывает команды прерывания; формирует страницу заголовка для каждого запроса пользователя. Администратор системы задает характеристики прог- раммы SPOOL либо с помощью ключей, указываемых при запуске программы, либо изменяет их оперативно, исполь- зуя команды прерывания. При запуске программы SPOOL могут быть указаны ключи, определяющие нестандартный приоритет задания или квант времени выполнения. Если в команде запуска указан ключ /PHYSICAL:**, то программа SPOOL Исполь- зует в качестве устройства печати устройство **. В этом случае устройство ** после окончания вывода файла про- граммой SPOOL снова становится доступным другим поль- зователям системы. Если же вместе с ключом/PHYSICAL указан ключ /ASSIGN, то устройство резервируется за за- данием, в рамках которого выполняется SPOOL, до оконча- ния сеанса разделения времени. Например: READY RUN SPOOL SPOOL V 1.0 # LP0:/PRIORITY:0/RUNBURST: 12/PHYS!CAL:LP1 ./ASSIGN ОТСОЕДИНЕНИЕ... Программа SPOOL в данном примере будет выполняться с более высоким, чем стандартный, приоритетом 0, квант времени выполнения равен 12 единицам квантования. Про- грамма SPOOL обрабатывает запросы из очереди с именем LP0, используя в качестве устройства вывода печатающее устройство, указанное в ключе /PHYSICAL—LP1:. Уст- ройство LP1: резервируется за данным заданием на все вре- мя работы программы SPOOL. 3.3.1. Управление форматом печати Одна из функций программы SPOOL — управление фор- матом печати, т. е. определение длины и ширины страницы печати, размера и количества страниц заголовков; осуществ- ление программной обработки управляющих символов<ЕЕ> и <LF>, если контроллер печатающего устройства аппа- ратно не обрабатывает эти коды. 174
Формат печати может быть определен ключами запуска программы SPOOL:/FORM и /LPFORM, а также в команде прерывания FORM. Команда FORM определяет формат вывода в соответст- вии с ключами, заданными в этой команде, и имеет формат: FORM имя/ключи где имя — это имя формата вывода иа печать. С командой FORM могут быть указаны следующие клю- чи: /ALIGN — указывает, что перед выполнением каждого очередного запроса программа SPOOL требует выравнива- ния бумаги; /DFLENGTHcn — определяет количество строк (и) иа странице, т. е. параметр, используемый контроллером пе- чатающего устройства: /WIDTH:n — определяет длину (п) строки. По умол- чанию ширина формата равна 132; /LENGTH:n — определяет логическую длину формата, то есть число строк на каждой выводимой странице; /HEADING:n — определяет количество страниц заго- ловков, печатаемых перед выводом файла. 3.3.2. Обработка сбоев печатающего устройства В тех случаях, когда возникают проблемы в работе печатаю- щего устройства (например, формат устройства не согласу- ется с форматом, в котором выводит файлы программа SPOOL), или произошел сбой печатающего устройства, оператор может вмешаться в работу программы, используя команды прерывания. С помощью команды REQUE оператор может прервать выполнение текущего запроса и поставить его снова в оче- редь вывода, чтобы впоследствии вывод печатаемого запро- са был продолжен с той точки, в которой он был прерван. Используя команду RESTART, оператор может потре- бовать повторной печати текущего запроса либо, указав в команде номер запроса, повторить его печать, включая страницы заголовка. Указывая в качестве аргумента команды RESTART число п, оператор требует повторить вывод файла, начиная со страницы номер п. При обнаружении сбоя в работе печатающего устройст- ва программа SPOOL приостанавливает обработку запро- са, выдает на консоль обслуживания оператора соответст- вующее сообщение и ждет вмешательства оператора. 175
3,4. ПРОЦЕССОР ПАКЕТНОЙ ОБРАБОТКИ Возможность выполнять задания Гв пакетном режиме рас- ширяет область применения ДОС КП. Задания пользова- теля выполняются в фоновом режиме без взаимодействия с пользователем. К задачам, не требующим интерактивной работы, можно отнести генерацию пакетов прикладных программ, выполнение сложных инженерных и научных расчетов, длительную трансляцию больших программ с языков высокого уровня и т. п. Выполнение задания пользователя может потребовать вмешательства оператора (например, установка тома маг- нитной ленты, смена дискового пакета). В этом случае про- грамма пакетной обработки BATCH передает соответствую- щий запрос на консоль обслуживания оператора. Опера- тор, назначенный администратором системы, выполняет требуемые действия. В ДОС КП может быть организовано до 8 очередей пакетной обработки, т. е. одновременно могут быть созданы 8 заданий, в рамках которых выполняется программа BATCH. Каждая из этих программ может быть запущена с различными параметрами, например с разными приоритетами или квантами времени выполнения. В этом -случае можно распределять запросы между очередями в соответствии со срочностью их выполнения. Процессор пакетной обработки BATCH выполняет командные файлы пользователей, используя для этого псев- дотерминал. Это виртуальное устройство имеет два регист- ра — буфер ввода и буфер вывода. Обращение к псевдотер- миналу может выполняться по имени РКп:, где п — номер псевдотерминала, и по имени КВ/п:, где т = k 4- п. Здесь л — номер псевдотерминала, k — количество физических терминалов в системе. Использование того или другого имени при обращении к псевдотерминалу определяет способ работы с ним. Так, бу- фер ввода РКп: является буфером вывода КВ/п, а буфер вывода РКп: — буфером ввода КВ/п:. Такая связь между КВ/п: и РКп: позволяет использовать псевдотерминал как устройство, с помощью которого одно задание может уп- равлять работой другого задания, имитируя работу поль- зователя за терминалом. Физический терминал при этом не занимается. На рис. 37 приведена схема использования псевдотерминала при выполнении задания пользователей в пакетном режиме. Режим работы каждой программы BATCH определяется администратором при запуске программы заданием соответствующих ключей. Так, ключи /PRIORITY и 176
/RUNBURST определяют приоритет и квант времени вы- полнения данного задания. Ключ /ERROR определяет уровень ошибок, возникновение которых при выполнении задания пользователя вызывает прекращение обработки запроса. В ключе /ERROR вместо арг следует задавать ар- гументы: NONE — выполнение запроса прекращается после об- наружения любой ошибки; Рис. 37. Использование псевдотерминала процессором па- кетной обработки WARNING — выполнение задания не прекращается при возникновении предупреждающих сообщений об ошиб- ках; FATAL — прн возникновении любых ошибок задания пользователя выполняются до конца. Программа BATCH ведет протокол выполнения задания пользователя. По этому протоколу пользователь впослед- ствии может проследить за выполнением своего пакета и проанализировать возникшие ошибки. По умолчанию программа BATCH после завершения задания помещает в очередь вывода на печать запрос на вывод файла протоко- ла выполнения данного задания. Если файлы протоколов выполнения распечатывать ненужно,то программа BATCH должна быть запущена с ключом /NOQUE. Программа BATCH обрабатывает все команды преры- вания, общие для всех программ, работающих под управ- 7 Зак. 454 177
лением OPSER. Кроме этого, оператор может помещать в протокол выполнения заданий пользователя примечание, снабженное заголовком «ЗАМЕЧАНИЕ ОПЕРАТОРА». Это замечание должно быть передано программе пакетной обработки BATCH с помощью команды прерывания NOTICE. Текст, указанный в этой команде, помещается в протокол выполнения задания. Правила оформления командных файлов для пакетной обработки были описаны в ч. I, гл. 1. В этой же главе опи- саны способы помещения запросов в очередь пакетной об- работки. Глава 4 СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ НОСИТЕЛЕЙ В системах коллективного пользования важную роль игра- ет предохранение информации пользователей от крахов системы, разрушения информации на дисках. В функции администратора системы как лица, ответст- венного за нормальную работу всех пользователей сис- темы, входит обязанность сохранять информацию в архи- вах на магнитных лентах. Такое дублирование системных носителей позволяет избежать потери информации и при необходимости восстановить разрушенный носитель. Режим сохранения (периодичность и порядок копиро- вания информации на магнитную ленту) определяется ад- министратором для каждой конкретной системы в зависи- мости от интенсивности обновления информации и других факторов. 4.1. СОХРАНЕНИЕ НОСИТЕЛЕЙ Программа SAVRES выполняет три функции (SAVE, RESTORE, IMAGE), предназначенные соответственно для сохранения, восстановления и копирования дисковых но- сителей, записанных в формате ДОС КП. Функция IDEN- TIFY служит для получения идентификационной информа- ции о томах архива SAVE или о дисках ДОС КП. Отли- чительной особенностью SAVRES является то, что при об- наружении дефектных блоков она не требует вмешательст- ва оператора. Программа SAVRES используется, если не- обходимо: создать надежную копию диска ДОС КП; 178
создать копию диска ДОС КП на диске, который содер- жит дефектные блоки, не занесенные в файл BADB.SYS; создать загружаемый архив системного диска ДОС КП. В системе существуют две версии программы SAVRES. Одна версия включена в программу инициализации INIT.SYS и может быть запущена автономно (без взаимо- действия с операционной системой), с помощью следующей последовательности команд: РЕЖИМ SA VRES MM .DD YY? 11.01 83 НН-.ММ’ 12:00 ФУНКЦИЯ SAV/RES Вторая версия SAVRES является программой, выпол- няемой в режиме разделения времени, и запускается стан- дартным образом с помощью команды RUN: RUN SAVRES ФУНКЦИЯ SAV/RES: Первая версия программы SAVRES используется в ос- новном для сохранения, восстановления и копирования системного диска ДОС КП; вторая версия—для выполне- ния аналогичных функций с несистемными дисками ДОС КП (дисками структуры общего доступа и личными дисками). После появления подсказки ФУНКЦИЯ SAV/RES: можно выполнить одну из четырех функций SAVRES: SAVE, RESTORE, IMAGE или IDENTIFY, напечатав в ответ на эту подсказку название функции, или сокращенно SA, RE, IM или ID, с необязательным добавлением ключей, задаваемых в стандартном для ДОС КП виде. Функция SAVE используется для создания копий дис- ков на магнитные ленты в архив SAVE. SAVRES в отличие от многих программ сохранения, используемых в операци- онных системах СМ ЭВМ, записывает на магнитную ленту не образ диска, а лишь полезную информацию, используя файловую структуру ДОС КП. Поэтому программа SAVRES более оптимально использует ленты и быстрее прн работе с дисками, на которых много свободных блоков. Функция RESTORE предназначена для восстановления дисков из архива SAVE на диски ДОС КП. Единственная 7* 179
возможность восстановить диск ДОС КП после его сохра- нения в режиме SAVE системными средствами — исполь- зование функции RESTORE. Функция IMAGE служит для копирования дисков ДОС КП на идентичные диски. Функция IDENTIFY служит в основном для получения меток и некоторой другой служебной информации об архи- вах SAVE и дисках ДОС КП. Все четыре функции SAVRES могут выполняться в ре- жиме разделения времени (программа SAVRES.SAV) или до запуска сеанса разделения времени (функция SAVRES программы инициализации INIT.SYS). Функция SAVRES программы INIT.SYS используется в основном при работе с системным диском, так как в режиме разделения времени нельзя сохранить и скопировать текущий системный диск н нельзя восстановить какой-либо диск из архива SAVE на текущий системный диск. Невозможность этой процедуры объясняется тем, что SAVRES работает только с демонти- рованными дисками. Диски структуры общего доступа и личные диски удобнее сохранять, восстанавливать и -ко- пировать в режиме разделения времени, предварительно демонтировав их, не прерывая при этом работу всех осталь- ных пользователей. Возможные значения ключей при задании функции SAVRES приводятся ниже: /ЕХ [PIRATION] [:дата] — используется только при задании функции SAVE, дата — дата сохранения информа- ции на ленте. Если будет осуществлена попытка записи на ленту до истечения заданной даты, то SAVRES выдает пре- дупреждающее сообщение. Если аргумент дата не задает- ся, то срок хранения данных на ленте равен одному году, начиная с текущей даты; /NOEX [PIRATION] — SAVRES в качестве даты хранения использует текущую дату; /VE [RIFY] допустим лишь для операций SAVE, RESTORE и IMAGE. При наличии этого ключа после окон- чания указанной операции SAVRES сравнивает входной и выходной носители; /NOVEIRIFY] — SAVRES не сравнивает входной и выходной носители; /STIATS]— SAVRES печатает сводное сообщение после окончания заданной операции; /NOSTIATS] — сводное сообщение по окончании опе- рации не печатается. По умолчанию используется следующая комбинация ключей: EXPIRATION, NOVERIFY н STATS. 180
В зависимости от выбранной функции SAVRES прово- дит соответствующий диалог. Ответив на вопросы диалога, SAVRES выполняет требуемую функцию, печатая сообще- ние о выполняемых действиях, о возникающих ошибочных ситуациях, которые могут потребовать вмешательства опе- ратора или которые указывают на дефектные блоки на вход- ном или выходном носителях. После выполнения требуемой функции SAVRES печатает сводное сообщение, в котором указывает дату и время начала и окончания данной опе- рации, номера дефектных блоков и имена файлов, в кото- рых обнаружены эти дефектные блоки. Примеры распечат- ки сводных сообщений при выполнении различных опера- ций SAVRES приведены ниже. Пользователь может не про- водить диалога с SAVRES. Для этого необходимо в ответ на подсказку о функции SAVRES задать полную команд- ную строку. В этом случае SAVRES задает лишь один вопрос: ВЫПОЛНЯТЬ (YES или NO)? Командная строка задается в формате: ФУНКЦИЯ SAVRES : функция вых. устр ~ = вх. устр. [/ключи] где функция — одна из функций SAVRES : SAVE, RESTORE IMAGE или IDENTIFY; вых. устр. и вх. устр. — спецификации выходного и входно- го устройств для функции SAVRES. Описание спецификации уст- ройств для SAVRES приведено ниже; ключи — ключи функции. Формат спецификации входных и выходных устройств, используемых в командной строке SAVRES: устр. : [метка] [/ключи] где устр — физическое имя и номер используемого устройства; метка — имя архива SAVE (совокупность выходных носителей после операции SAVE) либо метка диска ДОС КП; ключи — могут иметь следующие значения: /SCRJATCH] — используется только с выходными уст- ройствами. При использовании этого ключа SAVRES не осуществляет большинство проверок иа выходном устройстве (например, не проверяет истечения срока хранения); /DEN [SITY] : [800] [1600] — используется только с магнитными лентами и задает плотность записи на ленте. Допустимым диском для операций SAVRES может быть любой диск, поддерживаемый ДОС КП и отвечающий сле- дующим требованиям: диск должен быть отформатирован (т. е. размечен по секторам); 181
диск должен быть инициализирован в формате ДОС КП с помощью функции DSK.INT INIT.SYS или программы DSKINT.BAC; первые 16 блоков диска не должны быть дефектными; выходной диск не должен содержать более 161 дефект- ного кластера. Допустимыми лентами для операций SAVRES являются магнитные ленты, отвечающие следующим требованиям: магнитная лента должна иметь достаточную длину для записи на нее метки архива SAVE, программы-автозагруз- чика и программы INIT.SYS. INIT.SYS записывается лишь на первую ленту архива SAVE. SAVRES пишет INIT.SYS на первую ленту архива SAVRES, чтобы сделать архив са- мозагружаемым, т. е. независимым от наличия на машине операционной системы. Это особенно удобно при переносе системы с одной машины на другую или при восстановле- нии системного диска на той же машине. INIT.SYS, загру- жаемая из архива SAVE, выполняет не все функции, обыч- но выполняемые INIT.SYS, а лишь их подмножество, не- обходимое для инициализации диска, запуска SAVRES и программной загрузки (функции DSKINT, SAVRES и BOOT); дефектный блок на ленте считается логическим концом ленты при операции SAVE; все ленты архива SAVE должны быть записаны с одной и той же плотностью. SAVRES проверяет указанный в диа- логе входной том до осуществления любой передачи данных и печатает предупреждающее сообщение о том, что могут возникнуть проблемы при операциях копирования или сохранения. Всего программа SAVRES может напечатать три типа предупреждающих сообщений, описание которых приведено ниже: 1. % % % ВХОДНОЙ ДИСК ИМЕЕТ пп % СВОБОДНЫХ КЛАСТЕРОВ. МОНТИРОВАТЬ (Y/N)<NO>? На выходном диске ДОС КП должно быть по’крайней мере столько же кластеров, не содержащих дефектных бло- ков, сколько кластеров должно быть передано со входного диска. Если же программа SAVRES обнаруживает, что входной диск имеет очень мало свободных кластеров, то она предупреждает, что могут возникнуть проблемы при копировании диска. При ответе NO на вопрос МОНТИРОВАТЬ (Y/N)<NO> SAVRES возвращается к вопросу о входном носителе. При ответе YES SAVRES будет выполнять операцию IMAGE. Программа проверяет также выходной том на количество 182
хороших кластеров. Если общее число хороших кластеров на выходном диске меньше либо равно числу занятых клас- теров на входном диске, то печатает сообщение %%% слишком МНОГО ПЛОХИХ БЛОКОВ НА ВЫХОДНОМ ДИСКЕ и вновь печатает предыдущее сообщение об устройстве. 2. Если указывается метка пакета или имя архива SAVE в спецификации входного устройства, SAVRES проверяет эту метку или имя архива на соответствие с меткой, уже записанной иа заданном томе. Если они не совпадают, то SAVRES печатает сообщение %%% НЕВЕРНЫЙ ТОМ и возвращается к вопросу о входном устройстве. 3. Если входной том не является диском ДОС КП или томом архива SAVE, то SAVRES печатает сообщение %%% ТОМ НЕ ИМЕЕТ МЕТКИ и возвращается к вопросу о входном устройстве. SAVRES проверяет выходной том перед сохранением, восстановлением или копированием диска ДОС КП и печа- тает различные сообщения. Некоторые из этих сообщений лишь информируют пользователя о дате создания, сроке хранения, имени архива SAVE, количестве доступных блоков на выходном устройстве. Остальные сообщения ука- зывают на возможность возникновения различных проблем при выполнении операций SAVRES. Ниже приводится опи- сание этих сообщений, причин их возникновения и возмож- ных ответов на них. Если выходным устройством является том архива SAVE и срок хранения этого архива истек, то SAVRES печатает информацию * « * ТОМ НА устр: АРХИВ SAVE < хххххх > ПЛОТНОСТЬ: 800 ДАТА СОЗДАНИЯ: ДЕНЬ НЕДЕЛИ, ДАТА СРОК ХРАНЕНИЯ: ДЕНЬ НЕДЕЛИ, ДАТА и задает следующий вопрос диалога. Здесь устр: — это спецификация устройства, на кото- рое установлен архив SAVE, a <Zxxxxxx> — имя данного архива SAVE. Если срок хранения архива не истек, то к этой информации добавляются следующие сообщения: %%% СРОК ХРАНЕНИЯ ЕЩЕ НЕ ИСТЕК МОНТИРОВАТЬ <NO>? При ответе NO SAVRES возвращается к предыдущему вопросу об устройстве, при ответе YES программа печата- ет следующий вопрос диалога. 183
Если же выходной том при операции IMAGE является диском ДОС КП, то SAVRES печатает следующую инфор- мацию: * * » ТОМ НА устр-. ДИСК ДОС КП * * • МЕТКА ПАКЕТА < хххххх > » » » ПАКЕТ БУДЕТ ИНИЦИАЛИЗИРОВАН МОНТИРОВАТЬ <NO>? где С хххххх > — метка данного диска. Как и в случае, когда выходным носителем является том архива SAVE, при ответе NO SAVRES возвращается к вопросу о выходном устройстве, при ответе YES задает следующий вопрос диалога. SAVRES обычно пишет каждый занятый кластер паке- та со входного диска в тот же кластер на выходной диск ДОС КП. Если этот выходной кластер является дефектным (содержит дефектный блок), SAVRES попытается помес- тить эту информацию в другое место на выходном диске. Если размер кластера передаваемой информации (размер кластера файла, размер кластера каталога) больше раз- мера кластера пакета выходного диска, то на выходном дис- ке должно быть достаточно непрерывных кластеров пакета для помещения всего этого кластера информации. Если нужного количества непрерывных кластеров на выходном диске нет, то SAVRES прекращает выполнение операции. SAVRES всегда использует информацию о плохих блоках, содержащуюся в файле BADB.SYS диска ДОС КП. 4.2. СОХРАНЕНИЕ ДИСКА ДОС КП Функция SAVE программы SAVRES используется для со- хранения целого диска ДОС КП на ленте. Все ленты, ис- пользуемые для сохранения входного диска, называются архивом SAVE и записываются в специальном формате программы SAVRES. Восстановить образ диска программой SAVRES можно, используя функцию RESTORE этой про- граммы. Для вызова данной функции надо ответить SA на вопрос-подсказку о функции программы SAVRES. Именем архива SAVE по умолчанию является метка па- кета сохраняемого диска. Как уже отмечалось выше, метку архива можно задать и явно в спецификации выходного устройства. 4.3. ВОССТАНОВЛЕНИЕ ДИСКА ДОС КП Для восстановления диска ДОС КП из архива SAVE необ- ходимо использовать функцию RESTORE программы 184
SAVRES. До передачи каких-либо данных из архива SAVE SAVRES помещает блоки, если таковые имеются, из файла BADB.SYS диска, на который идет восстановление, в но- вый файл BADB.SYS, создаваемый на этом диске. SAVRES может обнаружить дефектные блоки в процессе восстанов- ления диска ДОС КП. В этом случае она помещает этот де- фектный блок в список дефектных блоков BADB.SYS и on- flow SAVHES ФУНКЦИЯ SAV/RES: RE С УСТРОЙСТВА 1 МТО: ИМЯ АРХИВА == МЕТКА- LIBPAK НА ДОСКП ДИСК DK:.?.DK.r,* • • • ТОМ НА DK1: ДИСК ДОС КП * • • МЕТКА - USR1 • • • диск будет инициализирован: МОНТИРОВАТЬ (Y/N) <NO>? У • • • МЕТКА - LIBPAK ПРОВЕРЯТЬ (Y ИЛИ N) < NO> ? N ВЫПОЛНЯТЬ (YES/NO) ? У СТАРТ RESTORE С МТО : НА DK1: В 10:26 СНЯТИЕ УСТР-ВА: МТО: АРХИВ: LIBPAK НОМЕР: ПЛОТНОСТЬ: ДАТА СОЗДАНИЯ: СРОК ХРАНЕНИЯ: 1 800 ВОСКР., 03-JAN-B2 ПОНЕД., 03-JAN-83 СНЯТИЕ УСТР-ВА: ОК1: МЕТКА: РАЗМЕР КЛАСТЕРА: LIBPAK 2 ДАТА СОЗДАНИЯ: ВТОРНИК 30-NOV-B2 Рис. 38. Пример выполнения функции RESTORE ределяет, есть ли пространство, куда может быть записан блок, соответствующий этому дефектному блоку. Если сво- бодное пространство есть на выходном диске, то программа помещает данные на это место, соответствующим образом изменяя таблицу распределения памяти SATT.SYS. Такое перемещение блоков может вызвать изменение характерис- тик файлов. Это может произойти, например, если SAVRES обнаруживает дефектный блок при передаче непрерывного файла. В этом случае при перемещении кластера, содержа- щего дефектный блок, SAVRES вынуждена будет создать файл связным. При этом SAVRES печатает соответствую- щее сообщение, какие характеристики какого файла были 185
изменены. Операция RESTORE прерывается, если невоз- можно поместить кластер данных. Это может произойти по одной из следующих причин: на диске нет свободных кластеров; размер кластера передаваемого файла больше размера кластера выходного диска; на этом диске нет эквивалентного количества непрерыв- ных кластеров. На рис. 38, с. 185 приводится пример выполнения функ- ции RESTORE. 4.4. КОПИРОВАНИЕ ДИСКА ДОС КП Функция IMAGE программы SAVRES позволяет делать копии дисков одного типа ДОС КП. При выполнении копи- рования дисков ДОС КП операции над дефектными блоками RUN SAVRES ФУНКЦИЯ SAV/RES:/Af С ДИСКА ДОС КП ? DK2: • • ВВОД.МЕТКА == ВЫВОД-МЕТКА - USPR1 НА ДОС КП ОК: ДИСК ? DK3:W0RK2 ТОМ НА DK3: - ДИСК ДОС КП МЕТКА - SYSTEM • • • ДИСК БУДЕТ ИНИЦИАЛИЗИРОВАН МОНТИРОВАТЬ <Y/N)<NO>?y • * ’ ВЫВОД.МЕТКА - W0RK2 ПРОВЕРЯТЬ (Y ИЛИ N)< NO >? У ВЫПОЛНЯТЬ (YES/NO) ’ У СТАРТ IMAGE COPY СТАРТ ПРОВЕРКИ О РАЗЛИЧИЙ С DK2:HA DK3: В 10 ’44 С DK2: НА DK3: В 10 44 СНЯТИЕ УСТР-ВА: МЕТКА; РАЗМЕР КЛАСТЕРА: ДАТА СОЗДАНИЯ: DK3: WORK2 2 ВОСКР.. 23 - SEP - В2 ПОМЕТЬТЕ ЭТОТ ТОМ ' —IMAGE COPY ОПЕРАЦИЯ ЗАВЕРШЕНА В 10:45 Рис. 39. Пример выполнения функции IMAGE 186
выполняются так же, как и при выполнении операции RESTORE программы SAVRES. На рис. 39 приведен при- мер выполнения операции IMAGE: 4.5. ИДЕНТИФИКАЦИЯ ДИСКА ДОС КП ИЛИ АРХИВОВ Для получения информации о метке диска ДОС КП или архива SAVE надо использовать функцию IDENTIFY про- граммы SAVRES. Примеры приведены на рис. 40. READY RUN SAVRES ФУНКЦИЯ SAV/RES: ID МТО: УСТРОЙСТВО: МТО- ИМЯ АРХИВА: MYSAVE НОМЕР: 1 ПЛОТНОСТЬ: 800 ДАТА СОЗДАНИЯ: СРЕДА, 23-NOV-83 СРОК ХРАНЕНИЯ: ПЯТНИЦА, 23-NOV-84 ФУНКЦИЯ SAV/RES: IDDK1: УСТРОЙСТВО: DK1 ИМЯ ПАКЕТА: SYSLIB РАЗМЕР КЛАСТЕРА: 2 ДАТА СОЗДАНИЯ: СРЕДА, 23-NOV-83 ФУНКЦИЯ SAV/RES: <CTRL/Z> READY Рис. 40. Примеры выполнения функции IDENTIFY Данная функция используется, например, в тех случа ях, когда необходимо инициализировать диск. Глава 5 ДИАГНОСТИКА СИСТЕМНЫХ ОШИБОК Одной из функций монитора ДОС КП является автомати- ческая регистрация ошибок оборудования и системозави- симых ошибок программного обеспечения. Протоколиро- вание этих ошибок, их распечатку осуществляет специаль- ный пакет системных программ, называемый пакетом ди- агностики системных ошибок. 187
При возникновении ошибки монитор сохраняет инфор- мацию об этой ошибке в отведенной для этого области мони- тора и посылает сообщение программе ERRCPY. Эта про- грамма производит минимальную обработку информации об этой ошибке и помещает ее в специально сформатиро- ванный дисковый файл ERRLOG.FIL. Количество сообще- ний об ошибках, которые находятся в очереди на обработку к программе ERRCPY, ограничено. Поэтому чтобы не до- пустить потери важной диагностической информации, ERRCPY должна постоянно выполняться, а не вызываться для обработки каждой ошибки с диска. В связи с этим для функционирования системы является критическим размер программы ERRCPY. Поэтому проверку существования и проверку на корректность файла регистрации ошибок ERRLOG.FIL осуществляет программа ERRINT, которая при окончании работы отсоединяется от терминала, загру- жает на свое место ERRCPY и передает ей управление. Если разрешен авторестарт, то при крахе системы оп- ределенные критические области памяти монитора пишут- ся в специальный системный файл CRASH.SYS, находя- щийся в каталоге [0, 1] на системном диске. Сразу после восстановления системы после краха необходимо запус- тить программу ANALYS, которая выбирает и форматиру- ет ключевую информацию из файла CRASH.SYS. Одной из функций программы ANALYS является создание отдель- ного файла регистрации ошибок (по умолчанию это ERRCRS.FIL), в которой помещается информация об ошиб- ках, не обработанных ERRCPY в момент краха системы. 5.1. РЕГИСТРАЦИЯ ОШИБОК Как уже отмечалось выше, программа ERRCPY может быть активизирована лишь программой ERRINT. Ответ- ственность за правильность запуска ERRINT (и, следова- тельно, ERRCPY) лежит на администраторе системы. Как правило, ERRINT запускается командами из командных файлов запуска системы START.CTL или CRASH.CTL (см. п. 1.3). После выполнения всех необходимых проверок ERRINT отсоединяется и передает управление ERRCPY, которая запускается с приоритетом на выполнение 0 (по умолчанию все задания в системе имеют приоритет-8). Это делается для того, чтобы при возникновении ошибок ERRCPY достаточ- но быстро реагировала на них. Сразу же после запуска программа ERRCPY объявляет себя Приемником сообще- ний, чтобы иметь возможность помещать в свою очередь на 188
обработку получаемые от монитора сообщения об ошибках. Если очередь сообщений к ERRCPY пуста, то программа переходит в состояние ожидания и может быть при необхо- димости выгружена из памяти по свопингу. Следует заме- тить, что сообщения ставятся в очередь к ERRCPY неза- висимо от того, выполняется она или нет (т. е. находится ли она в памяти в 'Состоянии ожидания или выгружена на диск по свопингу). Первое сообщение, помещаемое в очередь к ERRCPY, всегда является сообщением «сбой питания—запуск». По- следним обрабатывается специальное сообщение от програм- мы SHUTUP при закрытии системы. ERRCPY обрабаты- вает это сообщение, помещает его в ERRLOG.FIL и затем удаляет себя из системы. Файл ERRLOG.FIL состоит из заголовка, за которым следуют блоки, содержащие информацию об ошибках. В блоке заголовка, кроме служебной информации, содержатся 62 счетчика для всех возможных типов ошибок, регистри- руемых ERRCPY. Информационная часть этого файла со- стоит из записей переменной длины (ни одна из записей не пересекает границу блока). Каждая запись содержит сооб- щение об ошибке в том виде, в котором оно получено от мо- нитора. 5.2. ОБРАБОТКА И РАСПЕЧАТКА ИНФОРМАЦИИ ОБ ОШИБКАХ Обработка и распечатка зарегистрированных в файле ERRLOG.FIL ошибок осуществляются программой ERRDIS, которая сначала проводит диалог с пользовате- лем, обрабатывает и форматирует информацию об ошибках, а затем выдает эту информацию на указанное устройство или в файл. Программа ERRDIS после своего запуска (запуск осу- ществляется обычным образом командой RUN) проводит диалог с пользователем, в результате которого задаются функции, которые должна выполнить ERRDIS. В первых двух вопросах диалога указываются файл, который долж- на обработать ERRDIS, и файл, в который должна выво- диться сформатированная информация об ошибках. Про- грамма регистрации ошибок ERRCPY при своей работе всегда использует файл ERRLOG.FIL, и умолчанием при ответе на вопрос о входном файле для программы ERRDIS является файл ERRLOG.FIL. Но так как число зарегист- рированных ошибок в ERRLOG.FIL ограничено объемом этого файла, то администратор системы может периодичес- 189
ки переименовывать файл ERRLOG.FIL для последующей обработки всех зарегистрированных ошибок. Выводить сформатированную информацию об ошибках можно на тер- минал, АЦПУ или же в дисковый файл. Ответ на третий вопрос диалога ERRDIS указывает, какую из четырех функций должна она выполнить: 1) распечатку справочной информации; 2) распечатку списка потенциально дефектных блоков (в случае ошибок по дискам); 3) распечатку сводной информации об ошибках; 4) распечатку полной информации об ошибках. RUN ERRDIS ERRDIS VI .О ВХОДНОЙ ФАЙГК (1 2.1 ERRLOG.FIL > »<LF> ВЫХОДНОЙ ФАЙПСKB:ERROIS.OUT> ? < LF > HEILPI BAID BLOCKS). SU(MMARY| ИЛИ FU(LL) < SUMMARY >?<LF> ПЕЧАТАТЬ ПЛОХИЕ БЛОКИ (YES/NO)< NO >’ YES ОБНУЛЯТЬ ПИ ФАЙЛ ОШИБОК (YES/NOI < NO > ? YES Рис. 41. Пример диалога ERRDIS Справочная информация — это информация об исполь- зовании ERRDIS и список мнемонических сокращений ти- пов возможных ошибок. Эти мнемонические сокращения используются, если пользователь желает получить полную информацию об ошибках определенного типа (функция 4). Если выбирается третья функция, то следующим зада- ется вопрос, распечатывать ли список потенциально дефект- ных блоков. Если выбирается четвертая функция, то за- даются вопросы о типе ошибок, по которым нужна инфор- мация (можно получить полную информацию по ошибкам всех типов). ERRDIS также предоставляет пользователю возможность распечатывать информацию об ошибках за указанный интервал времени. На рис. 41 приводится пример диалога ERRDIS: ERRDIS распечатывает сводную информацию обо всех ошибках из файла ERRLOG.FIL в следующем формате, приведенном на рис. 42. В первой колонке печатается мнемоническое имя дан- ного типа ошибок, во второй — полное название данного типа ошибок, в третьей — количество полученных и заре- гистрированных ошибок. Эти две величины могут отличать- ся из-за ограничений: на размер файла ERRLOG.FIL:; на общее число ошибок данного типа, которые могут регистри- роваться в файле ERRLOG.FIL; на количество ошибок, ко- 190
торые могут находиться в очереди на обработку программой ERRCPY. В четвертой колонке печатается количество оши- бок данного типа, которые произошли на определенном устройстве данного контроллера. Программа ERRDIS определяет потенциально дефект- ные блоки, анализируя ошибки из файла ERRLOG.FIL, которые возникают при неудачных попытках чтения или записи на диск. Критерий помещения блока в список де- фектных блоков зависит от типа диска. ИТОГОВЫЙ ПРОТОКОЛ НА 31-JAN—83, 11:05 ВХОДНОЙ ФАЙЛ (1.2) ERRLOG.FIL ВЫХОДНОЙ ФАЙЛ: KB:ERRDIS.OUT ОПИСАННЫЙ ОТРЕЗОК ВРЕМЕНИ C01-DEC-B3. 10:10:01 ОШИБКА ВСЕГО ПО 26—JAN—83, 13:20:44 НОМЕРА УСТРОЙСТВ КОД - ОПИСАНИЕ MS MISSED ERRORS Cfc RTS DECLARED PF POWER FAIL/STRUP KT MEMORY MGMT DK CM-5402/04 KB TERMINALS MT CM—5300/02/03 SH MSG FROM shutup ПОЛУЧ/ЗАРЕГ 868/30 1/0 1/0 118/0 2863/100 1355/100 727/100 57/54 0 1 2 3 4 5 6 7 B8 2 10 11 89 ВСЕГО ЗАРЕГИСТРИРОВАНО ОШИБОК. 477 ИЗ ПОЛУЧЕННЫХ: 6267 100 ИЗ 100 БЛОКОВ ИСПОЛЬЗОВАНЫ В (1,2) ERRLOG.FIL (1, J) ERRLOG FIL БУДЕТ ОБНУЛЕН Рис. 42. Сводная информация обо всех ошибках в системе Информация, которую печатает программа ERRDIS при выводе списка дефектных блоков, включает в себя ло- гическое имя, метку тома и физическое имя диска. Исполь- зуя информацию о дефектных блоках, можно добавить эти блоки в файл дефектных блоков BADB.SYS функцией REFRESH программы INIT.SYS (см. п. 1.1.2). Правда, не всегда в списке потенциально дефектных блоков содер- жатся действительно дефектные блоки. Ошибки, вызвав- шие помещение блока в список дефектных блоков, могут происходить и по вине контроллера, и в результате плохой работы самого дискового устройства. Пример распечатки списка потенциально дефектных блоков приведен ниже. СПИСОК ПОТЕНЦИАЛЬНО плохих Блоков ЛОГИЧЕСКОЕ ИМЯ DUMP ФИЗИЧЕСКОЕ ИМЯ OKI ЛОГИЧЕСКИЙ НОМЕР БЛОКА 161 191
При выборе четвертой функции ERRDIS распечатыва ет полную информацию об ошибках. Каждое выводимое ERRDIS полное сообщение об ошибке начинается со стро- ки заголовка, состоящей из следующих полей: мнемоничес- кое обозначение типа ошибки, описание ошибки, номер ошибки, дата и время возникновения ошибки. Номера ошибок начинаются с 1 и присваиваются монитором после- довательно, начиная с запуска системы до ее закрытия. Эти номера не сбрасываются при крахе систему и при ее авто- рестарте. Все ошибки, распечатываемые ERRDIS, делятся на 4 основные категории: 1) ошибки центральных устройств (ошибки процессора и памяти); 2) ошибки дисков; 3) ошибки периферийных устройств (ошибки печатаю- щих устройств, магнитных лент и т. п.); 4) остальные ошибки (например, ошибки, получаемые от программы SHUTUP при закрытии системы, и так назы- ваемые потерянные ошибки, см. ниже). Монитор при обнаружении ошибки посылает информа- цию об этой ошибке программе ERRCPY. В очереди к ERRCPY может находиться не более 39 сообщений об ошиб- ках. Если монитор посылает сообщение об ошибке к про- грамме ERRCPY, а в очереди к ERRCPY находится 39 со- общений, то посланная ошибка регистрируется как поте- рянная ошибка. Кроме того, ошибка трактуется как поте- рянная, если в момент ее постановки в очередь число малых буферов в системе меньше 75. Все сообщения об ошибках, за исключением потерян- ных и посылаемых программой SHUTUP, содержат инфор- мацию о задании, при выполнении которого произошла данная ошибка. Эта информация включает в себя: номер задания. В случае ошибки по диску — задания, которое осуществляло обращение к диску. В случае ошибки периферийного устройства — задания, которое владело данным устройством. В случае ошибки, отличной от ошиб- ки периферийного устройства, — задания, которое выпол- нялось в данный момент; номер клавиатуры, с которого запущено данное зада- ние. За номером клавиатуры может следовать /DET. Это значит, что задание выполнялось отсоединение и оно было отсоединено от терминала с указанным номером; учетный номер данного задания; имя программы, выполнявшейся в рамках данного зада- ния в момент возникновения ошибки; 192
текущий физический адрес памяти программы; размер программы, выполнявшейся в рамках данного задания; имя исполняющей системы, под управлением которой выполнялась данная программа; текущий физический адрес памяти исполняющей систе- мы. При ошибках диска ERRDIS выводит следующую основ- ную информацию: состояние диска. Диск может находиться в одном из че- тырех состояний — поиск, ожидание чтения/записи, тайм- аут и в пассивном состоянии; логическое имя (метка тома или логическое имя, присво- енное диску при его монтировании); физическое имя и номер дискового устройства; логический номер блока, на котором произошла ошибка; адрес регистра команд и состояний этого диска; содержимое регистров данного устройства. Пример распечатки ошибок по дискам приведен на рис. 43, с. 194. Информация, выводимая ERRDIS при ошибках перифе- рийных устройств, отличных от диска, включает в себя: индикатор тайм-аута. Тайм-аут означает, что ожидае- мый ответ не получен от устройства в течение заданного времени; физическое имя устройства и его номер; содержимое блока описания устройства. Блок описания устройства содержит различные пара- метры, необходимые системе для управления данным уст- ройством: адрес первого регистра на ОШ из совокупности регист- ров данного устройства; содержимое всех регистров данного устройства. В случае ошибок, вызванных не периферийными устрой- ствами, ERRDIS выводит следующую информацию: содержимое регистров процессора от R0 до R5; виртуальный адрес инструкции, выполняемой в мо- мент возникновения ошибки; слово состояния процессора; адрес текущей вершины стека; содержимое двух верхних слов в стеке; содержимое 3 слов, предшествующих текущему счетчи- ку адреса, и содержимое ячейки, на которую указывает текущий счетчик адреса. Следует заметить, что СМ-4 осуществляет нормальную загрузку и восстановление после сбоя питания с обработ- 193
ПОЛНЫЙ ПРОТОКОЛ (ТОЛЬКО ОК) НА 84.03.15 В 19:31 ВХОДНОЙ ФАЙЛ (1 2) ERRLOG.FIL ВЫХОДНОЙ ФАЙЛ'KB:ERRDIS.O <т ЗАПРОШЕННЫЙ ОТРЕЗОК ВРЕМЕНИ С ПЕРВОЙ ОШИБКИ ПО ПОСЛЕДНЮЮ ОШИБКУ (1, 2) ERRLOG.FIL НЕ БУДЕТ ОБНУЛЕН DK СМ—5403/02/01 НОМЕР 7 ВСТРЕЧЕНО 84.03.14 В 13:20:24 ОПИСАНИЕ ПОЛЬЗОВАТЕЛЯ: НОМЕР ЗАДАНИЯ НОМЕР КВ PPN ИМЯ ПРОГРАММЫ ФИЗИЧЕСКИЙ АДРЕС ЗАДАНИЯ ПОЛЬЗОВАТЕЛЯ РАЗМЕР ЗАДАНИЯ ПОЛЬЗОВАТЕЛЯ КОНТРОЛЬНЫЕ ПАРАМЕТРЫ ИМЯ RTS ФИЗИЧЕСКИЙ АДРЕС RTS 2 0 |1. 21 EDIT 00414000 4К 000 BASIC 00214000 ДЕТАЛЬНОЕ ОПИСАНИЕ СОСТОЯНИЕ ВВОДА/ВЫВОДА ИНДИКАТОР ТАЙМ АУТА ПОЛОЖЕНИЕ СМЕЩЕНИЯ ИНДИКАТОР ПЕРЕКРЫВАЕМОГО ПОИСКА РАЗМЕР УСТРОЙСТВА В КЛАСТЕРАХ РАЗМЕР КЛАСТЕРА УСТРОЙСТВА РАЗМЕР КЛАСТЕРА ПАКЕТА ЛОГИЧЕСКОЕ ИМЯ ФИЗИЧЕСКОЕ ИМЯ НОМЕР ЛОГИЧЕСКОГО БЛОКА АДРЕС CSR ООО 373 ООО ООО 011300 1 2 HELP DK2 1 177404 СОДЕРЖИМОЕ РЕГИСТРОВ HKDS 004405 RKER 000200 RKCS 140304 ЯКИ1С 177400 RKBA 003000 RKDA 004001 HE ГОТОВ НЕСУЩЕСТВУЮЩИЙ ДИСК Рис. 43. Пример распечатки ошибок по дискам кой прерывания через один и тот же вектор. В любом слу- чае в ERRDIS помещается сообщение об ошибке. В случае нормального запуска системы содержимое регистров R0— R5 является нулевым. В случае восстановления после сбоя питания регистры R0—R5 содержат ненулевые значения 194
Глава 6 ЗАВЕРШЕНИЕ РАБОТЫ СИСТЕМЫ Для окончания сеанса разделения времени администратор системы вызывает с консольного терминала служебную программу SHUTUP, которая и выполняет закрытие сис- темы. Перед началом процедуры закрытия системы прог- рамма SHUTUP задает администратору системы вопрос о том, сколько минут осталось до закрытия системы, и рас- сылает на все терминалы предупреждающие сообщения. Процедура закрытия системы начинается с запрета ре- гистрации в системе новых заданий. Затем SHUTUP уда- ляет из системы задания тех пользователей, которые еще не вышли из системы. Удаление заданий выполняется по- мещением текста f С f С BYE/Y в буфер ввода терминала, к которому подсоединено задание. Дважды введенный уп- равляющий символ f С прерывает выполнение текущей программы, а команда BYE/Y вызывает программу LOGOUT, которая и удаляет задание в немедленном режи- ме. Отсоединенные задания удаляются из системы с помо- щью системной функции SYS — удаление заданий (анало- гично функции KILL программы UTILTY). Процедура закрытия аналогична процедуре выполнения командного файла запуска системы, но выполняет обратные действия. Процедура закрытия состоит из последовательно выполняемых отдельных фаз: диалога с администратором системы; передачи предупреждающих сообщений на терминалы, работающие в системе; первоначального удаления заданий пользователей; завершения работы системы спулинга и пакетной об- работки; завершения регистрации системных ошибок; окончательного удаления заданий; удаления дополнительных исполняющих систем и фай- лов свопинга; демонтирования дисков; окончательного закрытия системы. Фаза диалога с администратором системы заключается в том, что SHUTUP задает вопрос, использовать ли OPSER для завершения работы заданий спулинга. Если программа OPSER работает и администратор решает использовать ее для завершения, то SHUTUP спрашивает, нужно ли доводить до логического конца выполняющиеся задания спулинга или закончить их немедленно. Независимо от того, выполняется или не выполняется OPSER на данной 195
фазе, SHUTUP спрашивает, через сколько минут закрывать систему (по умолчанию через 5). Перед каждой фазой на консольном терминале появля- ется сообщение о том, какая фаза закрытия будет выпол- няться следующей: чч: ммдд-ммм—гг##^#<.НАИМЕНОВАНИЕ ФАЗЫ> # # # # Фаза передачи предупреждающих сообщений начина- ется с запрещения дальнейшей логической регистрации в системе и установления максимально разрешенного числа заданий в системе равным 1. Затем SHUTUP периодически RUNSHUTUP SHUTUP V 1.0 12:24 РМ 22—SEP—84 ### ФАЗА ПЕРВОНАЧАЛЬНОГО ДИАЛОГА ##$ ВВЕСТИ 'ESC' ДЛЯ ПОВТОРЕНИЯ ПРЕДЫДУЩЕГО ВОПРОСА "OPSER" НЕ РАБОТАЕТ СКОЛЬКО МИНУТ ДО ЗАВЕРШЕНИЯ (0-99) <5>?О 12:24 PM 22-SEP-84 ### ФАЗА ПРЕДУПРЕЖДАЮЩИХ СООБЩЕНИЙ ### РЕГИСТРАЦИЯ В СИСТЕМЕ ЗАПРЕЩЕНА 12:24 22-SEP-B4 ### ФАЗА ПЕРВОНАЧАЛЬНОГО УДАЛЕНИЯ ЗАДАНИЙ ### 12:24 22-SEP-84 ### ФАЗА УДАЛЕНИЯ ИСПОЛНЯЮЩИХ СИСТЕМ ### 12:24 22—SEP—84 ### ФАЗА УДАЛЕНИЯ ФАЙЛОВ СВОПИНГА ### 12:24 22-SEP-84 ### ФАЗА ДЕМОНТИРОВАНИЯ ДИСКОВ ### 12:24 22-SEP-84 ### ФАЗА ОКОНЧАТЕЛЬНОГО ЗАВЕРШЕНИЯ ### ПОДОЖДИТЕ, ПОКА СИСТЕМА ПЕРЕЗАГРУЗИТСЯ... ДОС KnV1.0-.TEST- (ОКО) РЕЖИМ: Рис. 44. Пример нормального завершения работы системы посылает на все активные терминалы в системе предупреж- дающие сообщения о том, через сколько минут произойдет закрытие системы. Во время фазы первоначального удаления заданий SHUTUP удаляет все присоединенные к физическим тер- миналам и отсоединенные задания способом, описанным выше. Задания, работающие через псевдотерминал, на этой фазе не удаляются, так как они могут быть связаны с каким- либо заданием спулинга или пакетной обработки. Фаза завершения работы системы спулинга и пакетной обработки состоит в удалении всех заданий, связанных с OPSER. Эти задания либо доводятся до логического конца (для спулинга, например, это означает окончание вывода 196
на АЦПУ очередного файла), либо удаляются немедленно. В последнем случае обрабатывающиеся в данный момент задания для спулинга и процессора пакетной обработки могут быть потеряны. Следующей фазой закрытия системы является фаза завершения работы пакета регистрации системных ошибок. SHUTUP посылает ERRCPY специальную ошибку (ошиб- ку SH, указывающую на нормальное окончание работы системы), которую ERRCPY помещает в файл ERRLOG. FIL, закрывает этот файл, а затем удаляет себя из системы. . На этапе окончательного удаления заданий SHUTUP удаляет все оставшиеся задания, кроме одного, в рамках которого запущена сама программа SHUTUP. На фазе удаления дополнительных исполняющих систем и файлов свопинга SHUTUP выгружает из памяти все ис- полняющие системы (кроме обязательной), удаляет их из таблиц и закрывает файлы дополнительных исполняющих систем. Кроме этого, SHUTUP на этом этапе проверяет закрытие всех файлов свопинга и удаляет их из систем- ных таблиц. Предпоследней фазой закрытия системы является демон- тирование всех дисков структуры общего доступа и личных дисков. Фаза окончательного закрытия системы состоит в очи- стке буферов ввода-вывода консольного терминала. За- тем SHUTUP удаляет себя из системы и происходит пере- грузка системы с системного диска. В оперативную память загружается программа инициализации системы INIT.SYS, которая выводит на экран консольного терминала запрос о режиме инициализации ДОС КП. На рис. 44 приведен пример нормального завершения работы системы. 197
ЛИТЕРАТУРА 1. Глушков В. М. Введение в АСУ. — Киев: Техника, 1972. — 92 с. 2. Вигдорчик Г. В. и др. Организация программного обеспечения с разделением функций на СМ ЭВМ. — Приборы и системы уп- равления, 1981, №4, с. 5—7. 3. Система малых ЭВМ: Комплексы СМ-3 и СМ-4: Программное обес- печение: Операционная система ОС РВ. Отраслевой каталог. — М.: ЦНИИТЭИприборостроения, 1983, — 78 с. 4. Хрущев С. Н. и др. Комплексы для автоматизации научны^ ис- следований второй очереди. — В кн.: Труды ИНЭУМ. Вып. 96.— М., 1982, с. 5—7. 5. Наумов Б. Н. Микро и мнни-ЭВМ: настоящее и будущее. — М.: «Знание», 1983. — 57 с. 6. Вигдорчик Г. В., Воробьев А. Ю., Праченко В. Д. Основы про- граммирования на ассемблере СМ ЭВМ:—М.: Финансы и ста- тистика, 1983. — 252 с. 7. Kernighan В. W., Ritchie D. М. The С programming language. — Prentice — Hall, 1978. — 282 p. 8. Градусова В. Г. и др. ФОБРИН — интерактивная система обра- ботки данных на СМ-4. — В кн.: Прикладная информатика. Вып. 2. — М.: Финансы и статистика, 1982. с. 10—12. 9. Программирование иа языке БЕЙСИК-ПЛЮС для СМ-4/Б. Р. Мои- цибович, Д. П. Непочатых, П. С. Малачивский и др.; Под ред. В. П. Семика. — М.: Финансы и статистика, 1983. — 197 с. 10. Малые ЭВМ и их применение/Под общ. ред. Б. Н. Наумова. — М.: Финансы и статистика, 1980. — 192 с. 11. Система малых ЭВМ: Программное обеспечение: Дисковая опе- рационная система коллективного пользования ДОС КП. От- раслевой каталог. — М.: ЦНИИТЭИприборостроения, 1984, — 35 с. 12. Мартии Дж. Организация баз данных в вычислительных систе- мах. Пер. с англ. — М.: Мир, 1980 — 662 с. 198
Приложение 1 Перечень внешних устройств, поддерживаемых ДОС КП Физичес- кое имя устрой- ства Наименование устройства Количе- ство Шифр устройства Примечание DF: Накопитель на магнитном ди- ске с фиксиро- ванными голов- ками 8 СМ-5500 Емкость 512 Кбайт DK: Накопитель на кассетном диске 8 СМ-5400 Емкость 2,5 Мбай- та DM: Накопитель на кассетном диске 8 СМ-5408 Емкость 14 Мбайт DP: Накопитель на кассетном диске 8 СМ-5407 Емкость 20 Мбайт DX: Накопитель иа гибких магнит- ных дисках 8 СМ-5602 СМ-5606 СМ-5606 Емкость 256 Кбайт МТ: Накопитель на магнитной ленте 8 СМ-5303 СМ-5302 СМ-5300 Плотность записи 32 импульса на 1 мм ММ: Накопитель на магнитной ленте 8 СМ-5305 Фазокодированная запись, плот- ность записи 32 и 64 импульса на 1 мм LP: Устройство печати 8 СМ-6315 СМ-6301 СМ-6302 СМ-6307 Устройство по- строчной печати Знакосннтезнрую- щие устройства печати последо- вательного типа CR: Считыватель с пер- фокарт 1 СМ-6101 СМ-6102 PR:, РР: Устройство ввода- вывода на пер- фоленту 1 СМ-6200 СМ-6204 DE: Адаптер дистан- ционной связи 32 СМ-8502 DH: Синхронный муль- типлексор пере- дачи данных 16 СМ-8514 DZ: Асинхронный мультиплексор передачи данных 16 СМ-8515 DJ: Асинхронный мультиплексор передачи данных 16 СМ-8516 KB: Видеотерминал 127 СМ-7206 СМ-7204 СМ-7219 VDT-340 ВТА 2000-2 VDT- 52100 ВТА 2000-3 ВТА 2000-13/15 199
Приложение 2 Сокращения в протоколе SYSTAT Распределение памяти (ключ/С) PERMANENT TEMPORARY MONITOR * * XBUF » * — область памяти, занятая постоянно: — область памяти, занятая временно; — область памяти, занятая монитором; — область памяти отведенная под расширен- LOCKED OUT ный буфер; — область памяти, запрещенная для исполь- NXM * * * END * • зования; несуществующая памнть, » — конец физической памяти. Дисковая структура (ключ/D) PUB PRI NFS RO DLW LCK — диск структуры общего доступа; — личный диск; — диск с иефайловой структурой; — доступ к диску только по чтению; — хранится дата последней модификации; — диск заблокирован по записи для непри- NFF вилегированного пользователя; — новые файлы помещаются в начало ката- JOB DIRTY лога; . — личный диск зарезервирован за заданием; — необходима проверка целостности файло- вой структуры данного диска. Открытые файлы (ключ/W) UPD MDL CTG NOK — файл открыт н режиме модификации; — файл помечен для удаления; — непрерывный файл; — переименование или удаление файла за- NONE NULL—LIST прещено; — открытых файлов нет; — открыты лишь файлы свопинга и/или ис- RD WR CA SQ полняющих систем; — файл открыт с доступом только по чтению; — файл открыт с доступом по запися; — файл открыт в режиме кэширования; — файл открыт в режиме последовательного RR кэширования; — разрешено чтение файла, несмотря на его TENT UP SPUP модификацию; — временный файл; — файл открыт в режиме модификации; — файл открыт в специальном режиме моди- фикации. Исполняющие системы (ключ/R) NON-RES — в данный момент RTS нерезидентна; 200
LOADING TEMP PERM ADDR '.xxx KBM 1US R/W NER EMT : yyy NON/RES LOADING TEMP PERM ADDR :xxx 1US R/W NER RN RS BF SL SR FP TT _ HB KB C MT нлн MM DK, DP или LP — в данный момент RTS загружается в память; — RTS — резидентна в памяти, только если есть активные задании, работающие с ней; — RTS — всегда резидентна; — адрес загрузки RTS; — RTS — обрабатывает ввод с терминала; — RTS — доступна только одному заданию; — доступ к RTS разрешен как по чтению, так и по записи; — ошибки прн работе с RTS ие регистриру- ются монитором; — RTS — использует специальную префикс- ную команду (команду ЕМТ с кодом ууу). Резидентные библиотеки (ключ/L) — в данный момент библиотека нерезидентна; — в данный момент библиотека загружается в память; — библиотека резидентна в памяти, только если есть задания, работающие с ней; — библиотека всегда резидентна; — адрес загрузки библиотеки; — библиотека доступна лишь одному заданию; — доступ к библиотеке возможен как по чте- нию, так и по записи; — ошибки прн работе с библиотекой не реги- стрируются монитором. Задания (ключ/J) — задание выполняется или находится в очереди заданий, готовых к выполнению; — задание ожидает загрузки в память; — задание ожидает освобождения малых бу- феров; — задание находится в состоянии ожидания; — задание находится в состоянии ожидания сообщений; — задание ожидает операции файлового про- цессора (открытие, закрытие, поиск фай- ла); — задание ожидает возможности вывода на терминал; — задание отсоединено н ожидает ввода/вы- вода на терминал; — задание ожидает ввода с терминала; — задание ожидает ввода команды оператора; — задание ожидает начала операций обмена с магнитной лентой; DM — задание ожидает начала операций обмена с диском; — задание ожидает вывода на печатающее устройство; 201
рр PR — задание ожидает вывода на перфоленту; — задание ожидает ввода с устройства вводв перфоленты; DX — задание ожидает начала операций обмена с гибким диском; LCK — задание заблокировано в памяти до за- вершении текущей операции; SWI — задание находитси в процессе свопинга в оперативную память; SWO — задание находитси в процессе свопинга иа днск; Xnn — задание занимает пп Келов в файле свопинга X. 202
ОГЛАВЛЕНИЕ Введение.............................................. 3 Часть I. Введение в ДОС КП ........................... 6 Глава 1. Основные понятия и определения........... 6 1.1. Пользователи ДОС КП ..................... 7 1.2. Терминалы............................... 8 1.2.1. Клавиатура терминала и ввод данных с терминала.................................. 8 1.2.2. Вывод данных на терминал............11 1.3. Учетные номера и пароли .................12 1.4. Задания и псевдотерминалы . ... 13 1.5. Исполняющие системы......................15 1.6. Регистрация в системе....................18 1.7. Выполнение программ в ДОС КП.............20 1.7.1. Виды программ ......................20 1.7.2. Запуск программ на выполнение . ... 20 1.7.3. Размещение программ в памяти .... 23 Глава 2. Работа с устройствами и файлами..........28 2.1. Спецификация файла.......................28 2.1.1. Идентификация устройств.............29 2.1.2. Учетный номер файла ................31 2.1.3. Имя и расширение имени файла ... 32 2.1.4. Ключи спецификации файла...........-32 2.1.5. Дополнительные атрибуты файла .... 33 2.2. Командные строки и командные файлы ... 33 2.2.1. Использование символов маскирования 33 2.2.2. Командные файлы.....................34 2.3. Накопители на магнитных дисках...........35 2.3.1. Файловая структура..................35 2.3.2. Категории дисков....................37 2.3.3. Оптимизация работы с дисками .... 40 2.3.4. Диски нефайловой структуры .... 42 2.4. Накопители на магнитных лентах...........43 2.5. Задание характеристик терминалов.........45 2.6. Другие периферийные устройства ..........47 2.7. Резервирование устройств.................47 203
Глава 3. Состав и структура ДОС КП . .... 48 3.1. Ядро ДОС КП................................ 49 3.1.1. Программа инициализации INIT.SYS . . 49 3.1.2. Монитор разделения времени............49 3.1.3. Системные управляющие программы . . 49 3.1.4. Исполняющие системы...................51 3.1.5. Подсистемы подготовки программ в режи- мах РАФОС и ОС РВ . . ... 51 3.1.6 Обслуживающие программы...........51 3.1.7. Подсистема управления данными (СУ-Д2) 52 3.1.8. Подсистема генерации.............53 3.2. Система программирования ДОС КП ... 53 3.3. Системные прикладные программы ДОС КП . 54 Часть П. Подготовка программ ДОС КП . .... 55 Глава 1. Редактирование текстов . . .......55 1.1. Загрузка редактора . ... ..........56 1.2. Принцип буферизации и указатель редактора . . 57 1.3. Протоколирование процесса редактирования . . 58 1.4. Строковой режим . ... ..... 59 1.4.1. Создание файлов я ввод новых данных . 59 1.4.2. Редактирование в строковом режиме . . 60 1.4.3. Разделение и объединение файлов ... 67 1.4.4. Управляющие команды . 69 1.5. Экранный режим............. .............72 1.5.1. Основные характеристики . .... 73 1.5.2. Управление курсором . 74 1.5.3. Команды экранного режима..............75 1.5.4. Дополнительные возможности экранного режима...................... . . 78 Глава 2. Обслуживание файлов ........................80 2.1. Обмен файлами .... .... 80 2.1.1. Копирование файлов . ..........81 2.1Л2. Вспомогательные функции PIP .... 82 Глава 3. Подготовка и выполнение программ иа языке Бейсик-Р .........................................85 3.1. Режим работы интерпретатора BASIC, RTS . 85 3.2. Команды оператора создания исходных программ 88 3.3. Сохранение и вызов программы .... 90 3.4. Трансляция программ . ..........91 3.5. Особенности выполнения команды RUN . . 92 3.6. Слияние программ и выполнение в цепочке 93 3.7. Отладка программ............................94 Глава 4. Подготовка программ в режимах РАФОС и ОС РВ 96 4.1. Трансляция программ.........................98 4.1.1. Примеры задания командных строк компи- лятора .....................................100 4.1.2. Системные макрокоманды ДОС КП ... 101 4.2. Работа с библиотеками......................102 4.3. Компоновка программ..................... . 105 4.3.1. Структура загрузочных программ . . . 106 4.3.2. Программные секции ..................108 204
4.3.3. Глобальные символические имена ... 109 4.3.4. Функции компоновщика................109 4.3.5. Компоновщик LINK.....................НО 4.3.6. Построитель задач ТКВ . ...........112 Часть III. Функции и [возможности администратора си- стемы ............................................130 Глава 1. Подготовка системы к работе..............130 1.1. Генерация системы........................132 1.1.1. Подготовка подсистемы генерации . . . . 133 1.1.2. Инициализация подсистемы генерации 134 1.1.3. Определение конфигурации вычислитель- ного комплекса и характеристик системы 135 1.1.4. Построение монитора.................136 1.1.5. Построение системных библиотек н допол- нительного программного обеспечения . . 137 1.2. Инициализация ДОС КП . . . ..............137 1.2.1. Выбор рабочего монитора ............138 1.2.2. Определение характеристик по умолчанию 139 1.2.3. Инициализация дисков................140 1.2.4. Запуск режима разделения времени . . 143 1.3. Установка начальных характеристик . . . .143 1.3.1. Монтирование дисковой структуры . . . 146 1.3.2. Установка дополнительных исполняющих систем.....................................147 1.3.3. Определение языка кратких команд . . 149 1.3.4. Запуск программы регистрации ошибок 151 1.4. Создание учетных номеров.................151 Глава 2. Оперативное управление режимом разделения времени...........................................152 2.1. Оптимизация работы системы ..............153 2.1.1. Управление приоритетами............153' 2.1.2. Управление кэшированием ............155 2.2. Контроль за состоянием системы...........158 2.2.1. Программы отображения состояния си- стемы ................................... 158 2.2.2. Управление структурой общего доступа 160 2.2.3. Текущий контроль работы пользователей 161 2.3. Сбор н анализ статистики работы пользователей 163 Глава 3. Программы спулинга ......................165 3.1. Общая схема.............................166 3.2. Управление спулингом н программа ведения очередей......................................169 3.2.1. Команды управления . . .’. . . 169 3.2.2. Программа управления очередями .... 172 3.3. Программа SPOOL.........................173 3.3.1. Управление форматом печати.........174 3.3.2. Обработка сбоев печатающего устройства 175 3.4. Процессор пакетной обработки ...........176 Г лава 4. Сохранение н восстановление носителей . . . 178 4.1. Сохранение носителей....................178 205
4.2. Сохранение диска ДОС КП......................184 4.3. Восстановление диска ДОС КП..................184 4.4. Копирование дисков ДОС КП.............186 4.5. Идентификация дисков ДОС КП или архивов 187 Глава 5. Диагностика системных ошибок..........187 5.1. Регистрация ошибок....................188 5.2. Обработка и распечатка информации об ошибках 189 Глава 6. Завершение работы системы.............195 Литература.........................................198 Приложение 1. Перечень внешних устройств, поддерживае- мых ДОС КП................................199 Приложение 2. Сокращения в протоколе SYSTAT .... 200 206
ВИКТОР ДМИТРИЕВИЧ ПРАЧЕНКО, АЛЕКСАНДР ГЕОРГИЕВИЧ САМБОРСКИИ, МИХАИЛ ВИКТОРОВИЧ ЧУМАКОВ Дисковая операционная система коллективного пользования для СМ ЭВМ Зав. редакцией И. Г. Дмитриева Редактор Л. Д. Григорьева Мл. редакторы Л. В. Речицкая, Е. С. Уварова Техн, редактор Г. С. Афанасьева Корректоры Т. М. Колпакова, Е. Д. Кузнецова Худож. редактор М. К. Гуров Переплет худож. Л. Г Прохорова ИБ № 1670 Сдано в набор 12.10.84. Подписано в печать 27.03.85. А02435. Формат 84X108/». Бум. офсетная № 2. Гарнитура «Литературная». Печать высокая. Усл. п. л. 10.92. Усл. кр.-отт. 11,13. Уч.-иэд. л. 10.38. Тираж 18 000 экз. Заказ 454. Цена 50 коп. Издательство «Финансы и статистика», 101000. Москва, ул. Чернышевского; 7 Московская типография № 4 Союзполнграфпрома прн Государственном комитете СССР по делам издательств, полиграфии и книжной торговли, 129041, Москва, Б. Переяславская, 46