программное обеспечение параллельных вычислений

 

процедура dispatch

Любителям колбасы- форум мясной литературы на сайте о колбасных изделиях
 
 

Рассмотрим, что происходит, когда программа вызывает процедуру dispatch. После сохранения содержимого некоторых регистров и получения доступа по считыванию из текущего сегмента TSS; процедура dispatch выполняет косвенный переход JMP (фраза DWORD PTR заставляет ассемблер образовать косвенный межсегментный переход) через виртуальный адрес, находящийся в поле связи текущего сегмента состояния задачи. Так как этот виртуальный адрес показывает на TSS, команда JMP осуществляет переключение задачи, а не переход.

Это вызывает приостановку текущей задачи и выполнение следующей.

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

Таким образом, вызов процедуры dispatch не оказывает побочных воздействий на вызывающую ее задачу, но дает другим задачам шанс на выполнение. К сожалению, мы не можем рассчитывать на то, что задачи достаточно "внимательны", чтобы вызывать процедуру dispatch через регулярные интервалы времени. Вместо этого можно использовать интервальный таймер (например, 8254) для генерирования сигнала прерывания процессора 80286, например через каждую тысячную долю секунды.

Если превратить dispatch в процедуру прерывания (для этого нужно удалить команды PUSHF и POPF, а также заменить команду RET на команду IRET) и ассоциировать ее с прерыванием таймера, то она будет автоматически вызываться через каждую тысячную долю секунды. Таким образом, каждая задача получает квант времени (почти) в одну тысячную долю секунды и разделение задач во времени реализовано

 
 
 
Copyright (c) 2009. Использование материалов данного сайта возможно только при проставлении активной, не закрытой от индексации гиперссылки. http://soft-tlt.ru