
- •Операционные системы. Часть 2 Учебное пособие
- •Содержание
- •6.1.1. Общие понятия 58
- •4.Память
- •4.1.Управление оперативной памятью
- •4.1.1.Виртуальная и физическая память
- •4.1.2.Схема управления памятью
- •4.1.3.Управление памятью в однозадачной системе
- •4.1.4.Управление памятью в многозадачной системе
- •4.1.5.Подкачка процессов целиком
- •4.1.6.Страничная подкачка
- •4.1.7.Управление виртуальной памятью
- •4.2.Носители памяти для долговременного хранения данных
- •4.2.1.Накопители на жестких дисках
- •4.2.2.Оптические диски
- •4.2.3.Голографические диски
- •4.2.4.Флэш-память
- •4.2.5.Перспективные носители информации
- •Контрольные вопросы
- •5.Разработка надстроек к операционным системам
- •5.1.Общие понятия
- •5.2.Многозадачная оболочка с синхронной заменой контекста
- •5.3.Многозадачная система с принудительной заменой контекста
- •5.4.Дополнения к асинхронной надстройке
- •Контрольные вопросы
- •6.Краткий обзор операционных систем
- •6.1. Операционная система unix
- •6.1.1.Общие понятия
- •6.1.2. Структура unix
- •6.2.Операционные системы реального времени
- •6.2.1.Понятие об операционной системе qnx
- •6.2.2.Введение в ос VX Works
- •6.3.Особенности ос для универсальных многопроцессорных систем
- •6.3.1.Операционная система helios
- •6.4.Операционная система Windows 2000
- •Варианты выпуска Windows 2000
- •Контрольные вопросы
- •Литература
- •Предметный указатель
5.4.Дополнения к асинхронной надстройке
Представленная оболочка с асинхронной заменой контекста может послужить основой для разработки многозадачной надстройки, имеющей практическое применение. Однако для этого требуется осуществить ряд разноплановых дополнений, которые целесообразно производить на языке «С». Поэтому в качестве первого шага рекомендуется перевести ассемблерные коды на указанный язык высокого уровня.
Нижеследующий ряд дополнений касается ядра надстройки. Для придания ядру гибкости, т. е. сделать его быстро и адекватно реагирующим на события, нужно внести как минимум ниже перечисленные изменения (см. разд. 3.4).
Процессы, ожидающие выполнения, следует объединить в очередь готовых. Диспетчеру «намного проще» переводить процессы в активную стадию при помощи команды: «первый, выйди из очереди», чем «долго и мучительно» вспоминать имя очередного господина. К тому же код обработчика прерывания будет не только короче, но и гибче (не нужно будет после включения нового процесса перестраивать обработчик).
Для управления системой по событиям требуется наличие планировщика, который управляется примитивами с уровня прикладных программ (например, функцией Захват Семафора и Освобождение Семафора). Разработка планировщика – это создание библиотеки, с помощью которой разработчик прикладных программ мог бы создавать соответствующие примитивы и очереди блокированных процессов (см. Error: Reference source not found).
Для любой системы реального времени характерно наличие институтов приоритета, под запись которого необходимо отвести поле в дескрипторе процесса, и задавать его значение при создании нового процесса. Для поддержки этого института требуется разработка специальных средств, например, очереди с приоритетом (см. Error: Reference source not found и Error: Reference source not found).
Поддержка обменов сообщениями между процессами также требует написания специальной библиотеки.
Любая система реального времени немыслима без наличия класса «Таймер». Во всяком случае, обязателен минимальный набор из двух функций – это изменение значения тика (программирование 0–го канала таймера) и измерение временных интервалов с точностью до мкс (программирование 2–го канала таймера).
Не лишним дополнением было бы выделение некоторого множества прерываний и придания им статуса сигналов. Каждый из этих сигналов пользователи могли бы в конкретной программе связать с некоторым событием, и добиться тем самым быстрой его обработки.
В первых версиях многозадачных надстроек в основном можно использовать драйверы «материнской» ОС. Однако без минимального набора специальных драйверов обойтись будет трудно:
видимо потребуется установить собственную обработку прерываний от клавиатуры, позволяющей процессам, ждущим нажатия клавиши, не задействовать время процессора;
драйвер совместного использования монитора;
контроль степени занятости процессора.
Перечисленные изменения и дополнения к базовой многозадачной надстройке позволят создать систему, применимую для программирования и выполнения в реальном времени достаточно широкого класса задач. Можно прогнозировать, что стоимость этой системы будет относительно невелика.
При необходимости мощность этой системы можно существенно увеличить, перейдя на 32–х разрядную платформу.
В заключение этого раздела отметим, что ничто не мешает создать надстройку реального времени и к многозадачной системе. Примером такой надстройки может служить RTLinux. В ней могут сосуществовать обычные задачи, имеющие минимальный приоритет, и задачи реального времени. Как только встречается задача с большим приоритетом, она обрабатывается по «законам реального времени.
Разумеется, подобные надстройки разрабатываются на иных принципах.