Язык Форт и его реализации

         

Многозадачный режим - часть 4


В результате центральный процессор будет исполнять цикл из передач управления по кольцу задач, пока не встретит команду WAKE. Действие PAUSE отличается от описанного действия STOP только тем, что предварительно засылает команду WAKE в начало области данной задачи, обеспечивая тем самым пробуждение данной задачи после полного круга передач управления. Действие WAKE заключается в том, что команда JMP засылается на отведенное ей место в начало пользовательской области, восстанавливается текущее состояние данной задачи из ее области сохранения, управление передается на точку NEXT адресного интерпретатора. В результате исполнение задачи возобновляется от точки останова.

Для определения фоновой задачи используется определяющее слово BACKGROUND (фон), которое снимает со стека три числа: размер пользовательской области, размер стека данных и размер стека возвратов. Это слово резервирует в словаре память указанного объема и указатели на эти области компилирует в поле параметров создаваемой статьи, например, 40 60 50 BACKGROUND T. При исполнении слова T на стеке оставляется адрес его поля параметров, через который можно добраться до пользовательской области и стеков задачи T. Данное описание только подготавливает задачу, но не включает ее в кольцо задач и не запускает на исполнение.

При запуске форт-системы в кольце задач присутствует только одна задача — OPERATOR (оператор), звено связи которой указывает на нее же. Для встраивания в кольцо новых задач используется слово BUILD (построить), например T BUILD. Это слово, используя адрес поля параметров статьи для задачи, инициализирует ее пользовательскую область и включает ее в кольцо задач после задачи OPERATOR. При этом в начало области вписывается команда JMP, предохраняющая данную задачу от преждевременного исполнения. Заметим, что форт-слова, составляющие программу данной задачи, могут быть определены значительно позже. Обратное действие — исключение задачи из кольца задач — выполняет аналогичное по употреблению слово RUIN (разрушить).




Содержание  Назад  Вперед