А если их нет? Да и если есть, то такая система, обычно, планируется так, что все задачи короткие. Получила задача управление, занесла что-то в регистр УСО (устройство сопряжения с объектом), посмотрела что из этого вышло, отметилась где-то и RETURN, назад в диспетчер. Если нужно ждать какое-то время, активируется другая задача, то есть переводится из состояния "не запускать никогда" в состояние "запустить через, допустим, 0.1 сек", а она, будучи запущенной, проверит, что надо, результат куда-то занесет и дезактивируется, т.е. снова поставит себе "не запускать никогда". Да, это делается синхронным системным вызовом, но, опять же, мгновенным, несколько команд при закрытых прерываниях, и все, Return, назад в диспетчер.
Жаль, не сохранилась одна моя программуля, там подобная многозадачка была накручена не на голом железе, а под RT11SJ, работало оно примерно так же, но еще писались на диск и печатались на принтер логи работы, пришлось разобраться и использовать .READC, .WRITC. Довольно забавно смотрелось: кончилась бумага на принтере, на экране у оператора мигает надпись "Заправь бумагу", остальное все весело работает. Вставишь пистон оператору, чтобы не зевал, зарядят бумагу, и полез лог за полчаса, а то и час работы, остальное весело продолжает работать, как будто ничего и не случилось.
Увы, от нее остался только листинг, на бумаге, причем в поганом качестве, страниц 50, из которых половина - комментарии, откомментировал я ее, помню, не хуже, чем откомментирована RT-11 (то, что на бонусных дистрибутивах). Но увы...