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


         

в кольцо через команду безусловного


Все задачи, существующие в системе, связываются в кольцо через команду безусловного перехода (JMP), которая располагается в начале их пользовательских областей. В качестве звена связи используется адресная часть команды перехода, указывающая на такую же команду следующей задачи в кольце. Если передать управление на одну из таких команд, то будет исполняться бесконечный цикл из переходов по кольцу задач до тех пор, пока какая-нибудь задача не будет разбужена.

Для пробуждения задач часто используются асинхронные подпрограммы обработки прерываний. Например, если выход по прерыванию, установленный в слове EXPECT, распознает код возврата каретки, которым заканчивается вводимая строка, то он будит задачу, запросившую данный ввод с терминала, засылая команду WAKE (разбудить) на место ее команды JMP. Для этого часто используется какая-нибудь команда перехвата (например, для ЭВМ СМ-4 это команды TRAP и ЕМТ). Когда цикл передач управления по кольцу задач дойдет до этой команды, она передаст управление специальной подпрограмме-побудчику, которая и возобновит исполнение данной задачи от точки последнего остановка. При этом на место команды WAKE будет вновь заслана команда JMP, и исполнение данной задачи будет продолжаться до следующей операции PAUSE, STOP или WAIT. Пример цикла ввода и обработки данных с возобновлением по прерыванию дает следующее-определение:

: СБОР ( -> ) BEGIN ВВОД STOP ОБРАБОТКИ AGAIN ;

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

: СЧЕТ ( ->) 30000 0 DO ШАГ PAUSE LOOP ;

При каждом повторении цикла после исполнения слова ШАГ происходит передача управления в кольцо задач с тем, чтобы дать поработать другим задачам, ожидающим центральный процессор.

Действие STOP (для определений, заданных в машинном коде, аналогичное ему действие WAIT) состоит в сохранении текущего состояния задачи (указателя интерпретации, указателя вершины стека данных и указателя вершины стека возвратов) в ее пользовательской области и передаче управления по адресу из ее звена связи в кольце задач.

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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий