Многотерминальная дисковая операционная система. Часть 3.

Для сокращения общего физического адресного пространства используется наложение пространств различных задач в соответствии с определенной дисциплиной. При недостатке места в оперативной памяти задача (процесс) с более высоким приоритетом сворачивает процесс, имеющий приоритет ниже, во внешнюю память. Для этого во внешней памяти выделяются специальные файлы — либо индивидуально для задачи (статическое выделение), либо общий для всех задач (динамическое выделение). После того как свернувшая задача переходит в состояние ожидания какого-либо события, свернутая задача развертывается (если нет готовой к выполнению задачи более высокого приоритета) и продолжается с прерванной точки. Чтобы исключить возможность свертывания какой-либо задачи без присваивания ей самого высокого приоритета, имеется средство объявить задачу несворачиваемой.

Если не хватает памяти для задач близкого приоритета, то они подвергаются свопингу, который является разновидностью свертывания. При этом приоритет одной из задач увеличивается на величину свопиигового приоритета, и она сворачивает другие. Свопинговый приоритет уменьшается во времени. Когда суммарный приоритет задачи уменьшится до приоритета следующей стоящей в свопинговой очереди задачи, происходит смена, получившая квант процессорного времени задача свертывается и помещается в конец свопинговой очереди.

Управление процессорами в МДОС основано на использовании приоритетов для диспетчирования задач и разделяемых двоичных переменных (флагов) для синхронизации процессов. Имеются также средства синхронизации верхнего уровня — аппарат приема-передачи сообщений и сегментов.

Подобно ФОДОС, рассматриваемая система не предназначена для пакетной обработки, и запуск заданий в ней практически эквивалентен запуску задач (процессов). Этот запуск осуществляется выдачей директив с терминала. Интерпретатор директив MCR воспринимает также наборы директив (командных строк), предварительно подготовленных в виде командного файла во внешней памяти. Запустить задачу можно и из другой задачи, но система не поддерживает отношений типа задача — подзадача между запустившей и запущенной задачей. Окончание каждой задачи является независимым. Диспетчирование задач (процессов) производится с помощью системы приоритетов (рис. 6.6). Приоритет каждой задачи находится в диапазоне 0...250 (чем больше число, тем выше приоритет). Приоритет является системно-независимым, т. е. операционная система не может изменить приоритет по своей инициативе (исходя, например, из поведения задачи). Приоритет задается пользователем при создании задачи и затем может быть изменен в процессе выполнения с помощью специального программного запроса.

Приоритеты программы в МДОС

Состояния задач и их запуск являются нетрадиционными по сравнению с обычными вычислительными системами. Это обусловлено требованиями реального времени — необходимостью быстрого запуска задач, а также ограниченной емкостью оперативной памяти.

Первая особенность системы — отсутствие динамической организации задач. В мультипрограммных вычислительных системах общего назначения программа преобразуется в задачу при самом запуске, при выдаче инициатором или задачей-родителем соответствующего программного запроса (например, ATTACH). Это требует значительных затрат времени: выделения памяти под блок управления задачей, заполнение блока и т. д. В МДОС создание задачи совмещено с компоновкой, т. е. производится в период подготовки программ. Так непосредственно запуск задачи существенно ускоряется.

Вторая особенность — разделение запуска задачи на два этапа: включение описателя задачи в таблицу задач системы; непосредственный запуск, т. е. загрузка в оперативную память и передача управления. Такое разделение позволяет задаче иметь в оперативной памяти только своего представителя — описатель задачи. С его помощью запуск может быть произведен быстро, когда в задаче нет надобности, она почти не занимает оперативной памяти и в то же время находится в состоянии готовности.

Диаграмма состояний процесса (задачи)

Диаграмма состояний задачи (процесса) в МДОС показана на рис. 6.7. Кроме традиционных состояний — хранение, готовность, ожидание, выполнение и завершение — введено еще одно состояние — пассивное, при котором задача в оперативной памяти отсутствует, а ее описатель включен в таблицу задач системы. Перевод задачи из состояния хранения в пассивное и, наоборот, из пассивного в состояние готовности производится при выполнении соответствующих директив MCR, перевод из состояния завершения в пассивное — с помощью программы-терминатора. Остальные переходы осуществляются диспетчером системы при наступлении диспетчерских «событий». Такими состояниями могут быть: завершение операций ввода-вывода; завершение заданного задачей интервала времени; истечение интервала времени при равномерном циклическом квантовании задач; завершение задачи; выдача специальных программных запросов.