RRRRRRRRRR TTTTTTTTTTTTTT 1111 1111 RRRRRRRRRRR TTTTTTTTTTTTTT 11111 11111 RR RR TT 1111 1111 RR RR TT 11 11 11 11 RR RR TT 11 11 11 11 RR RR TT 11 11 RR RR TT 11 11 RRRRRRRRRRR TT ********** 11 11 RRRRRRRRR TT ********** 11 11 RR RR TT 11 11 RR RR TT 11 11 RR RR TT 11 11 RR RR TT 11 11 RR RR TT 11111111 11111111 * * * * ***** *** * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * * * * * * * * ***** * * * * * * * * * * * * * * * ***** * * * *** * * **** * ++++ +++++ ++++ +++ * * * * + + + + + * * * + + + + + *** * * +++ + +++ +++ * ********* + + + + * * * * + + + + **** * * ++++ + ++++ + * * * * ***** ++++ + + * * * * * + + + + * * * * * * + + + + * * * * * * ++++ + + * * * ***** * + + + * * * * * * + + + ***** * * * ++++ + ++++ +++++ ++++ +++ + + + + + + + + + + +++ + +++ +++ + + + + + + + + ++++ + ++++ + А р х а н г е л ь с к и й А н д р е й Германович М О С К В А - 92 - 2 - RT-11, A step by step 14-Nov-92 Аннотация Руководство по операционной системе RT-11, родоначальнице всех однополь- зовательских ОС мини-, микро- и персональных ЭВМ, написано в доступной форме и отражает практически все типичные ситуации, появляющиеся у начинающего пользователя при знакомстве с компьютером. Четыре книги, как четыре ступень- ки, позволяют пройти путь от обычного пользователя до системного программис- та. Каждый вправе остановиться на любой ступеньке, справедливо полагая, что на данном уровне он готов для профессиональной работы, соответствующей данно- му уровню. Книга первая - "Система и Пользователь, или создай текст этой книги". Цель пользователя отражена уже в названии. Книга предназначена для всех, кто хочет использовать компьютер для подготовки текстов, - от машинистки до редактора, от школьника до ученого. Пользователь узнает, как создавать краси- вые тексты и спасать свою информацию в случае аварии. Книга написана с помощью средств, в ней описанных. Достинутый уровень - обычный пользователь. Книга вторая - "Управление Системой, или как жить в комфорте". Предназ- начена для тех, кто хорошо изучил первую книгу и имеет желание нормально жить в XXI веке. В книге рассказано о работе в локальных сетях, о средствах управ- ления многими задачами, устройствами и терминалами, о том, как переложить на компьютер всю нетворческую работу. Достигнутый уровень - высококвалифициро- ванный пользователь. Книга третья - "Программирование в Системе". Переход от пользователя - писателя к прикладному программисту. Это введение в программирование на мак- роассемблере MACRO-11 для начинающих. Но может быть полезно и работающим программистам. Описано все, что может понадобиться прикладному программисту для написания совместимых по различным версиям системы программ, которые хорошо уживаются в системе с другими такими же программами. Книга четвертая - "Системное Программирование". Высшая ступень для тех, кто хочет разрабатывать специализированные системы на базе RT-11. Популярные операционные системы ФОДОС, РАФОС, ОСДВК и им подобные предс- тавляют собой хорошо или плохо сделанные копии с системы RT-11, и Вам впервые предлагается обратиться к оригиналу. - 3 - RT-11, A step by step 14-Nov-92 СОДЕРЖАНИЕ Аннотация 2 1. ДАВАЙТЕ ПОЗНАКОМИМСЯ 12 1.1. Мир, где живет ЭВМ, 12 1.2. Что окружает ЭВМ, 12 1.3. Как общаться с ЭВМ, 17 1.4. И кто правит в мире этом? 21 1.4.1. На золотом крыльце сидели... 22 1.4.1.1. Царь, Царевич... 22 1.4.1.2. Сапожник, Портной... 25 1.4.1.3. ...кто ты будешь такой? 26 1.5. А откуда все это взялось? 27 1.6. Указ становится законом, 32 2. КАК МЫ ГОВОРИМ, 34 2.0.1. Нормальная форма Бэкуса 35 2.0.2. Синтаксические диаграммы 36 2.1. Вавилонское столпотворение, 37 2.1.1. Алфавит 37 2.1.2. С какой стороны посмотреть, 39 2.1.3. Спецификация файла 40 2.1.4. Групповая спецификация файла 41 2.1.5. Умолчания в системе RT-11 43 2.1.6. Логические и физические имена устройств 43 2.2. Язык интерпретатора командной строки (CSI) 44 2.3. Язык клавиатурного монитора KMON 46 2.4. Сообщения об ошибках 49 3. ВЫСОКО СИЖУ, ДАЛЕКО ГЛЯЖУ, 52 3.1. Дома, дома, дома ... 55 3.2. Домовая книга, 56 3.2.1. А что можно сделать еще? 63 3.2.1.1. Время бежит, время стоит 64 3.2.2. Продолжим работу с каталогами 65 3.2.3. По порядку номеров рассчитайсь, 70 3.2.4. Как веревочке не виться... 77 3.2.5. Некоторые подробности 79 4. ПРОТИВ ЛОМА НЕТ ПРИЕМА, 83 4.1. Где начало, где конец? 85 4.2. А как быть с выходным файлом 87 4.3. Некоторые подробности, 89 - 4 - RT-11, A step by step 14-Nov-92 5. ФАЙЛОВАЯ СИСТЕМА 100 5.1. Все может случиться, 100 5.2. Как устроен том? 101 5.3. Заглянем в домовую книгу, 105 5.4. А что же на обложке? 110 5.5. Структура тома с произвольным доступом 112 5.6. Как лиса сыр делила, 114 5.7. Для чего это нужно, 117 5.8. А если быть последовательными, 120 6. ФИЗИЧЕСКИЕ ОСНОВЫ ЗАПИСИ ИНФОРМАЦИИ 124 6.1. Для чего нужно форматирование 124 6.2. Форматы носителей информации 125 6.2.1. Жесткие диски 132 6.2.2. Диск-пакеты и винчестеры 134 6.3. Формат записи на магнитной ленте 136 7. ДИСКИ, КАТАЛОГИ, ФАЙЛЫ 138 7.1. Форматирование дисков 143 7.2. Инициализация файловой системы 149 7.3. Копирование файлов 160 8. ПРОДОЛЖИМ НАШИ ИГРЫ 172 8.1. Устройство виртуальной памяти 172 8.2. Логические диски 179 8.3. А если обмануть систему, 183 8.4. Копирование файлов на магнитную ленту 188 8.5. Типовой набор операций с файлом 192 8.6. Выбор исходных данных 196 8.7. Какие файлы мы копируем 197 8.8. Доверяй, но проверяй 203 8.9. Шило на мыло 205 8.10. Печать многих копий 206 8.11. Заключение. 206 9. НАЧАЛО СОЗИДАНИЯ, 208 9.1. Как мы пишем, 210 9.2. Команды ввода/вывода 216 9.3. Начало редактирования 218 9.4. Контекстный поиск 226 9.5. Другие полезные команды 227 9.6. Сообщения об ошибках 229 10. ЭКРАННЫЙ РЕДАКТОР ТЕКСТА 233 10.1. Загрузка редактора 234 10.2. Дополнительная клавиатура 237 10.3. Элементы редактирования 243 10.4. Передвижение по файлу 245 10.5. Удаление и восстановление элементов редактирования 248 10.6. Основной набор команд 253 10.7. Работа с файлами 259 10.8. Макрокоманды 261 - 5 - RT-11, A step by step 14-Nov-92 11. KED (продолжение) И ЕГО ДЕТИ 266 11.1. Команды для программистов 266 11.1.1. Расстановка локальных меток 266 11.1.2. Структурная табуляция 268 11.2. Сообщения об ошибках 271 11.3. Редактор одной строки 281 11.4. Программируемые клавиши 283 12. ФОРМАТИРОВАНИЕ ТЕКСТОВ 285 12.1. Директивы размещения текста 286 12.2. Директивы размещения страниц 288 12.3. Директивы описания структуры 289 12.4. Служебные директивы 292 12.5. Структурирование файлов 293 12.6. Работа с программой DOC 294 12.7. Сообщения об ошибках 295 13. ЗАПЛАТА НА РУБАШКУ, 296 13.1. Правильный вход и ключи 297 13.2. Команды 298 13.3. Редактирование символьных кодов 299 13.4. Команды для программистов 301 14. СКОРАЯ ПОМОЩЬ, 302 15. Некоторые проблемы "Электроники-85" 307 15.1. Текстовый редактор EDK (Edik) 307 15.2. Вызов редактора 307 15.3. Структура данных 308 15.4. Команды редактирования в пределах страницы 308 15.4.1. Сообщения редактора EDK 309 15.5. Программа постраничной распечатки текстов LPRINT.SAV 311 15.5.1. Ключи установки режимов печати 311 15.5.2. Команды управления печатью 313 15.6. Командные файлы для форматирования текстовых файлов 315 15.6.1. Командный файл PICA 315 15.6.2. Командный файл ELITA 316 15.6.3. Командный файл BILIST 316 15.7. Переключение кодировок терминала 317 Приложение 1. Синтаксис языков RT-11 319 Приложение 2. Стандартные типы файлов 324 Приложение 3. Необходимые дампы программ 328 Приложение 4. Основной файл построения этой книги 336 - 6 - RT-11, A step by step 14-Nov-92 Б Л А Г О Д А Р Н О С Т И В первую очедедь, я должен выразить глубокое уважение, которое я испыты- ваю к фирме Digital Equipment Corporation, и ее президенту и основателю К.Олсону, за последовательность в проведении технической политики, тщательную системную проработку своих изделий и уважительное отношение к пользователю. Изучение работ фирмы DEC было для меня хорошей школой. Я благодарен редактору отдела журнала "Информатика и Образование" Шехов- цеву Константину Владимировичу, давшему жизнь первому (журнальному) варианту книги. Его замечания и вопросы сыграли большую роль в формировании оконча- тельного варианта рукописи. Марк Петрович Гальперин, профессор Ленинградского института точной меха- ники и оптики, оказал мне серьезную поддержку в начале моей изобретательской деятельности, без которой не было бы этой книги. На протяжении долгих лет исподволь, незаметно передавала мне свой педа- гогический опыт, формировала мое мировозрение и культуру прекрасный музыкант и педагог по классу фортепиано музыкального училища им.Мусоргского (г.Ленинград) Вольпэ Элла Абрамовна, перед которой я в почтении склюняю голо- ву. И конечно этой книги не было бы без многочисленных атак и вопросов бес- численных ПОЛЬЗОВАТЕЛЕЙ, заставивших меня, несмотря на все превратности судь- бы, написать эту книгу. спасибо ВАМ всем!!! 14 ноября 1992г. - 7 - RT-11, A step by step 14-Nov-92 ** * * ** ***** **** * * ** * * * ** * * * * ** ** * * * * * * * * *** * * * * * * * ** * * * * * * * **** ** * * ** * **** * * * * * * * ** * * * ** * * * **** ** ** * ** ** *** ** ***** **** ** * * * * * * * * * * * * * * * * * * * * * * * * * * * *** * * * *** * * * *** * * *** * * * * * * * * * * * * * * **** * * * * * * * * ** * * *** ** ** *** * * * **** * * *** или... С О З Д А Й Т Е К С Т Э Т О Й К Н И Г И . - 8 - RT-11, A step by step Systems World 14-Nov-92 ПОЛЬЗОВАТЕЛЮ . посвящается... Что бы это значило? или О чем эта книга - Здравствуйте, Андрей Германович,- встретил меня Алеша,- а у нас будет ОИВТ. - Здравствуй, Алеша! Во-первых, дай мне раздеться, а во-вторых, объясни, что такое ОИВТ и чем ОНО тебя так обрадовало. Алеша Дотошкин, мой сосед по квартире, только что кончил девятый класс и перешел в десятый. Парень он шустрый, эмоциональный и очень любознательный. В общем, фамилию он свою оправдывает и часто сидит у меня в домашней библиоте- ке, пока мама спать не прогонит. - Итак, что же это за зверь - ОИВТ,- спрашиваю я, когда мы устроились на диване. - Основы Информатики и Вычислительной Техники,- расшифровал Алеша,- учи- тельница говорит, что мы все будем работать на компьютерах и за год станем программистами. - Ну, так уж сразу и программистами,- усомнился я,- да и нужно ли всем быть программистами? - А как же,- завелся Алеша, по-видимому, повторяя слова учительницы,- ведь, если скоро везде будут стоять компьютеры, для того, чтобы с ними уметь обращаться, нужно быть программистом, потому что компьютер без программ, как пустой ящик. - Даже так?- удивился я.- Ну, тогда ответь мне на вопрос - в какую сто- рону вращается электрон, когда летит от второго к третьему аноду в кинескопе телевизора в 123 строке 756 полукадра третьей серии мультфильма "Приключения капитана Врунгеля"? - Как в какую?- уставился на меня Алеша.- Не знаю. Да и кто это может знать, разве что электронщики или разработчики телевизора. - Но ведь ты же не электронщик,- не уступаю я,- как же ты можешь тогда смотреть телевизор? - А, ... ??? - Значит,- успокаиваю его я,- достаточно только уметь пользоваться и нет нужды копаться у телевизора во внутренностях. - Да, по существу,- задумался Алеша,- я ведь только умею включать теле- визор, переключать на нужную мне программу и регулировать цвет, яркость, контрастность и громкость. Других знаний мне и не требуется для того, чтобы смотреть телевизор. - Тогда второй вопрос,- продолжаю я,- представь, что у нас в стране будет 300 млн. программистов, что из этого выйдет? - Много программ напишут,- быстро ответил Алеша. - А кто тебе хлеб испечет, костюм сошьет,- ловлю его я,- ведь все будут программистами? - Да, я об этом не подумал,- поставленный в тупик Алеша вдруг улыбнулся,- этак у нас по стране будут ходить раздетые, голодные, бездомные 300 млн. программистов, а компьютеров не будет, так как их некому будет делать. А хочешь, не дожидаясь сентября, научиться работать на компьютерах? Ведь ты летом никуда не уезжаешь? - Очень хочу,- загорелся Алеша,- и сразу стану программистом! - Опять ты за свое,- охлаждаю я его пыл,- ведь первая задача программис- та - создать ТЕКСТ программы. Поэтому сначала научись работать на компьютере как, на пишущей машинке, но так, чтобы не задавать вопросы, как восстановить файл, почему у тебя программа не читается или как поступить в случае тех или иных сообщений системы. Или попробуй создать несколько самостоятелных текс- - 9 - RT-11, A step by step Systems World 14-Nov-92 тов, например статей, которые впоследствии можно соединить в один сборник- книгу. А для начала опиши наши приключения при изучении компьютеров. - Это что же, я должен, используя компьютер,- уточнил Алеша,- создать книгу о том, что я делал? - Вот именно: СОЗДАТЬ ТЕКСТ ЭТОЙ КНИГИ! Так, или примерно так, состоялся у меня разговор с соседским мальчишкой, который и привел к возникновению этой серии книг. Есть некое очарование, которое испытывает каждый, используя небольшую отдельную ЭВМ. Оно рождается ощущением полной власти над целой вычислительной системой и сознанием того, что все можно попробовать и все можно сделать. Пионеры ЭВМ, создавая и применяя первые машины, почувствовали это очарование, оно передалось и современным программистам. Некоторые могут возразить, что описанное ощущение сродни ностальгии и неуместно в замкнутом мире машинных операций. Они утверждают, что обычный пользователь совершенно удовлетворен программированием на языке высокого уровня и счастлив, что ему удается игнорировать большинство аспектов оборудо- вания, программного обеспечения и создания системы в целом. Эта книга предназначена не для тех, кто так думает. Она для тех, кто, будучи очарован машиной, желает понять магику, окружающую применяемые уст- ройства. Такие пользователи хотят знать несколько больше об увлекательной жизни системы. Эта книга для тех, кто не хочет иметь поражений в борьбе с системой, несмотря на неполадки аппаратуры, сбои программ и подчас полное отсутствие документации. Многие говорят, что обычному пользователю не нужно знать столько подробностей о системе. Однако как только пользователь остается один на один с системой, например работая на персональном компьютере у себя дома, даже если он не программист, то должен выполнять функции и лаборатории системных программистов, и целой бригады наладчиков оборудования, и архива- риуса, и администратора системы и только после этого - пользователя. Интел- лектуальную мощь всех тех, кто раньше помогал пользователю при работе на большой ЭВМ, он должен теперь вобрать в себя. Мы будем говорить не только о том, как запускать программы, но и о том, что при этом происходит или может произойти и почему. Большое место в наших разговорах уделено истории не только для того, чтобы восстановить справедли- вость, но и для того, чтобы читатель сам мог найти ответы на свои вопросы в схожих ситуациях. Здесь важна культура и психология пользователя. Как его действия повлияют на жизнь и работу других пользователей. Формы взаимодейст- вия человека с ЭВМ можно разделить на несколько уровней: ОДИН пользователь без файловой системы - Это, например, работа с калькулятором или персональным компьютером без внешних запоминающих устройств, возможно даже на языке высокого уров- ня, таком, как BASIC, FOCAL или FORTH. Независимо от мощности компью- тера такой пользователь подобен младенцу в отдельной кроватке со своей собственной (пусть даже и очень красивой, и очень дорогой) игрушкой. Понятно, что такой пользователь к миру современной информатики никако- го отношения не имеет. Примечание. Язык программирования высокого уровня - это формальное средство для изложения в текстовом виде шагов, которые нужно предпринять, чтобы соответствующим образом переработать заданную информацию. Он не отно- сится ни к какой конкретной ЭВМ, но подразумевает ее использование. Конец примечания. ОДИН пользователь с ОДНОЙ файловой системой - Это, например, микро- или мини-ЭВМ с развитой внешней памятью на дис- ках или магнитных лентах. При этом одновременно могут выполняться нес- колько задач. Но главное при этом то, что появились понятия о файлах - 10 - RT-11, A step by step Systems World 14-Nov-92 как о единицах информации и, соответственно, об операциях над файлами и файловой системе. Появился обмен информацией с себе подобными. Поя- вилась возможность нанести вред обществу, распространяя недоработанные программы или тексты в уникальной кодировке. МНОГО пользователей с ОДНОЙ файловой системой - Это, например, мини-ЭВМ или большая универсальная ЭВМ с развитой внеш- ней памятью, с развитыми устройствами ввода/вывода информации, позво- ляющими работать одновременно нескольким пользователям. В дополнение к предыдущему уровню появляются понятия о защите информации одного поль- зователя от преднамеренных или непреднамеренных действий другого поль- зователя, а также об Администраторе Системы. Так как процессор в конк- ретный момент времени может выполнять только одну задачу, а в системе много задач многих пользователей, то более остро встает вопрос о дис- циплине распределения времени процессора, оперативной памяти и памяти на внешних носителях между задачами и пользователями, о культуре взаи- моотношений в системе. МНОГО пользователей, МНОГО файловых систем - Такая ситуация может возникнуть, например, при работе в сети несколь- ких ЭВМ. При этом особенно повышается ответственность пользователя за свое поведение в общей системе, так как возможности нанести вред обществу и конкретным пользователям - колоссальные. Примечание. Администратор Системы - это человек, ответственный за обес- печение ежедневного нормального функционирования системы. Он обязан запускать систему и проследить за завершением ее работы, регистрировать новых пользова- телей и удалять выбывших, обеспечивать сохранность файловой системы и ее восстановление в случае повреждения, производить запуск учетных программ, сообщающих, кто и в каком количестве использует время процессора и внешнюю память. Конец примечания. И хотя в книге будет рассматриваться операционная система RT-11 как родоначальница однопользовательских операционных систем, компьютеры класса PDP-11 и LSI-11 и их отечественные аналоги - все это только прикладная часть наших знаний. Главное, чему необходимо научиться, - это умение анализировать возникающие ситуации, мыслить категориями системы, находить взаимосвязи между отдельными компонентами системы и почаще задавать себе вопросы ЗАЧЕМ и ПОЧЕМУ так сделано. Под профессионализмом в книге понимается и умение при работе с новой системой использовать старые знания, и умение разобраться в причинах неполадок и грамотно описать неисправность специалисту из службы ремонта. Знания, которые Вам могут показаться лишними, экономят Ваши деньги. Вспомни- те, сколько раз приходилось отдавать мастеру половину своей зарплаты только за смену предохранителя. В книге преднамеренно говорится не о вычислительной системе, а о системе вообще. Одна из причин этого в том, что современные системы из ЭВМ занимаются не только и не столько вычислениями. Другая причина заключается в том, что в книге под системой понимается не столько организация аппаратной части и прог- рамм операционной системы, сколько организация логических связей и взаимо- действие программ с аппаратурой, программ между собой, а также роль и психо- логия человека в этой среде. При чтении не нужно впадать в крайности - пытаться прочитать книгу за одну ночь или растянуть удовольствие на месяц. Не думайте, что если Вы знаете какие-то отдельные моменты, то легко одолеете оставшееся. В книге построена система понятий и определений, отличающаяся во многом от принятой в остальной литературе (особенно это касается редактора текстов). Пропустив связь между понятиями, Вы можете встать в тупик перед своими привычками. Здесь начинающие оказываются в более благоприятном положении. Как правило, материал подобран - 11 - RT-11, A step by step Systems World 14-Nov-92 так, чтобы прочитывать в день по одной или две главы. Везде, где Алеша будет работать на ЭВМ, повторяйте его действия (или более того) за своей ЭВМ. После прочтения Вы заметите, что книга может служить справочником (но только после прочтения), так как каждая глава описывает полностью одну программу, а чисто справочная информация по этой программе сгруппирована в конце главы. Но, прежде чем идти в ВЦ, нужно предварительно узнать, что такое компью- тер и как с ним разговаривать. Алеша уже поужинал, устроился удобно на диване и приготовился слушать сказку... - 12 - RT-11, A step by step Systems World 14-Nov-92 1. ДАВАЙТЕ ПОЗНАКОМИМСЯ 1.1. Мир, где живет ЭВМ, или Физический мир системы МИР, огромный и прекрасный, где живут люди называется планетой Земля. Леса, поля, моря и горы - все, что нас окружает, все, с чем мы общаемся, - это наш мир. Быстротечный мир сказок и мечты, льющийся к нам с экрана, - это другой, но тоже реальный мир - мир наших представлений - мир кинематографа. ЭВМ тоже должна где-то жить, с чем-то общаться. Мир ЭВМ ограничен тем оборудованием, которое с ней тем или иным способом связано. Основные устройства, которые подключаются к ЭВМ, - это различные уст- ройства внешней памяти. Большие и маленькие, быстрые и медленные. Одни запо- минают информацию отверстиями на бумажной ленте, другие - магнитными полями, как в бытовом магнитофоне, третьи используют для памяти гибкую пластинку, как у звукового журнала "Кругозор". Не меньшая группа устройств - устройства ввода и вывода информации. Это терминал с экраном, как у телевизора, на котором высвечиваются символы, и клавиатурой, как у пишущей машинки, для ввода данных, команд и просто текста, графический дисплей, на экране которого можно рисовать рисунки, как на чер- тежной доске. Есть и настоящий чертежный стол, на котором ЭВМ рисует сама, и называется он графопостроитель. И подобных устройств придумать можно много и их придумывают в настоящее время.. ЭВМ окружает такое множество вспомогательных устройств, что саму ЭВМ уже не видно. Все это - ЭВМ и множество вспомогательных устройств - и назы- вается аппаратной частью системы (HARDWARE), - это и есть физический мир сис- темы. 1.2. Что окружает ЭВМ, или Конкретная реализация системы В нашем ВЦ есть, наверное, все модели отечественной мини-вычислительной техники. Самым первым здесь появился ДВК-2, на котором мы первое время будем работать. Он был разработан, когда несколько молодых ребят поняли, что все платы, которые находятся в микро-ЭВМ "Электроника-60", можно сложить в одну, по возможностям практически не уступающую всей микро-ЭВМ. Дальнейшие модифи- кации ДВК были чисто внешними, кроме ДВК-4, в котором установлен более мощный микропроцессор и дополнительное ОЗУ. Для нашего ВЦ характерно, что вся аппа- ратура построена на единых принципах и, как говорят, программно- совместима между собой. Это и микро-ЭВМ "Электроника-60", МС-1212, ДВК-2, ДВК-3, ДВК-4; - 13 - RT-11, A step by step Systems World 14-Nov-92 персональная ЭВМ "Электроника-85", мини-ЭВМ - "Электроника-100/25", "Электроника-79". И так как ЭВМ этого семейства можно собирать из отдельных узлов, как бы кирпичиков, в соответствии с нашими потребностями, то и мы для изучения возможностей системы соберем два комплекта аппаратуры, на которых и будем работать. Первый - с минимальными возможностями (и, следовательно, минимальной ценой) - выпускался нашей промышленностью под названием ДВК-2М. С незначи- тельными отличиями все сказанное здесь относится и к ДВК-3, ДВК-4, "Электроника-85". ПРОЦЕССОР - для выполнения программ нам необходимо арифметико-логическое устройст- во, оперативная память и устройство управления - в нашем случае это одноплат- ная микро-ЭВМ "Электроника_НМС-1201". ТЕРМИНАЛ - для общения с системой нам необходим терминал, который состоит из кла- виатуры и в нашем случае дисплея. Мы будем использовать терминал 15ИЭ-00-013, но можно использовать и терминал венгерского производства "Videoton_VDT52130", а также СМ7209 польского производства. ВНЕШНЯЯ ПАМЯТЬ - в качестве внешней памяти в малых системах используются накопители на гибких магнитных дисках (дискетах). Мы будем использовать накопители с диске- тами диаметром 203мм (или 8 дюймов) ГМД-70, ГМД-7012 или ГМД-7022 и с диске- тами диаметром 133мм (или 5,25 дюйма) НГМД-6022. В ДВК-3М, ДВК-4 и "Электроника-85" используются накопители на гибких дисках НГМД-6121А (диаметр дискет 5,25 дюйма) и накопители на жестких герметичных дисках МС-5401 (МС-5402), работа с которыми в общем виде не отличается от ГМД-7012 или НГМД-6022. Мы в основном будем использовать диски ГМД-7012, так как они могут быть установлены на большую систему, что обеспечивает простейший перенос информации. ПЕЧАТЬ при необходимости получать твердую копию текстов на бумаге в состав комплекса нужно включить печатающее устройство. Для малых систем удобно использовать термопечатающее устройство 15ВВ1780-002, печать на котором происходит нагреванием иголок около специальной бумаги, которая меняет цвет при повышении температуры. Примечание. Здесь термин "ПРОЦЕССОР" используется в современном понима- нии как законченное устройство для обработки данных. Конец примечания. Второй вариант системы, которая будет рассматриваться в книге, обладает существенно более широкими возможностями. Подбор аппаратуры происходит анало- гично первому варианту. ПРОЦЕССОР - в качестве процессора будет использоваться мини-ЭВМ "Электроника-100/25", имеющая более широкий набор команд, чем "НМС-1201", а также более высокое быстродействие. Кроме того, у нее есть так называемая расширенная (дополнительная) память. ТЕРМИНАЛ - для того чтобы в дальнейшем показать различия в терминалах "Videoton_VDT52130" и "15ИЭ-00-013", в данной системе будем использовать тер- минал "VDT52130". - 14 - RT-11, A step by step Systems World 14-Nov-92 ВНЕШНЯЯ ПАМЯТЬ - одно из достоинств систем данного типа - это большой набор внешних запоминающий устройств и их существенно лучшие характеристики. В нашу систему мы включим следующие устройства: - накопитель ГМД-7012 для переноса информации на малую систему; - накопитель на жестких магнитных дисках СМ5400 - основная быстродейст- вующая память большого объема. Жесткий диск очень похож на большую грамплас- тинку диаметром 356мм, только из аллюминия, и покрыт магнитным лаком, как магнитофонная лента. Для защиты от пыли диск помещен в пластмассовую кассету с небольшой щелью для ввода магнитных головок, отчего произошло его второе название - "диск-кассета". - накопитель ЕС-5061 на жестких диск-пакетах. Быстрая память очень боль- шого объема. Диск-пакет очень похож на диск-кассету, но в пакете на одну ось надето несколько (11) жестких дисков, помещенных в съемный жесткий чехол; - накопитель на магнитной ленте СМ5300.01 - это медленное, но надежное запоминающее устройство большой емкости. Оно выполнено так же, как обычный бытовой магнитофон, но имеющий не две и не четыре дорожки, а целых девять. В остальном он отличается только габаритами. ПЕЧАТЬ - в качестве печатающего устройства в данном случае используется матрич- ное печатающее устройство ударного действия DZM-180 или ROBOTRON-1156 (эти устройства отличаются друг от друга только габаритами и скоростью печати). Печатают они ударами иголок через красящую ленту, а так как иголок несколько, то они образуют прямоугольник из точек - матрицу. От того, какие точки были ударены, зависит, какой символ изображен. Они могут также подключаться и к ДВК без каких-либо изменений. Кроме этого могут, использоваться и другие печатающие устройства - Robotron-K6311, Epson, D-100 и др. Таким образом, мы собрали аппаратную часть для двух систем - малой и средней, на базе которых мы будем изучать возможности нашей операционной сис- темы. Необходимо хорошо понимать, что состав аппаратуры в системе диктуется потребностями пользователя при решении конкретной задачи и может меняться в количественном отношении и в качественном. Мы берем указанный набор аппарату- ры для того, чтобы рассмотреть возможно большее количество вопросов, возни- кающих у пользователя. В свободном разговоре для краткости обычно малую сис- тему называют ДВК (Диалоговый Вычислительный Комплекс), среднюю - "СОТКА" (по названию процессора "Электроника-100/25"). Так эти системы будут называться и в книге. Внешний вид этих систем, так как их можно изобразить с их же помощью, показан на Рис.1 и Рис.2. - 15 - RT-11, A step by step Systems World 14-Nov-92 :: ------------------------+ / /I------- ------------- ------------ / / I // // / / I // // / +-----------------------+ I // // / I +-----------------+ I I // // / I I I I I // // / I I I I / // // / I I I I / // // / I I I * I / // // / I +-----------------+ * I/ /+------------++------------+ /+-----------------------+ / I II I / / / I ==##== II ==##== I // +--------------------------+ I * II * I // I ## I /I * II * I // I I //I ==##== II ==##== I // / I I// I * II * I// / +--------------------------+/ +------------++------------+/ / +--------------------------+ +--------------------------+ / I # # # I /I I / I I / I I / I I/ I =====#===== =====#===== I/ +--------------------------+ +--------------------------+ +----------------------+ +------------------------+ / / / /I / """ """ """ """""" /I / /--------------/ * / I / """"""""""""""" """ """/ / +----------------------+ I / """"""""""""""" """ """/ / I I / IZZZZZZZZZZZZZZZZZZZZZZZZI/ I I / IZZZZZZZZZZZZZZZZZZZZZZI/ Диалоговый Вычислительный Комплекс - ДВК-2М - 16 - RT-11, A step by step Systems World 14-Nov-92 :: --------------++-------------++-------------+ / // // /I / // // / I / // // / I +#############++#############++#############+ I I ......... II II I I I ......... II II I I I ......... II II I I I """""""" """II=============II I I I=============II II I I I II II=============I I I II II I I I # # # II=============II ==#== ==#== I I I=============II II=============I I I II II :::::::: :: I I I II II """""""" "" I I I # # # II II-------------I I I=============II II I I I II II I I I II II I / I II II I / I II II I / +-------------++-------------++-------------+/ -------------- +-------------+\ ---/ /--+ ----I+----------+ I \------------/ /-------------/ /I II I I \ /* / I II I I \ /* / I I+----------+ I/I \ +-------------------+ / +-------------+ I / I I / IZZZZZZZZZZZZZI_/ /I I /# +--------------+ / IZZZZZZZZZZZZZZZZZZZI/ # / """"""" """" /I / # # / """"""""" """ // / # # / """"""""" """ // / # /# # /# IZZZZZZZZZZZZZZI/ / ##################### #/ / ##/ ##/ ZZZZZZZZZZZZZZZZZZZZZZ# #/ #/ # Комплекс на базе мини-ЭВМ "Электроника-100/25" - 17 - RT-11, A step by step Systems World 14-Nov-92 1.3. Как общаться с ЭВМ, или Понятие файла - Вот мы с тобой сидим и мило беседуем, а как бы ты назвал этот процесс по-другому? - У людей это называется - процесс общения,- отвечает Алеша. - Ну, а в информатике - это процесс обмена информацией между двумя объектами. При этом под объектом может пониматься человек, ЭВМ, животное или что-нибудь другое. - А, например, холодильник?- задает каверзный вопрос Алеша. - И холодильник,- отвечаю я,- если он "заурчал", то передал информацию о том, что в морозилке стало тепло и он начал вырабатывать холод. А если, нап- ример, он долго не "урчит", то это тоже информация о том, что он сломался. При этом важен не способ, с помощью которого эта передача происходит, а сам факт того, что приемник (в данном случае это я) получил некоторую информацию и она вызвала такие же ассоциации, как и у передатчика. - Но ведь я не могу передать информацию холодильнику,- возразил Алеша. - Можешь,- убеждаю его я.- Ты можешь подойти и повернуть регулятор, передав информацию о том, до какой температуры нужно охлаждать содержимое. Но ты правильно обратил внимание на то, что передача информации имеет направление и не всегда возможен двухсторонний обмен информацией. Передача информации может происходить не только как перемещение от одного места к дру- гому, но и как передача от одного момента времени к другому, т.е. хранение информации. Например, когда ты записываешь в дневник домашнее задание, то передаешь информацию самому себе через какой-то промежуток времени. - Да, но я не могу тогда передать информацию в прошлое,- заметил Алеша. - Правильно, это и есть случай односторонней передачи информации. Кроме того, передача информации может происходить с изменением по опре- деленным правилам, т.е. преобразование информации. - Это когда я читаю английский текст,- сообразил Алеша,- и в уме перево- жу его на русский. - Совершенно верно, и в ЭВМ часто происходят такие преобразования. При всей своей элементарности вопрос передачи информации (мы не рассмат- риваем сейчас техническую сторону этого вопроса) очень важен. Часто информа- цию нельзя принять только потому, что возможная форма приема (или ассоциации приемника) не соответствует форме передачи. Таким образом, мы можем сказать, что все наши проблемы сводятся к задаче - как передать информацию от одного устройства к другому, от устройства к человеку, от человека к устройству и, наконец, от одного момента времени к другому. - И мы должны еще,- добавляет Алеша,- уметь преобразовывать ее к удобно- му для нас виду. - Да, но мы пока говорим об информации как о целом объекте,- говорю я.- На самом деле этот объект может быть очень большим и нужно научиться переда- вать его по частям. Я хочу сказать, что нам необходимо определить, какими порциями можно передавать информацию в системе. И еще один аспект мы не ука- зали - эту порцию информации мы должны уметь найти в системе, т.е. она должна иметь какой-то адрес в системе, или, если сказать по-другому, быть адресуе- мой. - Можно передавать по буквам, словам или по строчкам,- фантазирует Але- ша. - Да, если у нас информация текстовая,- уточняю я.- А если произвольная? В таком случае минимальным элементом информации является байт. В большинстве случаев понятия БАЙТ и СИМВОЛ (буква) текста эквивалентны. - 18 - RT-11, A step by step Systems World 14-Nov-92 Примечание. Байт - это минимальный адресуемый элемент данных. Первона- чально имел размер в 5 бит в телеграфных аппаратах, 6 бит в первых ЭВМ типа PDP-8 и других, 7 бит в терминалах и телетайпах. Сегодня самый распространен- ный вид байта имеет размер 8 бит. Бит - это минимальное количество информа- ции, может принимать только два значения - 0 и 1, ДА - НЕТ, ПРИСУТСТВУЕТ - ОТСУТСТВУЕТ. Конец примечания. С другой стороны, при разработке операционной системы это вопрос принци- пиальный. Например, в операционной системе UNIX основным адресуемым элементом данных является БАЙТ, для операционной системы RSX-11 - ЗАПИСЬ, которая в тексте эквивалентна строке. Примечание. Примером записи может быть строка символов, которая начи- нается символом перевода строки (ПС) и кончается символом возврата каретки (ВК). Конец примечания. В нашей системе RT-11 адресуемым элементом данных является блок, содер- жащий 512. байт. - Но это очень мелкая порция,- замечает Алеша,- примерно четверть маши- нописной страницы. Может быть, можно эти "странички" подшить в какую-нибудь "папку" и передавать целиком? - И при этом ты подшил "странички" в определенном порядке,- спрашиваю я Алешу. - Да, ведь они же адресуемые, значит, каким-то образом организованы в цепочку или ряд. - Тогда в английском языке есть слово File, которое означает папка, дело, досье, подшитые документы или бумаги. А изначально - шпилька для нака- лывания бумаг. - Это как в магазине - для чеков,- быстро нашел аналогию Алеша. - Да, и в вычислительной технике это слово стало обозначать "папку", только электронную. А если серьезно, то дадим точное определение файла: ФАЙЛ - это совокупность адресуемых элементов данных и способа их организации. Таким образом, файл может содержать произвольное количество блоков (страниц), находиться на любом устройстве (в шкафу). С файлом можно выполнять некоторый набор операций, который задается при проектировании системы. Давай я буду называть операцию, а ты - находить аналогию из повседневной жизни. - ПОИСК ФАЙЛА ПО ИМЕНИ. - Найти в шкафу папку, на обложке которой указано, что в ней лежит,- быстро ответил Алеша. - ЧТЕНИЕ ИНФОРМАЦИИ ИЗ ФАЙЛА. - Открыть папку и прочитать ее страницы, а затем закрыть,- полностью описал свои действия Алеша. - ЗАПИСЬ ИНФОРМАЦИИ В ФАЙЛ. - Открыть папку, записать на странице информацию и затем закрыть ее,- опять полностью перечислил свои действия Алеша. - СОЗДАТЬ ЗАПИСЬ О ФАЙЛЕ В КАТАЛОГЕ,- не унимаюсь я. - Ну, это когда папок много,- задумался Алеша,- тогда удобней на дверке шкафа повесить отдельный листок, в котором записать имя папки и на какой пол- ке она находится и, может быть, другие параметры, например когда папка была начата и какой ее объем. - Но ведь у нас еще нет объема,- говорю я,- ты только на листочке напи- сал ее название, а папку на полку не положил. Да и если ты ее положишь, то объем папки равен нулю. - Но тогда,- стал искать ответ Алеша,- если говорить строго, мы должны - 19 - RT-11, A step by step Systems World 14-Nov-92 положить в папку какое-то количество листов чистой бумаги и считать это заре- зервированным объемом. На папке можно написать название или обойтись без него. Но если мы хотим иметь каталог, то в нем мы должны указать все атрибуты файла, т.е. нашей папки - признак состояния "ПОСТОЯННЫЙ", полное имя, размер (объем), на какой полке шкафа он лежит. - Ну, а если мы уже имеем каталог,- втягиваю я его в это исследование,- то как УДАЛИТЬ ФАЙЛ?ж - Можно просто снять папку с полки и выкинуть,- торопится Алеша. - И засорять окружающую среду,- остановил его я. - Какую окружающую среду? - Ах, у тебя даже ее нет,- говорю я,- значит тебе, и выкидывать некуда. Значит то, что ты имеешь в шкафу, там должно и остаться. Может, можно сделать проще? - А можно,- Алеша нашел выход,- просто в каталоге заменить признак "ПОС- ТОЯННЫЙ" на "ПУСТОЙ". Нет,- Алеша быстро себя поправил,- на "НЕИСПОЛЬЗУЕМЫЙ". Ведь мы не можем из папки выкинуть листочки. Мы можем только предположить, что на этих листочках можно заменять информацию, т.е. писать столько раз, сколько нужно. - Но тогда мы подошли к очень важному выводу,- говорю я.- Если мы предс- тавляем устройство памяти как шкаф с папками на полках, то все папки должны быть заполнены "листочками", т.е. иметь объем. А используется ли этот объем, мы узнаем из каталога. При этом общий объем шкафа зависит не от количества папок, а от их суммарного объема. - И кроме того,- замечает Алеша,- в этом же шкафу должен лежать наш каталог, хоть несколько листочков, который тоже занимает место. - А теперь, заметь, что если ты взял папку для работы, то никто другой в это время с ней работать не может. Что же будет тогда в нашем каталоге? - А я сделаю очень просто,- отвечает Алеша,- введу еще один признак "ВРЕМЕННЫЙ" и пока я работаю, в каталоге будет отмечено, что это место вре- менно занято. - Прекрасно,- отмечаю я,- у тебя уже появился набор признаков. Тогда такой вопрос: что ты будешь делать, если у тебя в шкафу (а значит и в катало- ге) будет две (или больше) папки с одинаковым именем и признаком "ПОСТОЯННЫЙ"? - А этого нельзя допускать,- говорит Алеша,- потому что я не смогу раз- личить, какую папку я должен взять. И об этом должна позаботиться система. - Это ты правильно заметил, но есть еще одно свойство: ты можешь взять из шкафа любую папку? - Да,- отвечает Алеша,- и с произвольной полки, и из любого ее места. - Тогда,- даю я определение,- у тебя устройство с произвольным доступом. - Согласен,- говорит Алеша. - А раз есть устройство с произвольным доступом, то можно придумать и устройство с последовательным доступом. Что-то вроде длинной полки, которая перемещается мимо тебя, а ты можешь ей управлять и брать папки только в окош- ке напротив тебя. - А я такую видел,- говорит Алеша.- В нашей поликлиннике в регистратуре истории болезни хранятся на таких полках, свернутых в кольцо. - И какая же при этом особенность наблюдается? - А у них нет каталога,- вспоминает Алеша,- они просматривают папку за папкой и по названию на обложке находят нужную. - Но в принципе каталог собрать можно? - Да, для этого нужно просмотреть обложки всех папок по порядку и назва- ния и параметры выписать на отдельный листок. - А раз так,- добавляю я,- то эти данные должны быть написаны на облож- ке. И еще необходимо иметь какие-то признаки, которые позволяют явно отделить один файл от другого. Это как тесемки для связывания обложек папки. Этот разговор был затеян не зря. Кроме чисто этимологических свойств, термин "File-Папка" очень точно отражает процессы, происходящие с файлом в - 20 - RT-11, A step by step Systems World 14-Nov-92 системах обработки данных. Некоторая неоднозначность возникает из-за имеюще- гося в литературе термина "тип файла". По существу, это тоже имя файла, или название папки, но которое может указывать на принадлежность данного файла к некоторому множеству файлов с особыми свойствами. Но так как современные опе- рационные системы не накладывают ограничений на использование типа, то можно считать (в нашей аналогии), что он соответствует цвету папки. С одной сторо- ны, это позволяет нам просматривать содержимое, например только красных папок, с другой - мы имеем право хранить в них произвольную информацию. А так как мы должны сообщить системе, с каким файлом хотим работать, то должны уметь написать его адрес. В операционных системах этот адрес называет- ся СПЕЦИФИКАЦИЯ ФАЙЛА. В дальнейшем мы разберем точное определение специфика- ции файла в RT-11. Сейчас же мы должны понять из аналогии с папкой, что этот адрес должен состоять из имени устройства (номер шкафа, в котором лежит пап- ка), имени файла (название, написанное на папке) и типа файла (цвет папки). Если мы можем каким-то образом провести аналогию между формой запомина- ния данных и рассмотренной File-Папкой, т.е. мы можем тем или иным образом собрать каталог, то такое устройство называется устройством файловой структу- ры. Например, накопители на магнитной ленте представлены в RT-11 в двух видах - файловой и нефайловой структуре. Ответственность за структуру данных (если ее можно создать) в устройствах нефайловой структуры пользователь берет на себя. Кроме того, устройства различаются по методу доступа, как наши шкаф и длинная полка. Если мы можем работать с произвольным файлом на устройстве, то такое устройство имеет произвольный доступ. Если мы можем записывать или читать данные только последовательно - файл за файлом, то такое устройство имеет последовательный доступ. И уже переходя к файлам, уточним о чем мы говорили. При записи файла на магнитный диск мы можем записать файл произвольно на любое свободное место на диске, а также прочитать произвольный файл, так как каталог содержит информацию не только о файлах, но и о свободных зонах. При этом свободная зона также считается файлом. На устройствах с произвольным доступом существует такое понятие, как состояние файла. А именно файл может быть "НЕИСПОЛЬЗУЕМЫМ", "ВРЕМЕННЫМ" и "ПОСТОЯННЫМ". Это понятие очень важно для понимания того, что будет происхо- дить в системе, когда мы начнем в ней работать. Допустим, мы захотели создать на устройстве файл и записать в него неко- торую информацию. Что же при этом происходит? - В каталог устройства заносится запись о том, что на таком-то месте тома зарезервировано место размером в указанное число блоков для файла с ука- занным именем и типом. Т.е. файла еще не существует, а запись о нем в катало- ге уже есть. Признак состояния файла - "ВРЕМЕННЫЙ". Говорят, что файл открыт для записи. В общем случае на устройстве может существовать больше одного временного файла с одинаковым именем и типом. - По мере поступления информации она записывается в файл в зарезервиро- ванную область на устройстве, и при этом начинает существовать настоящий файл, содержащий некоторую полезную информацию. Признак состояния файла - "ВРЕМЕННЫЙ". - После окончания работы с файлом мы можем его "закрыть" (точнее, ска- зать системе, что мы закончили работу с файлом и хотим его сохранить) и тем самым сделать его постоянным. На одном устройстве должен быть только ОДИН файл, имеющий признак состояния "ПОСТОЯННЫЙ" и указанные имя и тип. Это зна- чит, что в каталоге тома должна быть только одна запись о файле с указанным именем и типом и с признаком состояния - "ПОСТОЯННЫЙ". Если на устройстве есть еще файл с таким же именем и типом, система изменит его признак состоя- ния на "НЕИСПОЛЬЗУЕМЫЙ". - Если после окончания работы с файлом мы его не закроем (или, как гово- - 21 - RT-11, A step by step Systems World 14-Nov-92 рят, освободим), то система занесет в запись о файле признак состояния - "НЕИСПОЛЬЗУЕМЫЙ". Такие атрибуты, как имя и тип файла, в дальнейшем использо- ваться не будут. При этом система будет считать, что на месте, где находится файл (а он существует), имеется свободная (неиспользуемая) зона, равная по размеру файлу. Примечание. Состояние файла на устройстве с последовательным доступом может иметь признак только "ПОСТОЯННЫЙ". Конец примечания. Таким образом, важно отчетливо понимать, что на устройстве с произволь- ным доступом существует файл как объект, содержащий информацию и запись о файле в каталоге устройства. В общем случае они могут быть не связаны между собой, но мы можем производить какие-либо операции с файлом только тогда, когда сам файл и запись о нем в каталоге имеют однозначное соответствие друг другу и при этом признак состояния файла - "ПОСТОЯННЫЙ". Все, что мы говорили о файлах и их существовании, весь комплекс понятий о файлах и операциях над ними носит название файловой системы. Более точно можно определить файловую систему как набор правил, однозначно определяющий свойства файлов как объектов и все операции над ними. Эти правила будут опре- деляться и уточняться на протяжении всей книги. Здесь следует отметить еще одно свойство файлов. Файл может содержать коды символов печатающего устройства, и этот файл можно вывести на печатающее устройство и получить на бумаге некоторый текст. Такой файл мы назовем текстовым. Файл, содержащий произвольные двоичные коды, мы назовем двоичным. Если в двоичном файле коды записаны в соответствии с определенными правилами, то такой файл может являться программой для процес- сора, тогда его можно загрузить в оперативную память и выполнить. В общем случае двоичный файл может не быть программой. Некоторые файлы могут содер- жать часть произвольных двоичных кодов и часть символьных кодов. 1.4. И кто правит в мире этом? или Базовый состав операционной системы Как мы видели, мир системы может быть огромным и разнообразным. Если каждый пользователь будет сам писать программы для управления многочисленными периферийными устройствами и файлами, то получится полная неразбериха, так как каждый пишет по своему. С другой стороны, обмен файлами между пользовате- лями будет практически невозможен. Поэтому удобно, чтобы пользователи пользо- вались единой управляющей программой или набором программ, которые называются операционной системой. Для того чтобы понимать, о чем далее пойдет речь, дадим определение понятия "ОПЕРАЦИОННАЯ СИСТЕМА". ОПЕРАЦИОННАЯ СИСТЕМА - это организованный набор программ, предназначенный для управления опе- рациями ввода/вывода информации, для управления программами пользователя, а также облегчения разработки программ и файлов пользователя. Мы выделяем программы из общего числа файлов, потому что первоначально пользователь являлся программистом и его основная работа была - создание - 22 - RT-11, A step by step Systems World 14-Nov-92 программ. Но в настоящее время пользователь не обязательно должен быть прог- раммистом. Его основная работа может заключаться в создании текстов (тексто- вых файлов), как, например, писатель или машинистка, или управлении произ- водством с помощью информационной системы, которая опирается на операционную систему. "Программа пользователя" не обязательно должна быть написана пользовате- лем. Это может быть программа, входящая в состав операционной системы, но выполняющаяся под управлением системных программ и служащая для расширения возможностей системы и удовлетворения нужд пользователя. Т.е. программа поль- зователя делает пользователя пользователем. 1.4.1. На золотом крыльце сидели... или Структура операционной системы И опять, продолжая наши рассуждения, мы попробуем собрать операционную систему из кирпичиков - программ. При этом нам известно только то определение операционной системы, которое было дано выше. Кроме того, необходимо уметь представлять потребности пользователя, которым можем быть и мы. Поэтому нач- нем читать определение. 1.4.1.1. Царь, Царевич... или Системные программы Операционная система предназначена для управления операциями ввода/вывода. Проанализируем это условие. Ввод или вывод информации происходит на какое-либо устройство, которое должно быть определено в системе. Каждое уст- ройство имеет свою конструкцию, свои специфические правила обмена информа- цией. Отсюда вытекает, что для обмена информацией с каждым устройством должна быть своя программа. Эти программы называются драйверами устройств (от drive - приводить в движение) и являются системными программами. Если мы хотим ввести в систему новое устройство, то прежде всего мы должны иметь драйвер этого устройства, т.е. программу, которая обеспечивает обмен информацией с этим устройством в таком виде, как это принято в ОС. В RT-11 драйвер получает имя соответствующего устройства в системе. Ниже приводятся системные имена устройств, а следовательно, и драйверов, которые мы будем использовать. Часть драйверов является общими для обеих, используе- мых нами аппаратных конфигураций систем. Это: - 23 - RT-11, A step by step Systems World 14-Nov-92 TT - драйвер системного терминала. Обеспечивает ввод информации с клавиату- ры и вывод на экран дисплея. Это устройство с последовательным вводом/выводом нефайловой структуры; DX - драйвер накопителя на гибких магнитных дисках ГМД-70 или ГМД-7012. Устройство с произвольным доступом файловой структуры. Полный объем устройст- ва 494 блока; LP - драйвер печатающего устройства с параллельным выводом информации. Вывод информации подобен выводу на экран дисплея, но при этом отсутствуют многие специальные функции терминала. Устройство последовательного вывода нефайловой структуры. Для "Электроники-85" вместо него используется драйвер LS для печатающих устройств с последовательной передачей информации. Для пользователя эта разница не существенна; SL - драйвер редактора командной строки. Физически такого устройства не существует. Драйвер появился только в RT-11 V5.0 и позволяет редактировать вводимую с терминала строку или уже введенную, но предназначенную для повтор- ного ввода; NL - еще одно фиктивное устройство, не существующее физически. Оно "делает вид", что выводит информацию на устройство нефайловой структуры, при этом никакого вывода физически не происходит. Очень удобно при отладке программ; PC - перфоратор и считыватель с перфоленты; Для ДВК используется драйвер накопителя на гибких магнитных дисках НГМД-6022, который имеет имя MX. Этот драйвер разработан в СССР и не входит в исходную систему RT-11. Этот накопитель нельзя подключить к СОТКЕ. Для СОТКИ прибавляются драйверы устройств, которые мы подключили к ней дополнительно: RK - драйвер накопителя на диск-кассетах RK05 или СМ-5400. Устройство с произвольным доступом файловой структуры. Объем 4800 блоков; DP - драйвер накопителя на диск-пакетах RP03 или ЕС-5061 емкостью 20М байт. Устройство с произвольным доступом файловой структуры. Объем 40 000 блоков; MT - драйвер накопителя на магнитной ленте TM11 или СМ-5300. Устройство с последовательным доступом файловой структуры; VM - драйвер виртуальной памяти. Программа, позволяющая использовать допол- нительную память, которая имеется в СОТКЕ, как сверхскоростное устройство файловой структуры с произвольным доступом. Драйвер появился только в RT-11 V5.0. Может использоваться также в "Электронике-85" и ДВК-4. В "Электронике-85" объем достигает 820 блоков; - 24 - RT-11, A step by step Systems World 14-Nov-92 LD - драйвер логического диска. Физически такого устройства, как это видно из названия, нет. Однако эта программа позволяет на любом физическом диске (а точнее, на устройстве файловой структуры с произвольным доступом) работать с конкретным файлом как с устройством файловой структуры с произвольным досту- пом. Драйвер появился в RT-11 V5.0, как логическое развитие имевшихся в пре- дыдущих версиях драйверов UX, UY, UZ. Для того чтобы понять, зачем он нужен, достаточно представить себе насколько неудобно пользоваться книгой очень большого размера и насколько проще читать ту же книгу, напечатанную в нес- кольких томах, беря в руки том за томом. Когда мы начнем работать с накопите- лями типа RK или DP (для ДВК-4 или "Электроника-85" он применяется на уст- ройстве DW), мы сможем в этом убедиться. Таким образом, мы подобрали для обеих систем наборы программ для ввода/вывода информации на соответствующее устройство. Важно при этом пони- мать, что каждому устройству в системе, фиктивному или реальному, должна иметься программа-драйвер. Однако для организации всех операций ввода/вывода одних драйверов недос- таточно. Необходима еще и некоторая программа, которая бы этими драйверами управляла, и в совокупности с ними составляла бы систему ввода/вывода инфор- мации. Такая программа есть в RT-11 и, несмотря на то что мы ее функции будем рассматривать отдельно, в самостоятельном виде она не применяется. Программа называется USR (User Service Routine - программа обслуживания пользователя). Программа USR занимается организацией всех операций ввода/вывода и тех, кото- рые мы захотели выполнить в диалоговом режиме командами с клавиатуры, и тех, которые требуется выполнить программе пользователя, исполняющейся в данный момент. По определению операционная система должна управлять программами пользо- вателя, т.е. загружать программы в память, следить за распределением памяти, следить за событиями в системе, вести учет времени и выполнять еще много дру- гих вспомогательных функций для облегчения разработки программ и файлов поль- зователя. Программа такого рода обычно называется монитором (Monitor - стар- ший ученик в классе, управляющий). Так как эта программа управляет всеми дру- гими программами, то она должна постоянно находиться в оперативной памяти или, как говорят, "быть резидентной в памяти". Из совокупности этих посылок и вытекает название управляющей программы в RT-11 - RMON (Residented MONitor). Так как программы ОС хранятся на машинном носителе (магнитной ленте или диске), необходима некоторая программа, позволяющая загрузить монитор ОС в оперативную память процессора и запустить ее. Эта программа называется BSTRAP (Bootstrap - загрузчик). Загрузчиков у системы несколько, работают они в раз- ное время и располагаются в разных программных модулях. Здесь мы только отме- тим, что основной загрузчик располагается в файле монитора. Еще одно требование, которое необходимо учитывать, касается чисто чело- веческого фактора. Работает с системой человек, единственное его средство общения с системой - это клавиатура для ввода команд и экран для вывода информации. Для передачи команд системе необходима программа обработки команд с клавиатуры. В RT-11 эта программа состоит из двух частей. Клавиатурный монитор - KMON (Keyboard MONitor), - выполненный как самостоятельная програм- ма, и его работа находится под управлением резидентного монитора. Вторая часть - интерпретатор командной строки (Command String Interpretator - CSI) - реализована как часть программы USR. Это сделано для того, чтобы облегчить обращение к системе из программы пользователя. Четыре описанные выше программы - BSTRAP, USR, RMON, KMON - на носителе хранятся в виде единого файла, имеющего имя RT11$$. Где "$$" обозначают тип монитора BL, SJ, FB, XM, TS, PI, AI (про типы мониторов мы будем говорить в дальнейшем, а пока будем использовать монитор RT11SJ (Single Job - одно зада- ние), который позволяет запускать в один момент времени только одну програм- - 25 - RT-11, A step by step Systems World 14-Nov-92 му. Все, что будет говориться о нем без оговорок, будет справедливо и для остальных). Примечание. По причинам, которые будут описаны дальше, в RT-11 V2, V3 имя файла монитора обозначалось иначе - @@MN$$. Где @@ - двухбуквенное имя устройства, которое будет использоватся как системное, $$ - тип монитора. Например, в ОСДВК используется монитор MXMNSJ, т.е. однозадачный (SJ) монитор (MN), который должен располагаться и загружаться с устройства MX (гибкие дис- ки 5.25"). Конец примечания. Конечно, можно работать в системе и не зная этих подробностей. Но поиск решения в тупиковых ситуациях, когда, как говорят, "система не понимает", опирается на понимание описанных мелочей. Это во-первых. А во-вторых - в дру- гой системе программы будут иметь другие имена, будут по-другому делить между собой функции, но функции останутся. Еще один файл необходим для работы операционной системы - это SWAP. Он представляет собой рабочий буфер системы, где сохраняются важные области памяти пользователя во время операций ввода/вывода. Все эти программы и файлы носят название системных, так как самостоя- тельно они работать не могут и составляют ядро операционной системы и имеют тип .SYS. Образно это можно изобразить так, как это показано на рисунке. +---------------+ +---------+ ! K M O N !<===>! ! !---------------! ! ! ! R M O N ! ! S W A P ! !---------------! ! ! ! U S R !<===>! ! !---------------! +---------+ ! B S T R A P ! +----+----+----+--==+====+====+==--+----+----+----+ ! TT ! SL ! DX ! NL ! RK ! VM ! DP ! MT ! LD ! MX ! +----+----+----+----+----+----+----+----+----+----+ ! ! ! ! ! ! ! V ! V ! V ! ГМД-7012 ! ЕС-5061 ! НГМД-6022 V V V VDT-52130 СМ-5400 СМ-5300 Ядро операционной системы RT-11 1.4.1.2. Сапожник, Портной... или Вспомогательные программы Вспомогательные программы, или утилиты (Utility), расширяют функциональ- ные возможности операционной системы. Их набор определяется потребностями пользователя при решении конкретной задачи. И все-таки среди множества утилит есть программы, необходимость которых диктуется независимостью работы от - 26 - RT-11, A step by step Systems World 14-Nov-92 сбоев и неполадок системы - аппаратуры и программ. Одна из самых важных функций - это копирование файлов. Копирование выполняется при переносе файла с устройства на устройство, при выводе на печать. Скопировать файлы операционной системы с эталона - это первое, с чем сталкивается пользователь. В RT-11 для этой цели используется программа PIP (Peripheral Interchange Program - программа обмена с периферией). Файлы хранятся на устройстве внешней памяти. Устройство файловой струк- туры имеет каталог, и с ним надо работать. Организация каталога, внесение в него записей, запись идентификатора тома и имени владельца, копирование информации с устройства на устройство, используя абсолютные номера блоков, а не имена файлов. Все эти операции в RT-11 выполняет программа DUP (Device Utility Program - программы обслуживания устройств). Программист работает вслепую. Никто и никогда не видел программу и не увидит. Никто не видел файл, хранящийся на магнитном диске. И когда возникают сбои - ошибки аппаратуры или программ, ошибки самого пользователя, - очень хочется посмотреть, что произошло в системе, что изменилось. Получить хоть малейшую информацию для анализа возникшей ситуации. Одной из таких программ является программа DIR (DIRectory). Эта програм- ма позволяет распечатать каталог устройства файловой структуры в удобном для пользователя виде. Используя информацию программы DIR, полученную в различные моменты времени, можно сказать, что происходило в системе и что не происходи- ло. Программа DIR выдает пользователю информацию о файлах и о занимаемых ими блоках на устройстве. Часто требуется более подробная информация, например какие коды находятся в данном месте устройства. Для этого в RT-11 использует- ся программа DUMP. Следует отметить, что эта программа часто позволяет полу- чить информацию об устройствах в тех случаях, когда другие программы бессиль- ны. Итак, в качестве вспомогательных программ мы включили в операционную систему четыре. Программы PIP, DUP - это руки операционной системы, DIR, DUMP - это глаза. Взаимодействие этих программ с файлом показано ниже. +-------+ +----------+ +---------+ ! D U P !<=====>! Запись !=====>! D I R ! +-------+ ! о файле ! +---------+ +==========+ ! ! +-------+ ! ! +---------+ ! P I P !<=====>! Ф А Й Л !=====>! D U M P ! +-------+ ! ! +---------+ +----------+ Взаимодействие программ с файлом 1.4.1.3. ...кто ты будешь такой? или Остальные программы ОС Те программы, которые мы рассматривали выше, используются в большинстве случаев. Любые другие программы включаются в состав ОС только для расширения - 27 - RT-11, A step by step Systems World 14-Nov-92 конкретного набора функций системы. Это могут быть программы, поставляемые вместе с операционной системой или написанные пользователем. Для того чтобы эти программы могли входить в состав операционной системы, они должны быть написаны с учетом правил обмена информацией и правил существования системы. Программы должны учитывать не только возможное взаимодействие с одновременно работающими программами, но и привычки пользователя, оставшиеся от других программ, входящих в систему. Правила могут несколько меняться от версии к версии, и поэтому основное правило для надежной работы системы - все програм- мы операционной системы должны быть одной версии. 1.5. А откуда все это взялось? или Немного истории ЭВМ Whirlwind (Вихрь), разработанная в Массачусетсском технологическом институте (МТИ) в начале 50-х годов, явилась в некотором смысле первой персо- нальной ЭВМ. Сидя перед телевизионным экраном этой 16-ти разрядной ЭВМ и пользуясь клавиатурой, световым пером, манипулятором "джойстик" и звуковым сигналом, инженер мог выполнять различные вычисления в диалоговом режиме. Ширина каждой разрядной секции такой ЭВМ составляла 0.6м, а высота 3.35м; вся ЭВМ занимала площадь 232 квадратных метра, т.е. имела довольно большие габа- риты, и все же она была поистине интерактивной ЭВМ. Для того чтобы реализовать идеи, заложенные в ЭВМ Whirlwind, в виде быстродействующих простых интерактивных ЭВМ, в 1957 году была основана фирма Digital Equipment Corporation (DEC). Первые машины PDP-11 корпорации DEC поя- вились в начале 70-х годов. В отличие от серии PDP-8, представляющей собой многократное повторение по существу одной и той же машины в разных технологи- ческих вариантах, семейство PDP-11 задумано и осуществляется как ряд машин, объединенных единой архитектурой, но значительно отличающихся друг от друга в отношении производительности и цены. Семейство PDP-11 неуклонно расширяется и включает в себя уже более двадцати моделей, покрывающий обширный диапазон мощностей - от микрокомпьютера LSI-11, поставляемого в минимальном варианте с 8К байт памяти, до "супер-микро" Micro/PDP-11/83 с памятью 4М байта и произ- водительностью на уровне средних моделей IBM 360/370. Примечание. Обычно буквы "К" и "М" служат для обозначения величин, рав- ных 1000 и 1000000 соответственно. Однако при рассмотрении памяти вычисли- тельных машин по рекомендации Американского Института Национального Стандар- тов (ANSI) эти буквы обозначают величины 1024 и 1048576. Конец примечания. Младшие и средние машины выпускаются в двух вариантах: в завершенном оформлении для конечного пользователя (PDP-11/10, 11/20, 11/40) и в виде полуфабрикатов для комплектования систем (PDP-11/04, 11/05, 11/15, 11/35). Старшие модели (PDP-11/45, 11/50, 11/55, 11/60, 11/70) независимо от назначе- ния поставляются в завершенном варианте. К машинам PDP-11 имеется богатый выбор периферийных устройств, выпускаемых как самой фирмой Digital Equipment Corporation, так и многими другими фирмами. Замечательной чертой семейства PDP-11 является тщательно соблюденная на всех уровнях совместимость аппаратуры, программного обеспечения, а также кодов и форматов представления данных на различных носителях. Во многих странах выпускались как аналоги, так и машины архитектурно - 28 - RT-11, A step by step Systems World 14-Nov-92 совместимые с машинами серии PDP-11. Это и машины CORAL 4001/4011/4030 румынского производства, и машины JANUS венгерского производства (последние большей частью используют советские микропроцессоры и другие комплектующие изделия). Среди советских ЭВМ получила наибольшее распространение серия малых ЭВМ (СМ-ЭВМ), включающая в себя ЭВМ СМ-3, СМ-4, СМ-1420, а также "Электроника-60", "Электроника-100/25", "Электроника-79" и т.д. Ниже мы приводим соответствие ЭВМ класса PDP-11, выпущенных различными странами и фирмами: PDP-11/03 LSI-11 "Эл-60" MERA-60 PDP-11/04 СМ-3 CORAL-4001 PDP-11/05/10 PDP-11/15/20 PDP-11/35/40 "Эл-100/25" СМ-4 MERA-125 PDP-11/45 PDP-11/34 СМ-1420 CORAL-4011 PDP-11/24 PDP-11/44 CORAL-4030 PDP-11/50 PDP-11/55 PDP-11/60 PDP-11/70 "Эл-79" PDP-11/73 LSI-11/02 LSI-11/23 Эл.МС1211 LSI-11/23+ Эл.МС1212 microPDP-11/83 Эл.МС0102 Pro-350 "Эл-85" Мы будем говорить в этой книге об операционной системе RT-11 (Real Time system pdp-11), разработанной фирмой DEC (Мейнард, шт.Массачусетс, США), прежде всего потому, что она явилась родоначальницей всех однопользовательс- ких ОС для малых и микро-ЭВМ. Вторая причина - большое количество ОС, так или иначе совместимых с RT-11, часто имеют и плохую документацию, которая исполь- зует большую часть документации по ОС RT-11, и в своих рекламных заявлениях настолько искажают ее сущность, что говорить о них - значит внести путаницу в весь комплекс понятий однопользовательских систем. Зная исторический процесс и сложившееся положение, легче найти решения при работе с подобными система- ми, используя логику и аналогии. - Алеша, чтобы нам не придумывать самим,- прошу я,- возьми на верхней полке вон ту толстую книгу. - RT-11, Software Support Manual,- читает название Алеша. - Да, это руководство, изданное фирмой DEC,- подтверждаю я,- и оно начи- нается с истории создания RT-11. - Тогда я просто прочитаю ее,- говорит Алеша,- и сразу переведу. - Да,- отвечаю,- а я буду дополнять. В 1972 году предполагалось, что RT-11 будет маленькой, быстродействую- щей, простой в обращении ОС для семейства компьютеров PDP-11. Она развивалась как однопользовательская система для задач реального времени и вычислений; ее основными приложениями были: получение данных, управление технологическими процессами или научными экспериментами и, конечно, разработка программ, рас- ширяющих возможности системы. Примечание. Задачи реального времени - это задачи, в которых время реак- ции системы на запрос пользователя меньше времени реакции самого пользовате- - 29 - RT-11, A step by step Systems World 14-Nov-92 ля. Конец примечания. 1971 год был началом бурного развития компьютерной промышленности. Компьютеру PDP-11 исполнился только год, и Digital демонстрировала многочис- ленные возможности для тысяч применений, предоставляемых этим относительно недорогим 16-ти разрядным компьютером. Имеющееся программное обеспечение для PDP-11 состояло из PTS (Papir Tape Software программное обеспечение на бумажной ленте, которое включало ассемб- лер PAL-11) и DOS-11 (система пакетной обработки). Популярная операционная система для PDP-8, называвшаяся OS/8, была при- нята как модель для новой операционной системы PDP-11 и временно была названа OS-11. Новая операционная система разрабатывалась как маленькая, однопользо- вательская, интерактивная система, управляемая событиями от ввода/вывода в реальном времени, которая могла бы работать на компьютерах PDP-11 с памятью 28К слов или меньше. Это обеспечивалось разработкой простой, модульной струк- туры; драйверы устройств могли быть использованы для передачи ввода/вывода так, чтобы прикладные программы могли быть независимыми от устройств, и файлы запоминались бы в смежных блоках на диске так, чтобы управление записями не вызывало бы беспокойства программиста. Фактическая работа по развитию OS-11 началась в конце 1972 года. Группа из 5 системных программистов и одного сос- тавителя документации была набрана для отбора проектов для OS-11 и создания программного обеспечения и описания. В основу работы над OS-11 была положена совместимость с OS/8 и TOPS-10. 1 версия OS-11 включала однозадачный монитор и набор инструментальных средств для разработки программного обеспечения: редактор текста EDIT, транс- лятор с языка MACRO-11, редактор связей в программах LINK, отладчик программ ODT, программу обмена с периферийными устройствами PIP и ее вариант для рабо- ты с кассетным магнитофоном PIPC, программу редактирования двоичных файлов PATCH. BASIC-11, первая дополнительная система программирования, требующая RT-11 в качестве базовой системы, также был частью версии 1. Однозадачный монитор преусматривал необходимый сервис для работы программ и устанавливал очередь ввода/вывода системы. ОС поддерживала работу с 7 устройствами: с кас- сетным диском RK, печатающим устройством LP, терминалом TT, кассетным магни- тофоном CT, фотосчитывателем с перфоленты PR (Papir Read), перфоратором PP (Papir Punch) и накопителем на магнитной ленте DT (DECTape). OS-11 сначала была названа RTPS-11 (Real-Time Programing System - систе- ма программирования реального времени). Версия RT-11 V1.0 была завершена в конце 1973 года и дополнена средствами для работы с графическим дисплеем GT-40 в конце 1974 года. Вскоре стало очевидным, что RT-11 удалась. В группу добавились еще сис- темные программисты и разработчики документации, и началось развитие следую- щей реализации. Версии 2, 2В, 2С внесли несколько новых значительных особен- ностей в ОС. Новый монситор позволял одновременно выполнять две задачи в основном и фоновом (Foreground/Background) режиме. Была добавлена поддержка новых периферийных устройств, включая накопители на магнитных лентах MM и MT, считыватель с перфокарт CR, диск-пакет DP, накопитель на гибком магнитном диске DX. Количество вспомогательных программ увеличилось для улучшения набо- ра средств разработки программ. Сюда были включены: программа сбора таблицы перекрестных ссылок CREF, программа для создания библиотек LIBR, программа распечатки содержимого носителей DUMP, программа преобразования форматов записи на носителях FILEX, программа сравнения текстовых файлов SRCCOM, прог- рамма выполнения заданий в пакетном режиме BATCH. Транслятор с языка FORTRAN- IV был реализован с версией 2, и ОС теперь включала библиотеку подпрограмм, названную SYSLIB. Версия 2 была закончена в конце 1974 года; версия 2С - в начале 1976 года. Версия 3 RT-11 была еще одной важной реализацией. Наиболее значительной была разработка монитора расширенной памяти, который представлял собой двух- задачный монитор с добавленными средствами управления расширенной памятью. Это позволяло работать с системами, имеющими 124К слов физической памяти (все - 30 - RT-11, A step by step Systems World 14-Nov-92 модели PDP-11, кроме PDP-11/04). Дополнительные системы программирования, такие, как FORTRAN-IV, MULTI-USER BASIC-2 (многопользовательский BASIC), использовали преимущества этих особенностей и могли теперь переносить их на прикладные программы. Были также включены средства поддержки многотерминаль- ных систем и системы протоколирования ошибок. Командный язык DCL (Digital Command Language - командный язык фирмы DEC) развивался таким образом, что почти все системные программы должны быть доступны командам монитора, прибли- женным к естественному английскому языку. Возможность формирования файлов из этих команд сделало пакетную обработку более удобной, чем в BATCH. Была добавлена поддержка для новых устройств фирмы DEC: DL, DM, DY, NL, PC (которое заменяет PR и PP). Были представлены еще системные программы. Функции программы PIP были разделены между программами PIP, DUP, DIR. Были включены программы форматирования дисков FORMAT и программа определения ресурсов системы RESORC. Пользователю была предоставлена возможность быстрого и простого изменения функций ОС, наиболее гибко приспосабливая ее к потреб- ностям пользователя. В прилагаемые пакеты программ был включен экранный редактор TECO. Версия 3 была окончена в конце 1977 года, а версия 3в - в начале 1978 года. Наиболее существенные (можно сказать революционные) изменения произошли при разработке RT-11 V4.0. Рабочую систему стало возможным переносить с одно- го типа устройств на другой путем простого копирования, за счет отделения файлов монитора от драйверов системных устройств. Именно поэтому изменилась структура имен мониторов, так как теперь монитор не зависел от системного устройства. При этом обеспечивалась большая гибкость в работе и экономия памяти как на носителях, так и в ОЗУ процессора. Количество одновременно запускаемых программ (задач) было увеличено до 8. В качестве одной из таких задач был предложен диспетчер очередей для фай- лов, выводимых на печатающее устройство (QUEMAN). Это повышало производитель- ность пользователя. Были предложены мощные средства сопровождения программ BINCOM, SIPP, SRCCOM, SLP, что позволило сделать создание и внесение изменений почти авто- матическим. Также был включен мощный экранный редактор KED и его версия для терминала VT52 - K52. Версия RT-11 V4.0 была завершена в начале 1980 года. Ничто не вечно в компьютерной промышленности. Новое аппаратное обеспече- ние и расширяющиеся потребности пользователей потребовали создать современное программное обеспечение. Версия 5 RT-11, изменявшаяся до весны 1983 года, включала поддержку для новых аппаратных средств, таких, как MSCP и Micro/PDP-11. Монитор расширенной памяти теперь поддерживал 22-разрядную адресацию памяти на центральных про- цессорах с магистралью Q-bus, что предоставляло пользователю адресное прост- ранство для программ до 4М байт. Новый драйвер виртуальной памяти позволял использовать расширенную память так же, как диск. LD-драйвер был добавлен для поддержки логического диска. Драйвер SL (Single Line editor - редактор одной строки) имел поддержку программой LET, что позволяло запоминать для любой символьной клавиши строку из 15 символов. Программа IND (INDirect command file processor - процессор косвенных командных файлов) и программа BUP, которая позволяла копировать содержимое большого диска на несколько маленьких с автоматическим формирова- нием каталога и наоборот, добавленный в дистрибутивный носитель, а также переписанный SYSGEN сделали установку и модификацию системы простой и удоб- ной. Добавленны новые DCL-команды и ключи, а также CCL (Concise Command Lan- guage - язык командных последовательностей) и UCL (User Command Linkage - связь с командами пользователя). В то же время минимальная система требовала для работы 16К слов оперативной памяти, оставаясь традиционно для RT-11 маленькой, быстрой, интерактивной и удобной для пользования. Версия 5.1 RT-11 своим появлением обязана серии персональных компьютеров Professinal-300. Кроме того, была обеспечена поддержка новых микропроцессоров T-11 и J-11, а также систем на их основе (SBC-11/21, PDP-11/23+, LSI-11/73). Новые периферийные устройства: нгмд RX50, жесткий диск "Винчестер" RD50/RD51 - 31 - RT-11, A step by step Systems World 14-Nov-92 для PRO-350 объемом 5/10М байт, жесткий диск "Винчестер" RA80 объемом 124М байта, сменные жесткие диски RC25 объемом 2*26М байт, новый магнитофон TSV05, который в 9-ти дорожечном стандарте может запоминать до 28М байт на одной ленте и "стриммер" TK25 с объемом кассеты 60М байт, так же получили програм- мую поддержку. Были включены средства для автоматической установки RT11AI-монитор и верификации системы IVP (Installation Verification Procedure). Отсутствие в PRO-300 символьного дисплея потребовало эмуляции его с помощью нового драйве- ра PI. Это позволило предлагать пользователю терминалы VT52, VT100 и др. по его желанию. А с помощью программы SETUP пользователь мог установить парамет- ры терминала от цвета символов и фона до набора символов его родного языка. Исполнение программ в расширенной памяти с помощью программы VBGEXE позволило использовать ресурсы системы до предела. Добавленные средства для построения локальных сетей VTCOM позволили пер- сональным компьютерам PRO-300 связываться с любыми системами как фирмы DEC, так и других производителей. Версия 5.1 была закончена в декабре 1983 года, Версия 5.1B завершена в январе-марте 1984 года. Новый виток усовершенствований включал уже в себя и персональные компью- теры. Версия 5.2 RT-11 была дополнена средствами для программирования графи- ческого дисплея, а жесткий диск "Винчестер" RD52 (для PRO-300) стал объемом 33М байта. Для всех систем PDP-11 добавились средства для построения быстрых локальных сетей EtherNet. Поддерживаемые системой устройства печати пополни- лись лазерным принтером LN03. Таким образом, в настоящее время RT-11 представляет собой мощную много- задачную, многотерминальную, однопользовательскую операционную систему. На базе RT-11, включая ее различные версии, в нашей стране и за рубежом были "разработаны" совместимые с ней операционные системы. Ниже приводится соот- ветствие различных версий RT-11 и других систем: DEC Венгрия СССР СССР СССР Румыния Польша RT-11 V2.0 FOBOS - ФОДОС-2В - - - RT-11 V3.0 FOBOS РАФОС - ОСДВК MINOS RT-60 RT-11 V4.0 - РАФОС-2 - ОСДВК MINOS RT-60 RT-11 V5.0 - - ФОДОС-II - - - RT-11 V5.1 - - ФОДОС-III - - - RT-11 V5.2 - - - - - - RT-11 V5.3 - - - - - - RT-11 V5.4 - - - - - - Все примеры, приводимые в книге, будут ориентированы на использование RT-11 V5.1B, но объяснения справедливы для всех перечисленных операционных систем. Любые отличия между версиями будут так или иначе оговариваться в каж- дом конкретном случае. Таблицы соответствия команд клавиатурного монитора и интерпретатора командной строки взяты из исходных текстов клавиатурного мони- тора версии RT-11 V5.1В, каталог дистрибутива, которой приведен в седьмой главе. В конце 1975 года Гарри Килдэл, организовавший в 1976 году фирму Digital Research, использовал принципы RT-11 и разработал операционную систему CP/M (Control Program for Microprocessor), которая во многих случаях, с точки зре- ния пользователя, не отличается от RT-11. Строго говоря, она не является опе- рационной системой в полном смысле этого слова. Более точно - это управляющая программа, как отражено в ее названии. Заслуга Г.Килдэла в том, что он приб- лизил компьютеры к миллионам рядовых пользователей. Компьютер PDP-11/40 в то время стоил 13500 долл., что было достаточно дорого, а систему, которую пред- лагал Г.Килдэл на базе микропроцессора Intel-8080 можно было купить за нес- колько сот долларов. Чисто конструктивные изменения были в следующем. - Функции клавиатурного монитора были сокращены до минимума - он должен - 32 - RT-11, A step by step Systems World 14-Nov-92 найти в каталоге программу с указанным именем и запустить ее на выполнение. В эту же секцию вошел CSI (говоря терминами RT-11). В результате получился CCP (Console Command Processor). - Количество поддерживаемых устройств было сведено до минимума - гибкий диск 8" (а в последствии и 5,25"), консоль, принтер. Драйверы и USR были объединены в одну секцию, что резко сократило ее объем. В результате получил- ся BIOS (Basic Input/Output System). - Функции RMON были также сокращены и упрощен способ обращения к ним, и он был преобразован в BDOS (Basic Disk Operating System). Все это позволило уложить эти три секции только в две дорожки 8" диска. Остальная часть (75 дорожек) могла быть использована для каталога и данных пользователя. По сравнению с RT-11 CP/M занимает места на диске всего в два раза больше, чем загрузчик монитора в RT-11, и лежит, по существу, на его месте. Наличие в CP/M отдельных программ для каждой выполняемой команды внесло путаницу в комплекс понятий "Команда Монитора и вызываемая ею программа". Примерно в то же время фирма Intel разработала свою операционную систему ISIS-II для систем проектирования микропроцессоров и микроконтроллеров INTE- LECT, основанную на тех же принципах. Фирма MicroSoft, которая долгое время писала прикладное и системное программное обеспечение по заказу Digital Researc для CP/M, адаптировала ее для других микропроцессоров, назвав свой вариант, выпущенный на рынок в августе 1984 года для персональных ЭВМ IBM PC, - MS-DOS. Кроме того, необходимо отметить, что фирмой Software & Hardware System (США) была сделана попытка разработать многопользовательский вариант RT-11, которая получила название TSX (в СССР ей соответствует TS-монитор из РАФОС-2). 1.6. Указ становится законом, или Полное определение системы Теперь мы можем определить то, что в данной книге будет называться "СИС- ТЕМОЙ". Система - это организованная совокупность набора аппаратуры (аппарат- ная часть системы - Hardware), набора программ (операционная система - Soft- ware) и правил обмена информацией в системе (Interface), предназначенная для удовлетворения нужд пользователя. Литература: Предлагаемая литература должна помочь читателю не только разобраться в данной главе, но и подготовить к чтению следующих глав. Следует понимать, что в работе системного программиста книги по программированию и вычислительной технике занимают не первое место, хотя и не последнее. 1. Варга Б., Димень Ю., Лопариц Э. Язык, Музыка, Математика. Пер. с венгерского Ю.А.Данилова. М., Мир, 1981. - 33 - RT-11, A step by step Systems World 14-Nov-92 Эта книга не имеет никакого отношения ни к программированию, ни к вычис- лительной технике, ни к операционным системам. Даже к содержанию этой главы она имеет весьма косвенное отношение. Главное, для чего ее предлагается про- читать именно сейчас, - это сформировать у читателя умение находить и желание искать аналогии в окружающем нас мире. Без этого умения дальнейшая работа в системе будет неэффективной и не продвинется дальше любительства. 2. Рафаэл Б. Думающий компьютер. Пер. с английского В.П.Стефанюка. М., Мир. 1979. Несмотря на то что Бертран Рафаэл является специалистом в области искусственного интеллекта, в предлагаемой книге должно привлечь внимание уди- вительно точное описание сущности ЭВМ и значение, которое Рафаэл придает пос- тановке задачи. В точной постановке задачи содержится более половины решения. 3. Колин А. Введение в операционные системы. Пер. с английского И.Х.Зусман. М., Мир, 1975. Достоинства этой книги очевидны: одна из самых тоненьких, с прекрасным юмором рассказывает об основных чертах операционных систем, не опираясь на какую-нибудь конкретную систему. Следует отметить, что эпиграфы к каждой гла- ве книги настолько точно формулируют идею, что глава является скорее иллюст- рацией к эпиграфу, чем самостоятельным носителем идеи. 4. Уорвик М. Введение в операционные системы. Основные понятия. В книге "Супервизоры и операционные системы" под ред. Дж.Каттла и П.Робинсона. М., Мир, 1972. Прекрасный взгляд на операционные системы, с точки зрения различных групп людей. Мартин Уорвик в начале задается вопросом - зачем нужна опера- ционная система? Пытаясь ответить на этот вопрос, он приходит к некоторым выводам - какими качествами должна обладать хорошая операционная система. - 34 - RT-11, A step by step Systems Languages 14-Nov-92 2. КАК МЫ ГОВОРИМ, или Язык общения с системой Если профессионал не настаивает на точности высказываний, является ли он подлинным профессионалом? . Дж. Фокс Муравей нашел вкусную травку, одному не дотащить и надо сообщить прияте- лям, но как? Муравей обозначает дорогу определенными запахами. Человек еще не произошел от обезьяны и, будучи в образе обезьяны, увидел для себя и для других себе подобных опасность. Как сообщить? Жестами рук, головы и движениями тела он предупреждает своих сородичей. Человек встал на ноги, одел пиджак и шляпу. В парадном костюме, с буке- том пришел на свидание с прекрасной особой противоположного пола. Он ее любит, она его любит. Как им передать это друг другу? Запахом цветов, жестами рук, головы и словами. Всегда, когда нужно передать информацию, используется язык общения. Это может быть язык запахов, язык жестов или слов. Не важно какой язык - главное, чтобы и источник информации, и приемник одинаковым образом обозначали ту идею, которую источник хочет передать приемнику. - Таким образом, Алеша,- сказал я, когда мы через несколько дней снова расположились в моей комнате,- сегодня я тебе расскажу, на каких языках мы с тобой будем общаться с системой. - А что,- удивился Алеша,- разве русского или английского языка нам не хватит? - Дело не столько в том, что русский или английский язык должен быть. Человек для каждого вида деятельности создал свой язык, и не один. Это удоб- ней и, если хочешь, экономичней. Например, когда твоя мама вяжет свитер, она пользуется особым языком, на котором описываются вязанные изделия в журнале мод. - А, я видел,- вспомнил Алеша,- это такие треугольники, крестики, кру- жочки и что-то еще. - Да, а музыканты создали свой язык для записи звуков. Поэтому и нам необходимо изучить хотя бы несколько языков системы, чтобы можно было рабо- тать. Поэтому приготовься сегодня внимательно слушать. Любой язык состоит из словаря, т.е. знаков, обозначающих некоторые идеи, и синтаксиса, т.е. правил составления из этих знаков выражений, которые являются правильными в данном языке. В области передачи данных язык общения часто называют протоколом обмена информацией или интерфейсом обмена. Для успешной работы важно выделить то, что является синтаксисом. Не так важно знать полный словарь языка, сколько знать точные определения синтаксических правил. Словарь языка может расширяться в зависимости от области применения. Если появляется какая-нибудь новая идея, для которой нет обозначения, мы при- думываем для нее новый знак. Например, слово РОБОТ было придумано для обозна- чения механического человека. Словарь во многом определяется областью приме- нений данного языка. Например, если человек говорит: "Этот вал люфтит", мы поймем, что перед нами механик, так как термин "люфт", "люфтит" был введен для обозначения небольшого зазора в движущихся механических конструкциях. Синтаксис языка определяется с помощью другого языка, который нам поня- тен. Знаками этого языка могут быть слова, схемы или что-нибудь другое. Нап- ример, словесное определение правила может быть таким: "В сложноподчиненном предложении причастный оборот выделяется запятыми". При этом нам должно быть - 35 - RT-11, A step by step Systems Languages 14-Nov-92 известно, что обозначают знаки "причастный оборот" и "запятая". В информатике и программировании для описания синтаксиса языков большое распространение получили примитивный метаязык, называемый "Нормальная Форма Бэкуса", и синтаксические диаграммы. Мы будем пользоваться обеими формами описания синтаксиса для большей наглядности. 2.0.1. Нормальная форма Бэкуса БНФ - Бэкуса Нормальная Форма, или Бэкуса-Науэра Форма,- является языком для описания (части) синтаксиса выражений других языков. Она была предложена примерно в 1959 году Дж.Бэкусом, одним из тринадцати членов комитета по Алголу-60, для описания синтаксиса этого языка. Сотрудник фирмы IBM Дж.Бэкус является с также одним из основных создателей языка ФОРТРАН. С этой формой также связывается имя П.Науэра (Копенгагенский университет) благодаря предло- женным им изменениям и интенсивному использованию БНФ в сообщении об Алголе-60, редактором которого он был. К идее такой формы независимо пришел ранее (в 1956 году) Н.Хомский, лингвист по специальности. БНФ и ее модифика- ции стали средством для описания синтаксиса языков программирования. Для ознакомления с БНФ рассмотрим несколько примеров ее использования. Например, определение термина ОПЕРАТОР может быть следующим: <ОПЕРАТОР>::= ПРОПУСТИТЬ|ОТКАЗАТЬ и читается оно так: "Элемент синтаксической категории, именуемый ОПЕРАТОР (именно это обозначают забавные скобки "<" и ">"), определяется как (это обозначает знак "::=") ПРОПУСТИТЬ или (это обозначает вертикальная черта "|") ОТКАЗАТЬ. Каждое определение БНФ записывается в одну строчку. Если определение не укладывается в одну строчку, оно записывается на следующей без каких-либо знаков переноса. Каждое выражение стоящее справа от знака "::=" и заключенное в скобки"<" и ">" можно далее определить более подробно. Например: <ОПЕРАТОР>::ПРОПУСТИТЬ|ОТКАЗАТЬ|<ОПЕРАТОР ПРИСВАИВАНИЯ> <ОПЕРАТОР ПРИСВАИВАНИЯ>::=<ПЕРЕМЕННАЯ>:=<ВЫРАЖЕНИЕ> причем последнюю строчку следует читать так: "Элемент синтаксической катего- рии, именуемый ОПЕРАТОР ПРИСВАИВАНИЯ, определяется как элемент синтаксической категории, именуемый ПЕРЕМЕННАЯ, за которым следует сначала знак присваивания ":=", а затем элемент синтаксической категории, именуемый ВЫРАЖЕНИЕ. Для построения потенциально сложных конструкций мы пользуемся схемой, которую рекурсивно можно описать так: <КОНСТРУКЦИЯ>::=<ПРОСТАЯ КОНСТРУКЦИЯ>| <ПРАВИЛЬНАЯ КОМПОЗИЦИЯ ЗАПИСЕЙ ВИДА:<КОНСТРУКЦИЯ>> Это так называемое "рекурсивное определение", поскольку одна из альтер- нативных форм для синтаксической единицы, именуемой КОНСТРУКЦИЯ (а именно - вторая форма), содержит в качестве одного из своих компонентов снова эту же синтаксическую единицу, которую мы определяем. Мы можем упростить нашу запись, если введем специальный символ повторе- ния "{" и "}". Например: - 36 - RT-11, A step by step Systems Languages 14-Nov-92 <СПИСОК ОПЕРАТОРОВ>::=<ОПЕРАТОР>{;<ОПЕРАТОР>} где фигурные скобки следует читать так: "сопровождается любым числом (быть может, нулем) экземпляров содержимого скобок. Подробно БНФ описана в книге: Девис Грис "Наука программирования" (При- ложение 1). М., Мир, 1984. Расширенная форма Бэкуса-Науэра описана в книге: К.Йенсен, Н.Вирт "Паскаль. Руководство для пользователя", М., "Финансы и Ста- тистика", 1989. 2.0.2. Синтаксические диаграммы Синтаксические диаграммы были введены автором языка Паскаль Никлаусом Виртом как средство, облегчающее анализ программ. В некоторых случаях синтак- сические диаграммы более наглядны, чем БНФ. Возможные пути, указанные в диаг- рамме, соответствуют допустимым последовательностям символов. Начиная с наз- вания диаграммы, путь приводит либо к другой диаграмме, если встречается пря- моугольник, либо к основному символу языка, если его название заключено на диаграмме в кружок. Ниже приведены синтаксические диаграммы для тех определений, которые мы записывали в БНФ. 1) ------------ ОПЕРАТОР--+-->( ПРОПУСТИТЬ )-----> ! ------------ ^ ! ! ! ------------ ! +-->( ОТКАЗАТЬ )--+ ------------ 2) ------------ ОПЕРАТОР--+-->( ПРОПУСТИТЬ )------> ! ------------ ^ ! ! ! ------------ ! +-->( ОТКАЗАТЬ )-->+ ! ------------ ! ! ! ! +------------+ ! ! ! ОПЕРАТОР ! ! +-->!ПРИСВАИВАНИЯ!---+ +------------+ 3) +------------+ -- +-----------+ ОПЕРАТОР------>! ПЕРЕМЕННАЯ !---->(:=)-->! ВЫРАЖЕНИЕ !---> ПРИСВАИВАНИЯ +------------+ -- +-----------+ - 37 - RT-11, A step by step Systems Languages 14-Nov-92 4) /"""""""""""""""""""""""""\ +----------+ / - +----------+ \ СПИСОК-------->! ОПЕРАТОР !----->(+)---! ОПЕРАТОР !--------> ОПЕРАТОРОВ +----------+ / - +----------+ \ \......................./ 2.1. Вавилонское столпотворение, или Языки команд операционной системы RT-11 Как было сказано выше, на любом этапе обмена информацией используется некоторый язык. В операционной системе информация существует в различных фор- мах, и обмен происходит между различными устройствами и программами. Отсюда вытекает, что каждая программа может иметь свой язык обмена информацией. Нас будут интересовать на данном этапе языки обмена информацией между пользовате- лем и программами операционной системы RT-11, или командные языки системы. Но сначала познакомимся с их элементами. 2.1.1. Алфавит Алфавит командных языков состоит из тех символов, которые мы можем ввес- ти с терминала. Эти символы передаются в программу, обслуживающую терминал, в специальном коде для обмена информацией, утвержденном Международной Организа- цией по Стандартизации (ISO). Кроме того, получили распространение американс- кий вариант этого кода ASCII и русский вариант - КОИ-7. Определение этих кодов в БНФ дано в приложении. Названия управляющих и специальных литер дано в их английском написании, утвержденном ISO. Разница между американским и русским вариантом в том, что в качестве символов нижнего регистра используют- ся прописные буквы русского алфавита в коде КОИ-7 вместо строчных букв латинского алфавита в коде ASCII. Так как RT-11 создавалась фирмой DEC, то в ней используется код ASCII. Советские терминалы используют код КОИ-7. Это обстоятельство надо учитывать при работе с оригинальными версиями RT-11 на отечественных терминалах. В дальнейшем мы будем называть этот код ASCII, в необходимых случаях считая, что пользуемся кодом КОИ-7. Кроме того, в программах будет использоваться код RADIX-50, который является подмножеством кода ASCII и определяется следующим образом: <СИМВОЛЫ В КОДЕ RADIX-50>::= ::=SPACE|<ЛАТ>|DOLLARS|PERIOD|<ЦИФРА> История управляющих литер начинается с эпохи телеграфа, когда необходимо - 38 - RT-11, A step by step Systems Languages 14-Nov-92 было не только передать текст телеграммы, но и управлять телеграфным аппара- том (а затем и телетайпом) у получателя. Необходимо было в отсутствие опера- тора у аппарата получателя включить аппарат, передать текст и выключить аппа- рат. Примерно такие же функции несут управляющие литеры в вычислительной тех- нике и сегодня. Это литеры управления кареткой <ВК> или - возврат каретки; <ПС> или - перевод строки; <ПФ> или - перевод формата (переход на следующую страницу); и литеры, управляющие расположением текста: <ГТ> - горизонтальная табуляция; <ВТ> - вертикальная табуляция. - А в пишущих машинках,- сопоставил Алеша,- это рычаг возврата каретки, ручка перевода опорного валика, клавиша горизонтальной табуляции. Часть управляющих литер используется в операционной системе для управле- ния ее работой, то есть их применение в данном случае отличается от функций этих литер, определенных в стандарте ASCII. Назовем эти символы служебными, если мы вводим их с клавиатуры; если эти символы встречаются в файле, то они являются управляющими для того устройства, на которое файл выводится. Для ввода служебных и управляющих символов с клавиатуры обычно нужно нажать одновременно две клавиши: одна из них - клавиша обычного печатного символа на верхнем регистре, а вторая - специальная, называемая . Эта клавиша на советских терминалах обычно обозначается <СУ> или <УПР>, а на иностранных - . В тексте мы будем обозначать управляющие символы так: CTRL/C - это одновременное нажатие клавиши и "C" - большое латинское. Несколько служебных символов пригодятся нам уже в следующей главе, и мы определим их сейчас, остальные будем определять по мере необходимости. CTRL/C - при вводе этого символа система прекращает работу программы пользова- теля и загружает клавиатурный монитор, который готов после этого при- нимать команды оператора. Некоторые программы требуют ввода CTRL/C дважды. Этим символом можно пользоваться для прекращения выполнения работы программы, если ее необходимо прервать посередине работы; CTRL/S - от слова STOP - позволяет приостановить вывод информации на терминал, если оператор не успевает следить за информацией. При этом информация не исчезает и не портится, а работа программы, осуществляющей вывод на терминал, приостанавливается; CTRL/Q - в противоположность предыдущему CTRL/Q (QUEUE - очередь, очередной) позволяет продолжить приостановенный вывод с места остановки; CTRL/O - от слов OFF/ON - выключить/включить. В отличие от CTRL/S и CTRL/Q работа программы не останавливается, но запрещается вывод на терминал до следующего ввода CTRL/O. Выводимая информация при этом теряется. На терминалах 15ИЭ-00-013 этому символу соответствует клавиша <ЛАТ>, поэ- тому пользоваться ей следует осторожно. Этот символ в основном приме- няется, когда нужно пропустить большие куски информации, которые прог- рамма выводит на терминал. Подробное описание кодов дается в приложении. Следует только заметить, что символы управления являются "непечатными", так как соответствующих им знаков на экране дисплея или на печатающем устройстве нет. - 39 - RT-11, A step by step Systems Languages 14-Nov-92 2.1.2. С какой стороны посмотреть, или Представление чисел Мы будем часто пользоваться понятием "представление числа в некоторой системе счисления", поэтому нужно поговорить об этом подробнее. Если мы говорим, что в некоторой ячейке памяти записано число 123, это еще не значит, что кто-то записал его там, например, карандашом. Мы просто договорились, что комбинация состояний запоминающей среды (например, направ- ление намагниченности магнитных частичек на дискете) для этой ячейки пони- мается нами как число 123. В качестве запоминающей среды могут служить счет- ные палочки из первого класса. Если палочка стоит на подставке - это одно состояние, если лежит - это другое. При этом мы также договорились, что если записали этот код в символьном виде без точки, то это число считается в восьмеричной системе счисления. Если мы захотим представить это в десятичной системе счисления, то после записи числа будем ставить точку. Это понимает большинство программ в RT-11. Нам никто не мешает представить число в двоичной системе счисления, но при этом только увеличится число цифр и они могут быть только двух видов "0" и "1". Такая цифра называется БИТ. Для примера мы покажем различные представления одного и того же числа: 83. - десятичное 123 - восьмеричное 01010011 - двоичное, при этом правый крайний разряд считается самым младшим. Для упрощения перевода из двоичной системы счисления в восьмеричную, мы будем записывать двоичные числа, разделяя точкой по три разряда. Например так: 01.010.011 Так как все числа имеют какую-то максимальную длину, то и мы определим максимальную длину двоичного числа, которое у нас будет применяться, - его длина 16 двоичных разрядов (бит). Такую запись в 16 разрядов мы назовем сло- вом. Мы будем также пользоваться половинкой слова, состоящей из восьми бит - байтом, определение которого мы уже давали. Максимальное число, которое мы можем изобразить комбинацией из 16 эле- ментов, принимающих только два состояния, равно 65535.: 65535. - десятичное 177777 - восьмеричное 1.111.111.111.111.111 - двоичное, Для байта эти значения будут: - 40 - RT-11, A step by step Systems Languages 14-Nov-92 255. - десятичное 377 - восьмеричное 11.111.111 - двоичное, 2.1.3. Спецификация файла Как мы уже говорили, спецификация файла - это адрес, по которому файл можно найти. Так как система всегда обращается к файлу, используя его полную спецификацию, мы не будем разделять спецификацию файла на части, хотя эти части и будут определяться самостоятельно. Мы сразу определим полную форму принятой в RT-11 спецификации файла: <СПЕЦИФИКАЦИЯ ФАЙЛА>::= <ИМЯ УСТРОЙСТВА>::= <ИМЯ ФАЙЛА>::= <ТИП ФАЙЛА>::= ::=:. ::=|| ::=||| | | ::=|| Смысл этих длинных записей в том, что имя устройства и тип файла могут содержать от одного до трех символов, допустимых в коде RADIX-50, а имя файла - от одного до шести символов. При этом имя устройства и имя файла разделяют- ся двоеточием (:), а имя файла и тип файла разделяются точкой. Например: RK1:PROBA.MAC является спецификацией файла, который находится на устройстве "RK1", имеет имя "PROBA" и тип "MAC". Сказанное справедливо для ранних версий RT-11, но начиная с версии RT-11 V4.0 понятия имени устройства и типа файла, а как следствие и вся специфика- ция файла, было уточнено следующим образом: - ИМЯ УСТРОЙСТВА может содержать от одного до трех символов, допустимых в коде RADIX-50, после которых следует двоеточие(:). - ТИП ФАЙЛА состоит из точки, за которой могут следовать от нуля до трех символов, допустимых в коде RADIX-50. - ИМЯ ФАЙЛА может содержать от одного до шести символов, допустимых в коде RADIX-50, ни один из которых не является точкой. При этом точка и двоеточие являются не разделителями, а входят в состав син- - 41 - RT-11, A step by step Systems Languages 14-Nov-92 таксических единиц ТИП ФАЙЛА и ИМЯ УСТРОЙСТВА. Внешний вид спецификации при этом не изменился и правильно будет восприниматься в ранних версиях, но в БНФ это теперь будет выглядеть по-другому: ::= ::=:|:|: ::=.|.|.|. Это маленькое уточнение не противоречит форме спецификации файла преды- дущих версий, но дает большие преимущества при выполнении групповых операций с файлами. Примечание. Необходимо отметить, что если мы обращаемся к устройству нефайловой структуры, используя только имя устройства, то мы все равно гово- рим о полной спецификации файла. Конец примечания. 2.1.4. Групповая спецификация файла Довольно часто необходимо выполнить одну и ту же операцию над группой файлов, выбираемых по одному или нескольким признакам. И если сущность данной операции, ее логическая основа, позволяет это сделать, то операционная систе- ма оказывает при этом необходимую помощь. Поэтому вводится понятие групповой спецификации файлов. Первый же взгляд на определение групповой спецификации файла в БНФ при- водит в ужас - такое многообразие вариантов охватывает это понятие. Из этого следует, что никакие шпаргалки не помогут, если не вывести общих принципов групповой спецификации. Итак: каждый символ в имени или типе файла может быть заменен на знак процента "%". Это будет обозначать, что на данном месте в спецификации файла может стоять любой символ, допустимый в коде RADIX-50. Например, у нас имеются сле- дующие файлы на устройстве SRC: SUB.MAC SUB1.MAC SUB2.MAC SUB3.MAC SUB3.BAK SUB12.MAC SUB.DOC, и если мы напишем групповую спецификацию файла в следующем виде: SRC:SUB%.MAC, то указанная нами операция будет выполнена над файлами: SUB1.MAC SUB2.MAC SUB3.MAC, Файл SUB.MAC не попал в этот список, потому что его имя не имеет четвертого - 42 - RT-11, A step by step Systems Languages 14-Nov-92 символа, на который должен указывать знак "%". Файл SUB12.MAC не участвовал в операции, так как его имя состоит из пяти символов, а задано только четыре. Любую группу символов в имени или типе файла можно заменить знаком "*" (звездочка). Это означает, что на данном месте может находиться любое число любых символов, допустимых в коде RADIX-50, чтобы их общее число не превышало предельно допустимое, т.е для имени шесть, а для типа три. Например, если для выполнения некоторой операции мы напишем следующую спецификацию файла: SRC:SUB*.*C, то операция будет выполнена над всеми файлами, кроме файла с типом .BAK, так как у него последний символ типа отличен от "C". У нас хорошо получилась групповая операция с файлами, которые имеют одну общую часть спецификации. Но если мы имеем на устройстве две или три группы файлов и, кроме того, еще с десяток файлов, которые в операции не должны участвовать, и если ранние версии терпели крах перед этой задачей, то с помощью уточненной спецификации файла мы сможем решить ее. Главное, что доба- вила новая форма спецификации, - это то, что элементы спецификации стали перечислимыми и определяемыми своим видом, а не с помощью разделителей. Нап- ример, теперь мы можем дать следующую спецификацию файла: SRC:(PRO*,SUB%)(.MAC,.DOC) Таким образом, в одних скобках собраны две группы файлов, имеющие общие приз- наки по именам, в других собраны типы файлов, которые будут участвовать в операции. Скобки здесь выполняют ту же функцию, что и в алгебраических выра- жениях. Отсюда мы можем сказать, что в операции будут участвовать следующие файлы: - все файлы, имена которых начинаются с символов PRO и имеют при этом типы .MAC и .DOC. - все файлы, имена которых имеют по четыре символа, первые три из кото- рых SUB и имеющие при этом типы .MAC и .DOC. То, что имя устройства вынесено за скобки, указывает на то, что все файлы находятся на одном устройстве SRC:. И еще одно действие, совершенно недоступное ранним версиям RT-11: SRC:(SOURCE+SECOND).TXT Тут уже сам текст показывает, что операция, в которой будут участвовать файлы SOURCE.TXT и SECOND.TXT объединяет файлы - это можно указать знаком плюс между именами файлов. В приложении можно было бы привести точный синтаксис групповой специфи- кации, но громоздкость такой записи не позволяет ее быстро и точно запомнить. Определениями синтаксиса в БНФ нужно пользоватся в спорных случаях, когда что-то не получается. В остальном лучше пользоваться достаточно точными сло- весными определениями отдельных элементов и специальных символов и логикой построения списка файлов. - 43 - RT-11, A step by step Systems Languages 14-Nov-92 2.1.5. Умолчания в системе RT-11 Наш рассказ об элементах языков RT-11 был бы неполным, если бы мы умол- чали об умолчаниях в системе. Итак, общие правила умолчаний для спецификации файла: - имя устройства может не указываться, если имя, подразумеваемое систе- мой или выполняющейся программой, совпадает с тем, которое требовалось указать; - имя файла может не указываться, если имя, подразумеваемое системой или выполняющейся программой, совпадает с тем, которое требовалось ука- зать; - тип файла может не указываться, если тип, подразумеваемый системой или выполняющейся программой, совпадает с тем, который требовалось ука- зать. Так как мы не знаем еще ни одной программы, то не знаем и об устройст- вах, именах и типах файлов, которые подразумеваются программами. Но было бы логично, если бы системе всегда было бы известно хоть какое-нибудь устройст- во. И такое устройство есть - УСТРОЙСТВО, НАХОДЯЩЕЕСЯ В ИЗВЕСТНОМ ПОЛОЖЕНИИ, - Dedice Keep (DK:). Если устройство в спецификации не указано, то система будет обращаться к устройству DK:. Кроме удобств, не всегда очевидных, при этом возникают побочные эффекты - весь мусор от всех программ будет на этом устройстве. Есть еще одно устройство, всегда известное системе, - это устройство, с которого был загружен монитор ОС и на котором находятся системные программы. Это устройство имеет имя "SY:" и изменить его нельзя. Для надежной работы нежелательно использовать это устройство для своих рабочих программ, файлов и пр. 2.1.6. Логические и физические имена устройств В начале, собирая систему, мы говорили, что у каждого устройства в сис- теме есть имя, совпадающее с именем программы драйвера. Эти имена мы назовем физическими, потому что большинство из устройств, с которыми работают драйве- ры, можно пощупать руками. С другой стороны, мы только что познакомились с именами DK: и SY:. И оказалось, что каждое устройство может иметь физическое имя (например, DX0:) и несколько логических - SY:, DK:. Если физическое имя может быть только одно, то логических имен у устройства может быть несколько, и пользователь по своему желанию может назначать любому устройству любое логическое имя. При этом в системе должно быть только одно устройство с логи- ческим именем SY: (оно назначается системой) и только одно устройство с логи- ческим именем DK: (за этим система следит). Как правило, сразу после загрузки системы эти имена назначены одному устройству. Можно воспользоваться аналогией со школьным классом. Старосту класс выбирает на целый год, и, например, им будет Вася. Если Вася заболеет, он все равно остается старостой. Таким образом, он имеет два имени в классе - "Вася" - 44 - RT-11, A step by step Systems Languages 14-Nov-92 (физическое имя) и "староста" (логическое имя). В классе всегда есть дежур- ный. В разные дни дежурят разные ученики. Так, дежурным могут назначить и Колю, и Олю, и кого-нибудь другого. Чья подошла очередь и кто есть в этот день в школе - является дежурным и в то же время членом школьной редколлегии и вожатым у младших школьников. Таким образом, он также имеет одно физическое имя и несколько логических. О логических именах мы еще будем не раз говорить в дальнейшем и покажем, для чего они нужны и как ими удобно пользоваться. 2.2. Язык интерпретатора командной строки (CSI) Как уже говорилось, интерпретатор командной строки является частью прог- раммы USR. Его задачей является прием с терминала или из программы пользова- теля списка файлов, связывание этих файлов с программой пользователя и пере- дача ключей и параметров из командной строки в программу пользователя. Интерпретатор CSI сам не выполняет никаких операций ввода/вывода, но подго- тавливает ресурсы системы для работы с файлами программы пользователя. Именно поэтому CSI является частью программы USR, которая, как уже говорилось, зани- мается операциями ввода/вывода. Итак, элементами данного языка являются спецификации файлов, ключи, параметры и знаки разделителей. Самый естественный знак разделителя между элементами - запятая. Действительно, перечисляя какие-нибудь вещи, мы разде- ляем их названия запятой. Например: стол, стул, скамейка первый, второй, третий, четвертый. Таким же образом определим и список файлов. <СПИСОК ФАЙЛОВ>::= ::={,} Но файлы бывают входными, т.е. информация которых является исходной, и выход- ными, т.е. те, которые являются результатом работы программы. Чтобы отделить входные файлы от выходных, используется знак равенства. И тогда командная строка CSI может быть определена в БНФ следующим образом. - 45 - RT-11, A step by step Systems Languages 14-Nov-92 <КОМАНДНАЯ СТРОКА CSI>::= ::=<СПИСОК ВЫХОДНЫХ ФАЙЛОВ>{<КЛЮЧ>}= <СПИСОК ВХОДНЫХ ФАЙЛОВ>{<КЛЮЧ>} <СПИСОК ВЫХОДНЫХ ФАЙЛОВ>::= <СПИСОК ВХОДНЫХ ФАЙЛОВ>::= ::={<КЛЮЧ>}|{<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},{<КЛЮЧ>},{<КЛЮЧ>}| ,{<КЛЮЧ>}|,,{<КЛЮЧ>}|,{<КЛЮЧ>},| {<КЛЮЧ>},{<КЛЮЧ}>| ,{<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},,{<КЛЮЧ>} ::={<КЛЮЧ>}|{<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},{<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},{<КЛЮЧ>}, {<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},{<КЛЮЧ>},{<КЛЮЧ>}, {<КЛЮЧ>},{<КЛЮЧ>}| {<КЛЮЧ>},{<КЛЮЧ>},{<КЛЮЧ>}, {<КЛЮЧ>},{<КЛЮЧ>},{<КЛЮЧ>} Как видно из определения, интерпретатор командной строки обрабатывает информацию о шести входных файлах и трех выходных. Это означает, что CSI передает программе пользователя список из девяти спецификаций файлов (хотя с терминала может быть задано и меньше) и программа пользователя должна исполь- зовать первые три спецификации файлов как выходные, т.е. как результат дейст- вия, и следующие шесть как входные, т.е. для чтения. Если программа пользова- теля будет использовать спецификации файлов каким-либо другим образом, то это будет нарушением правил данного языка. Порядок записи спецификаций конкретных файлов в командной строке CSI определяется конкретной программой, которая будет обрабатывать эти файлы. Если какой-нибудь выходной файл не нужен, то в командной строке CSI спецификация данного файла (по порядку) должна быть про- пущена. Это накладывает ограничение на количество спецификаций файла в командной строке, но не всегда ограничивает количество обрабатываемых файлов. Каждая спецификация может быть групповой в той или иной форме. Как видно из определения, после каждой спецификации файла может следо- вать "ключ". Ключ уточняет, какую функцию из того набора функций, которые имеются в программе, необходимо выполнить. Примечание. Слово OPTION, которое используется в оригинальной документа- ции, дословно означает "право выбора". Пользователю предоставляется возмож- ность выбрать некоторую функцию из набора, определенного в программе. Мы будем вместо него использовать слово КЛЮЧ, так как в этом переводе оно уже распространилось в отечественной литературе. Конец примечания. В качестве дополнительной информации ключ может иметь численное значение или символьный аргумент (параметр). Если у ключа несколько аргументов, то они разделяются двоеточием. Определение ключа в БНФ довольно простое: <КЛЮЧ>::=