Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Внешние устройства и файловая система на дисках
Все внешние устройства в ОС РВ имеют двухсимвольное имя и восьмеричный однобайтовый номер. Если номер не указывается, подразумевается номер 0. Имя и номер устройства не отделяются друг от друга, за последним символом следует двоеточие. Наиболее распространенными являются следующие имена устройств: · DK: - кассетные магнитные диски емкостью около 2,5 Мб; · DM: - кассетные магнитные диски емкостью 14 Мб; · DP: - пакетные магнитные диски емкостью 29 Мб; · MT: - магнитные ленты; · LP: - печатающие устройства; · TT: - терминалы; · TI: - псевдоустройство - терминал данного пользователя. Для каждого пользователя система при обращении к устройству TI: переадресует ввод-вывод на соответствующий реальный терминал; · NL: - пустое псевдоустройство, всегда успешно выполняющее операцию записи на него и выдающее признак "Конец файла" при попытке чтения (аналог устройства NUL в MS DOS). На дисках ОС РВ создаются каталоги, которые нумеруются, как и UIC - двумя однобайтовыми восьмеричными цифрами. Иерархии каталогов не существует (она впервые появилась, вероятно, в UNIX). На диске всегда присутствует каталог [0, 0], в котором находятся файлы-каталоги с именами гггччч.DIR (ггг - три цифры группы, ччч - три цифры члена в группе) и другие файлы, описывающие файловую структуру данного диска. На диске, содержащей операционную систему, присутствуют каталоги [1, 1], [1, 2] и [1, 50] или [1, 54]. Первый содержит системные библиотеки, второй - некоторые командные файлы (например, командный файл, выполняемый при загрузке ОС РВ, при регистрации пользователя в системе и при завершении работы пользователя). Третий каталог содержит файлы ядра системы и различных задач. В системе без ДП номер этого каталога [1, 50], в системе с ДП - [1, 54]. Спецификация файла состоит из имени, типа (расширения) и номера версии и имеет следующий формат: Имя.тип;версия Имя каждого файла состоит из нескольких символов (от одного до девяти), входящих в код RADIX-50. К этим символам относятся большие латинские буквы, цифры и знак доллара (в RADIX-50 входят еще точка и пробел, но они в именах файлов использоваться не могут). Тип содержит до трех символов в коде RADIX-50. Версия является однобайтовым восьмеричным числом, нумерация версий начинается с единицы. При создании файла с именем и типом, совпадающим с уже существующим файлом, создаваемый файл будет иметь версию, на единицу большую, чем версия существующего файла. Этот механизм весьма удобен для сохранения копий файлов. Наиболее распространены следующие типы файлов: · .TSK - файл образа задачи (загрузочный модуль задачи); · .OBJ - объектный модуль; · .MAC - исходный текст программы на макроассемблере; · .OLB - библиотека объектных модулей; · .MLB - библиотека макроопределений; · .CMD - косвенный командный файл. Полная спецификация файла включает в себя спецификацию устройства, каталога и файла, например DM2:[1,54]PIP.TSK;1 Таким образом, выше были в самых общих чертах рассмотрены основные особенности системы ОС РВ. Подробную информацию можно получить из документации, поставляемой вместе с системой. В настоящее время в электронном варианте имеется несколько книг, созданных на основе "фирменных" руководств, а именно: · описание команд MCR и языка косвенных командных файлов; · описание текстового редактора EDT; · руководство системного программиста по разработке драйверов внешних устройств; · описание утилиты управления магнитной лентой MAG. Наконец, ОС РВ предоставляет уникальную возможность во всех подробностях разобраться с ее функционированием: анализ исходных текстов системы. Конечно, эта работа весьма сложная и кропотливая, но не сложнее, чем попытка разобраться в Linux (ясность программ на ассемблере СМ ЭВМ, пожалуй, не меньше, чем ясность модулей Linux на Си, особенно когда разработчики последней жертвовали ясностью в пользу эффективности). Кроме того, у разработчиков ОС РВ есть чему поучиться, ведь хотя эта система создавалась много лет назад, требования к базовым функциям ОС с того времени практически не изменились.
Лекция 15 Управление прерываниями. План лекции: 1. Вектора прерываний 2. Программирование контроллера прерываний 8259. 3. Запрет/разрешение отдельных аппаратных прерываний
Вектора прерываний
Прерывания - это готовые процедуры, которые компьютер вызывает для выполнения определенной задачи. Существуют аппаратные и программные прерывания. Аппаратные прерывания инициируются аппаратурой, либо с системной платы, либо с карты расширения. Они могут быть вызваны сигналом микросхемы таймера, сигналом от принтера, нажатием клавиши на клавиатуре и множеством других причин. Аппаратные прерывания не координируются с работой программного обеспечения. Когда вызывается прерывание, процессор оставляет свою работу, выполняет прерывание, а затем возвращается на прежнее место. Для того, чтобы иметь возможность вернуться точно в нужное место программы, адрес этого места (CS:IP) запоминается в стеке вместе с регистром флагов. Затем в CS-.IP загружается адрес программы обработки прерывания и ей передается управление. Программы обработки прерываний иногда называют драйверами прерываний. Они всегда заканчиваются инструкцией IRET (возврат из прерывания), которая завершает процесс, начатый прерыванием, возвращая старые значения CS:IP и регистра флагов, давая тем самым программе возможность продолжить выполнение из того же состояния. С другой стороны, программные прерывания на самом деле ничего не прерывают. Это обычные процедуры, которые вызываются нашими программами для выполнения рутинной работы. Однако эти подпрограммы содержатся не внутри нашей программы, а в операционной системе, и механизм прерываний дает возможность обратиться к ним. Программные прерывания могут вызываться друг из друга. Например, все прерывания обработки ввода с клавиатуры DOS используют прерывания обработки ввода с клавиатуры BIOS для получения символа из буфера клавиатуры. Необходимо отметить, что аппаратное прерывание может получить управление при выполнении программного прерывания. При этом не возникает конфликтов, т.к. каждая подпрограмма обработки прерывания сохраняет значения всех используемых ею регистров и затем восстанавливает их при выходе, тем самым не оставляя следов того, что она занимала процессор. Адреса программ прерываний называют векторами. Каждый вектор имеет длину 4 байта. В первом слове хранится значение IP (указатель команд), а во втором - CS (сегмент команд). Младшие 1024 байта памяти содержат вектора прерываний, т.о., есть место для 256 векторов. Вместе взятые они называются таблицей векторов. Вектор для прерывания 0 начинается с ячейки 0000:0000, для прерывания 1 - с ячейки 0000:0004 и т. д. Если посмотреть на 4 байта, начиная с адреса 0000:0020, в которых содержится вектор прерывания 8Н (прерывание вектора суток), то можно обнаружить там A5FEOOFO. Имеется в виду, что младший байт слова расположен сначала и что порядок - IP:CS, это 4-байтовое значение переводится в FOOO:FEA5. Это стартовый адрес программы ПЗУ, выполняющий прерывание 8Н.
2. Программирование контроллера прерываний 8259.
Для управления аппаратными прерываниями используется микросхема программируемого контроллера прерываний 8259. Поскольку в каждый момент времени может поступать не один запрос, микросхема имеет схему приоритетов. Имеется 16 уровней приоритетов у IBM AT (от IRQO до IRQ15 две микросхемы). Максимальный приоритет соответствует уровню О. Аппаратные прерывания в порядке приоритета IRQ О таймер 1 клавиатура 2 канал ввода/вывода
8 часы реального времени 9 программно переводятся в IRQ2 10 -12 резерв 13 математический сопроцессор 14 контроллер фиксированного диска 15 резерв 3 COM2 4 СОМ1 5 LPT2 6 контроллер дискет 7 LPT1 Прерыванию времени суток дан максимальный приоритет, поскольку если оно будет постоянно теряться, то будет неверными показания системных часов. Прерывание от клавиатуры вызывается при нажатии или отпускании клавиши; оно вызывает цепь событий, которая обычно заканчивается тем, что код клавиши помещается в буфер клавиатуры. Микросхема 8259 имеет три однобайтовых регистра, которые управляют восемью линиями аппаратных прерываний. Регистр запроса на прерывание (IRR) устанавливает соответствующий бит, когда линия прерывания сигнализирует о запросе. Затем микросхема автоматически проверяет, не обрабатывается ли другое прерывание. При этом она запрашивает информацию регистра обслуживания (ISR). Дополнительная цепь отвечает за систему приоритетов. Наконец, перед вызовом прерывания проверяется регистр маски прерываний (IMR), чтобы узнать, разрешено ли в данный момент прерывание данного уровня. Как правило обращаются к регистру маски прерываний через порт 21Н и к командному регистру прерываний через порт 20Н.
|
Последнее изменение этой страницы: 2019-04-21; Просмотров: 172; Нарушение авторского права страницы