Cтраница 1
Вызывающая задача сама может быть вызвана какой-либо еще задачей, для которой она является вызываемой задачей. Аналогично вызываемая задача может быть вызывающей по отношению к следующей задаче. Таким образом, получаем цепочку связей задач, которая фиксируется в ряде управляющих таблиц и определяет последовательность вызова одних задач другими. [1]
Вызывающая задача не знает, состоится ли рандеву вследствие безусловного оператора accept или оператора accept внутри оператора select. Следовательно, действие вызывающей задачи в любом случае одно и то же, оно рассмотрено в разд. [2]
Если вызывающая задача - не фиктивная или вызываемая - не занята, управление передается программе Управление перекрытием, которая проверит, свободен ли вход в Таблице задач для раз-мешения вызываемой задачи и достаточно ли места в основной памяти для загрузки транзита. [3]
Если вызывающая задача фиктивная, заполняется вход в Очереди вызовов из фиктивной задачи, увеличиваются счетчик входов в эту таблицу СВ и СОП, и управление передается Диспетчеру задач. Если свободных областей для размещения вызываемого транзита недостаточно, то управление передается на проверку того, фиктивная вызывающая задача или нет. [4]
Для фиктивной вызывающей задачи проверяется, занята ли вызываемая задача. Проверка осуществляется по значению поля Е вызываемой задачи. Если вызываемая задача занята, запрос размещается в Очередь вызовов из фиктивной задачи ( см. главу 6), увеличивается Счетчик ожидающих программ и Счетчик вызовов из фиктивной задачи. Управление передается Диспетчеру задач. [5]
Блока управления вызывающей задачи определяется по значению поля Е вызываемой задачи. [6]
Если для вызывающей задачи ранее не была построена цепочка связей, то по Таблице номеров системных задач надо определить номер вызываемой задачи. [7]
Ответ для вызывающей задачи выполняется почти так же, как в рассмотренном выше случае простого рандеву. Сообщение о конце рандеву, включающее значения результата для всех параметров типа out и in out, посылается в вызывающую задачу в порт E RES-POND. Повторная инициализация оператора select гарантирует, что выбранная альтернатива сможет повторно вызвать рандеву в случае, если оператор select будет исполнен повторно. [8]
При завершении рандеву вызывающая задача может снова начать выполнение, возможно, параллельно с вызванной ею задачей. В системах, подобных 1432, принцип параллелизма реализуется закреплением за каждой из задач отдельного ( доступного) процессора. В общем случае дерево задач, состоящее из m порожденных и активных в текущий момент задач, может обрабатываться с уровнем параллельности, равным т, если в системе имеется m доступных процессоров. [9]
Бывают ситуации, когда вызывающая задача должна вызвать одновременно две задачи. [10]
В первом байте указывается номер вызывающей задачи, во втором - номер вызываемой Р2 программы. [11]
Поле Е предназначено для хранения номера вызывающей задачи. Когда задача вызывает неактивизированную задачу, в поле В вызывающей задачи ставится номер вызываемой задачи, в поле Е вызываемой задачи ставится номер вызывающей задачи. Заполнение поля Е означает, что вызываемая задача активизирована и будет занятой по отношению к другим вызывающим задачам. [12]
В поле Е задачи 3 стоит номер 72 вызывающей задачи. [13]
Такой протокол, включающий в себя временную остановку вызывающей задачи, называется рандеву. Рандеву является единственным средством языка для внешних связей между задачами. [14]
Структура двухстороннего коммуникационного канала между вызывающей и обслуживающей задачами. Вызывающая задача выполняет последовательность SEND, RECEIVE, а обслуживающая задача - RECEIVE, SEND. [15] |