Научно-технический кооператив "Спрайт" г. Новосибирск 1992 ОПЕРАЦИОННАЯ СИСТЕМА "С П Р А Й Т" (версия 1.3) РУКОВОДСТВО ПРОГРАММИСТА I. ОБЩИЕ СВЕДЕНИЯ В данном документе приводятся сведения об общих принци- пах устройства и функционирования ОС "Спрайт", описываются ключевые понятия и термины, используемые в дальнейшем при более детальном описании отдельных компонент системы. СОДЕРЖАНИЕ 1. СТРУКТУРА И СОСТАВ СИСТЕМЫ 1.1. Ядро системы 1.2. Командный режим 1.3. Программное наполнение 2. ОСНОВНЫЕ ПОНЯТИЯ И СТРУКТУРЫ ДАННЫХ 2.1. Устройства 2.1.1. Типы устройств 2.1.2. Представление устройств 2.1.3. Физические и логические устройства 2.2. Носители данных 2.3. Файлы 2.3.1. Типы и иерархия файлов 2.3.2. Имена файлов, пути доступа, расширения и шаблоны 2.3.3. Атрибуты файлов 2.3.4. Модель файлов 2.4. Дисциплина обработки файлов 2.4.1. Доступ и мультидоступ к файлам 2.4.2. Активное и пассивное состояние устройств 2.4.3. Текущее устройство и текущий каталог 3. КЛАВИАТУРНЫЙ ИНТЕРФЕЙС 3.1. Как освоить клавиатуру 3.2. Программируемые возможности клавиатуры 3.3. Регистры клавиатуры 3.4. Редактирование строки при вводе 3.5. Справочник по регистрам клавиатуры Приложение. ИНДЕКС ТЕРМИНОВ, ИСПОЛЬЗУЕМЫХ В ДОКУМЕНТАЦИИ 1. СТРУКТУРА И СОСТАВ СИСТЕМЫ ОС "Спрайт" является автономной универсальной расширяе- мой операционной системой, образующей фундамент замкнутой программной среды, динамически настраиваемой пользователем с учетом своих профессиональных и индивидуальных потребнос- тей. В системе выделены три уровня программной поддержки: яд- ро, командный режим и программное наполнение. 1.1. Ядро системы Ядро системы образуют модули нижнего уровня, обеспечива- щие унифицированный доступ программ к внешним устройствам ПЭВМ: - ДОС - резидентная файловая подсистема со сменными драй- верами устройств внешней памяти, организующая хранение данных во внешней памяти в виде файлов и поддерживающая их обработку; - IОSUB - резидентная подсистема ввода-вывода со стандарт- ными драйверами клавиатуры и экрана, поддерживающая по- токовый символьный обмен с устройствами ввода-вывода; сюда же включен набор подпрограмм управления банками оперативной памяти и прерываниями; - ГРАФПАК - нерезидентный графический пакет, содержащий комплект графических примитивов для построения изобра- жений в графических режимах ПЭВМ; - МАТПАК - нерезидентный математический пакет, содержащий комплект арифметических операций и математических функ- ций с целыми и вещественными числами. В данной версии модули ГРАФПАК и МАТПАК не реализованы. Модули ядра имеют фиксированный внешний интерфейс (набор вызовов), облегчающий обращение к ним из программ. Ядро системы располагается в специальном загрузочном мо- дуле на внешнем носителе. 1.2. Командный режим Диалоговый командный режим ОС "Спрайт" реализуется нере- зидентным модулем КОМАНДЕР, обеспечивающим языковую под- держку внешнего пользователя и прикладных программ. Приня- тые в системе спецификации доступа к файлам, каталогам и устройствам, а также директив, их параметров и режимов ра- бот образуют входной язык системы, который рекомендован для поддержки всеми прикладными программами, предоставляющими аналогичные средства. Для внешнего пользователя Командер реализует диалоговый режим, являющийся командной оболочкой ОС и аналогичный по функциям (запуск программ, простейшая обработка каталогов файлов) командным режимам других ОС для микро-ЭВМ. Для прикладной программы Командер предоставляет фиксиро- ванный набор вызовов, реализующих средства разбора элемен- тов входного языка системы и макрофункции, соответствующие директивам командного режима. Командный режим располагается в обычном файле с особым именем и запускается автоматически при загрузке системы. 1.3. Программное наполнение Программное наполнение системы образуют системные и при- кладные программы, хранящиеся в библиотеках файлов на внеш- них носителях на общих основаниях и вызываемые на исполне- ние или в качестве данных из командного режима или с помо- щью специальных средств. Единообразие представления в виде файлов облегчает доступ к ним и обработку, в т.ч. копирова- ние и упорядочение в библиотеках. Программное наполнение является наращиваемой функцио- нальной оболочкой ОС, динамически формируемой по усмотрению пользователя. 2. ОСНОВНЫЕ ПОНЯТИЯ И СТРУКТУРЫ ДАННЫХ 2.1. Устройства 2.1.1. Типы устройств Внешняя среда пользователя или программы представляется в ОС "Спрайт" в виде набора устройств различных типов. Об- щение с нею реализуется путем приема/передачи данных опре- деленного вида этим устройствам. Два стандартных типа устройств, поддерживаемых системой, это: - устройства ввода-вывода, поддерживающие одно- или дву- направленный обмен в виде потоков символов; примеры: "телетайпный режим" монитора, клавиатура, принтер, файл в режиме последовательного чтения/записи, сеть и др.; - устройства внешней памяти, позволяющие хранить данные в виде иерархических библиотек файлов с доступом по пос- ледовательности ассоциативных ссылок (цепочки имен файлов, или пути) и двусторонним дискретным блочным обменом (чтение/запись); примеры: дисководы, в. т.ч. "винчестеры", и их эмуляторы: "электронные диски" в памяти или файле, файловые станции в распределенных сетях и др. 2.1.2. Представление устройств Устройство ОС "Спрайт" представляется своим драйвером: любая эмулирующая программа, удовлетворяющая стандартным входным спецификациям драйвера может быть интегрирована в систему как новое устройство. В стандартное ядро системы входят: из устройств ввода-вывода: клавиатура и экран; из устройств внешней памяти: дисководы типа MFM и Shugаrt. Допускается наличие нескольких устройств с одним драйвером. Для обозначения устройств при указании доступа исполь- зуются имена устройств, которые даются им при конфигурации системы во время ее загрузки и могут быть переопределены пользователем в течение сеанса работы. 2.1.3. Физические и логические устройства Устройства в системе имеют двойную нумрацию: физическую и логическую. Физическая нумерация устройств устанавливается при кон- фигурации системы и задает некоторое перечисление всех "реальных", или "физических", устройств. В дальнейшем она не меняется. Логическая нумерация устройств тоже устанавливается при конфигурации и задает перечисление "виртуальных", или "ло- гических" устройств, т.е. существующих с точки зрения сис- темы. Например, для каждого одиночного (на разъеме) диско- вода создается пара логических устройств: при копировании файлов с диска на диск одним дисководом для обозначения оригинала и дубликата можно (и необходимо) указать разные имена логических устройств. Как видно из примера, несколь- ко логических устройств может быть ассоциировано с одним физическим. Порядок ассоциации является динамическим и может быть изненен пользователем в любой момент удобным образом. На- пример, это может быть удобным для придания конфигурацион- ной независимости программам. В основном, в системе (и далее при описании) использу- ется логическая структура устройств. Существуют пределы для количества логических и физичес- ких устройств, определяемые исполнением системы. В данном исполнении эти числа равны 8. 2.2. Носители данных Для устройств внешней памяти введено понятие носителя - как физической среды, в которой хранятся данные (например, диски). Устройства могут допускать смену носителей в про- цессе работы. Во избежание порчи данных система котролиру- ет смену носителей, для чего им при разметке должны да- ватья уникальные идентификаторы (номера). Существуют также ограничения допустимости смены носителя в некоторые момен- ты времени и правила указания системе о смене. С носителем связаны два уровня разметки - физическая и разметка тома данных. Физическая разметка связана с обеспечением возможности работы с диском, как совокупностью блоков фиксированного размера. Вид ее зависит от физического устройства и драй- вера. В ОС "Спрайт" принята трек-секторная схема разметки для устройства любого типа, однако знание это существенно только для работы с рядом утилит. Логическая разметка, или разметка тома данных, опирает- ся на модель носителя, как массива произвольной длины из блоков по 256 байтов с произвольным доступом к блоку по его абсолютному номеру; она связана с занесением на такой носитель служебной информации, необходимой для организации библиотеки файлов. Единообразие логической модели носителя и структуры тома данных в системе позволяет свободно пере- мещать информацию с одного носителя на другой независимо от их физической сущности. 2.3. Файлы Информация хранится в томе данных в виде файлов, орга- низованные в иерархические каталоги. ОС "Спрайт" поддержи- вает для всех файлов унифицированную форму представления, не зависящую от содержания, и операции прямого доступа: открытие и закрытие доступа, чтение и запись непрерывного фрагмента произвольной длины с произвольной позиции. 2.3.1. Типы и иерархия файлов ОС различает по способу обработки только два типа фай- лов: файлы данных и файлы-каталоги. В файлах данных содержатся программы, тексты, двоичные данные и прочая информация, назначение, смысл и собствен- ный формат которой определяются прикладными программами, порождающими и использующими эти файлы. В файлах-каталогах (ФК или директориях) содержится сис- темная и пользовательская информация о ряде других файлов, среди которых могут быть и каталоги. Любой файл записан в одном и только одном каталоге. Таким образом, файлы на но- сителе могут быть организованы в древовидную иерархию, удобную, например, для тематического упорядочения информа- ции. Вершина иерархии каталогов на носителе называется кор- невым каталогом; каталоги, вложенные в некоторый каталог, называются его подкаталогами, каталоги, в которые вложен он сам - надкаталогами, а ближайший из надкаталогов - от- чим надкаталогом. 2.3.2. Имена файлов, пути доступа, расширения и шаблоны Файлы имеют имена, уникальные в пределах своего непо- средственного каталога и служащие для указания доступа к ним из этого каталога. Для доступа к файлу задается путь доступа: цепочка имен всех его надкаталогов в порядке по- гружения, заканчивающаяся его собственным именем. Полный путь (префикс) начинается от корневого каталога, который имени не имеет. Сокращенный путь начинается от некоторого ранее фиксированного каталога (например, текущего) и со- держит только имена вложенных в него каталогов. В начале пути доступа может быть указано имя устройства, на котором расположен носитель с нужным томом данных. Имена файлов могут иметь расширения, указывающие на их принадлежность той или иной системе программирования или тот или иной внутренний формат. С точки зрения системы, расширение является частью имени файла и никак специально не обрабатывается. Устанавливают и распознают расширения те программы, для которых они предназначены. При спецификации имен файлов, подлежащих обработке, ряд программ допускает групповые спецификаторы, или шаблоны. Шаблон задает группу файлов, имена которых могут быть по- лучены подстановкой некоторой цепочки символов вместо т.н. символов умолчания в шаблоне. Иногда шаблон может задавать только один, первый файл с именем, подходящим под шаблон. 2.3.3. Атрибуты файлов Файлы имеют атрибуты, определяющие способы поиска их в каталоге и доступа к ним; атрибуты имеют логическое значе- ние, например, "включен/выключен", "да/нет": - атрибут P защиты файла запрещает или разрешает измене- ние или уничтожение файла (а для каталога - всех со- держащихся в нем файлов); - атрибут D типа файла определяет файл данных или каталог; - атрибут B файла-копии позволяет отметить, что данный файл является копией другого файла; - атрибут Н скрытого файла определяет показ или сокрытие файла при выдаче каталога; - атрибут S системного файла определяет принадлежность файла к числу системных модулей; - атрибут Т завершения исполнения командных файлов, уста- навливаемый на программные файлы, позволяет прекращать в момент их запуска исполнение вызвавших их командных файлов; - резервные атрибуты файла позволяют пользователю зада- вать дополнительные способы поиска. При поиске файла в каталоге можно накладывать ограниче- ния на значения атрибутов: файлы, не удовлетворяющие огра- ничениям, находиться не будут. Это можно использовать для сокрытия в каталоге "мусорных" файлов или быстрого нахож- дения файлов с нужными атрибутами. 2.3.4. Модель файлов Файл рассматривается системой как последовательность записей фиксированного размера. Длина файла (максимальная доступная позиция) ограничена 256 * 2^16 байтами (размер блока * мах.номер блока). Эта же величина - 16 Мбайт - оп- ределяет и максимальную емкость носителя. Более емкие но- сители (например, "винчестеры") следует делить на тома. Ограничений, связанных с объемом памяти, формально нет: файл может быть "дырявым", память под нужные записи выде- ляется по мере надобности. Размер каталога ограничен 256-ю записями файлов. Возможны следующие способы обработки пустот в файлах: - заполнять их нулями при записи в файл и при чтении - в памяти; - игнорировать пустоты (из незаписанных мест будет чи- таться мусор); - останавливаться по чтению пустот (работает с точностью до блоков). Метод доступа к файлам - последовательно-прямой: можно задать позицию начала обмена в байтах или записях и прочи- тать/записать последовательность байтов или записей. Возможен контроль невыхода за пределы ранее заданной верхней границы памяти. 2.4. Дисциплина обработки файлов 2.4.1. Доступ и мультидоступ к файлам Все файлы и каталоги во время их обработки считаются открытыми (на доступ). Для каждого открытого файла счита- ются открытыми и все его надкаталоги. Запрещены некоторые виды обработки открытого файла, та- кие как: изменение его атрибутов, уничтожение, переимено- вание. Запрещены запись и те же виды модификации для фай- лов с установленным атрибутом защиты. ДОС допускает многоразовое открытие файла и одновремен- ную асинхронную его обработку несколькими пользователями, программами или частями одной программы - мультидоступ. Во избежание конфликтов при одновременной записи в файл или потери достоверности при чтении из обновляемого файла на мультидоступ наложены следующие ограничения: - файл открывается с указанием права записи в него; - запрещено открытие на запись открытого файла; - запрещено повторное открытие файла, открытого на запись. Эти правила, однако, обходятся для подкаталогов: изме- нения в нем, связанные с модификацией информации о файлах, производятся системой централизованно, поэтому опасности дезынтеграции данных нет. Поэтому каталог всегда открыва- ется на мультичтение, а изменения в нем записью не счита- ются. Таким образом, несколько пользователей могут рабо- тать с каталогом одновременно, не теряя полноты возможнос- тей. 2.4.2. Активное и пассивное состояние устройств Аналогом открытого файла является активное устройство. Устройство считается активным, если в данный момент от- крыт доступ хотя бы к одному файлу (каталогу) на нем. В частности, всегда активно устройство, на котором открыт текущий каталог (см. ниже). На активном устройстве ведется системный контроль за сменой носителя. Активное устройство нельзя переассоцииро- вать с другим физическим - до закрытия на нем всех файлов и перехода в пассивное состояние. 2.4.3. Текущее устройство и текущий каталог Текущим является единственное устройство, для обращения к которому можно не указывать явно его имя (номер). Теку- щее устройство назначено всегда: в начале работы системы это то устройство, с которого проведена загрузка, в про- цессе работы пользователь может переназначать его. На каждом (не только текущем) устройстве можно назна- чить его собственный текущий каталог, для доступа к кото- рому необязательно использовать его префикс: достаточно указания устройства (а для текущего устройства можно ниче- го не указывать вообще). Текущий каталог устройства всегда открыт и позволяет, таким образом, держать устройство активным. Текущий ката- лог может быть сброшен: в этом случае, при отсутствии дру- гих открытых файлов, устройство становится пассивным. Об- ращение к текущему каталогу пассивного устройства означает доступ к его корневому каталогу. Использование текущего каталога придает программе неза- висимость от каталога, файлы из которого она обрабатывает.