D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Фоновые задания (Phantoms) / Использование фоновых заданий

Использование фоновых заданий

Фоновый ("фантомный") процесс - это процесс, который выполняется без терминала.

В D3 имеется планировщик фантомных процессов, который сам является фоновым процессом.

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

Фантомные задания порождаются с помощью глагола "z" TCL. (См. команды "z", "zh", "zhs" и "zs").

Фантомное задание выполняется, если имеется свободный фантомный порт. Если свободного фантомного порта нет, фантомное задание ставится в очередь и находится там до тех пор, пока какой-нибудь порт не освободится.

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

При выполнении фантомного задания выполняются четыре действия:

  1. Для фантомного задания выделяется фрейм "pcb" из области переполнения.
  2. В файл "jobs" помещается запись, указывающая на то, что запрос ждет обработки в очереди.
  3. Идентификатор записи (item-id), находящейся в файле "jobs", помещается в конец очереди.
  4. Если процесс планировщика находился в состоянии ожидания, он из этого состояния выводится.

Когда планировщик выходит из состояния ожидания, он проверяет очередь и считывает из файла "jobs" запись, которая соответствует следующему идентификатору записи в очереди.

Если имеется свободный порт, планировщик выполняет три действия:

  1. Планировщик изменяет статус записи в файле "jobs" на 'running' ("выполнение").
  2. Затем он добавляет в файл "jobs" запись, используя номер порт ("port.number") в качестве идентификатора записи.
  3. И, наконец, фантомное задание подключается к порту.

Когда выполнение процесса заканчивается, его статус в файле "jobs" меняется на 'logged off' ("отключен"). Затем планировщик фантомных заданий выводится из состояния ожидания, и рабочая область возвращается в область переполнения.

После возвращения рабочей области фантомного задания в свободное пространство запись с идентификатором, равным номеру порта, удаляется из файла "jobs".

Спулер в D3 является фантомным заданием.

Информация по завершению фантомных заданий имеется в описании команды "end" (TCL).

Опция "p" а файле "users" прекращает фантомные процессы в случае обнаружения ошибки формата группы (gfe) вместо того, чтобы переводить их в состояние ожидания. См. "users".

Для увеличения количество фантомных "pib" в реализациях D3 на базе ОС UNIX можно отредактировать файл "pick0" и уменьшить количество "npibs". Если, например, значение "npibs" равно 10, а "nphts" - 12, для увеличения количество фантомных процессов на 2 можно изменить "npibs" на 8, а "nphts" - на 14.

"scheduler" - фоновая задача, которая обрабатывает фантомные задания, представленные с помощью команды "z" TCL.

Этот процесс обычно запускается в макросе "system-coldstart" программой "start.ss".