В двухпрограммном режиме (рис. 6.2,б) ниже RMON располагаются драйверы, необходимые оперативной программе, а затем сама программа со своим стеком. Таким образом, драйверы для оперативной программы должны быть резидентными, чтобы не создавать задержек, связанных с загрузкой, во время выполнения. Ниже оперативной программы размещается программа USR и при завершении фоновой программы интерпретатор директив KMON.
Система допускает два способа расширения адресного пространства: использование оверлейных структур и диспетчера памяти, реализующего динамическую переадресацию. Оверлейная структура не поддерживается ядром ОС; оверлейный супервизор прикомпоновывается к программе на этапе связывания модулей программы и загружается затем вместе с ней, представляя единое целое. Диспетчер памяти применяется в двухпрограммном режиме работы, как оперативной, так и фоновой программе предоставляется возможность расширять свое логическое адресное пространство в область выше резидентной части ядра (56К). При этом ядро включает специальные средства работы с диспетчером, и такой режим имеет отдельное обозначение (ХМ). В этом режиме программа USR является резидентной, так как программа пользователя может расширяться в другую область физической памяти.
Управление процессорами включает планирование заданий, диспетчирование и синхронизацию процессов. Рассматриваемая система является интерактивной, поэтому планирование заданий как элемент пакетной обработки не включено в состав основных функций системы. Пакетная обработка реализуется с помощью утилиты BATCH, выполняющей функции считывания потока директив, его интерпретации, запуска и завершения заданий.
Диспетчирование основных задач в системе осуществляется по простому алгоритму: если оперативная программа готова к работе, процессор передается ей. Но кроме основных программ, оперативной и фоновой, в системе существует ряд дополнительных программ асинхронных процессов: ввода-вывода, осуществляемые драйверами, и обработки внешних прерываний, написанные пользователями. Система предоставляет также возможность пользователю включать программу завершения, которой будет передано управление по истечении интервала времени, заданного пользователем, или по завершении операции ввода-вывода, задаваемом специальными запросами «чтение-запись с завершением» (.READC/.WRITEC). Диспетчирование этих дополнительных процессов связано с решением таких вопросов:
Наиболее простое решение — запретить какие-либо вмешательства в асинхронный процесс до его окончания — является неэффективным. Во-первых, при этом блокируются все прерывания на время его выполнения, что в системах реального времени недопустимо. Во-вторых, при этом запрещается обращения к ядру (программные запросы). Для решения этих вопросов в системе предусмотрены очереди отложенных обработчиков прерываний (FORK) и программ завершения (SYNCH) только в режиме FB.