Разделы:


Best links:

бесшовные и недорогие натяжные потолки http://mo-potolok.ru/

--------------------------

Семафорные операции

               test    al,al

               jz       Check

Критическая секция

 
Image               …

               …

               …

V:            mov  semaphore,1

Если semaphore = 1 при выполнении команды xchg, он сбрасывается, а в alоказывается 1. Даже если система переключает процессы после команды xchg, новый процесс не сможет войти в свою критическую секцию, так как semaphore уже сброшен. Такое решение стало возможным благодаря загрузке и установке операнда одной командой (именно командой xchg) и может быть применено к любому числу процессов.  

Как видно из приведенного примера, оператор Р легко реализуется командами xor, xchg, test и jz, а оператор V — командой mov. Однако, при такой  реализации, когда один процесс находится в критической секции, другие процессы, претендующие на тот же самый ресурс, будут простаивать в циклах ожидания операторов Р, что приводит к значительным потерям времени.

Для лучшего использования времени ЦП операторы Р и V следует модифицировать следующим образом:

P:            xor    al,al

               xchg  al,semaphore

               test    al,al

               jnz     Use

Перевод текущего процесса в 

заблокированное состояние

 
Image               …

               …

               …

               jmp   P

Критическая секция

 
ImageUse:        …

               …

               …

V:           mov  semaphore,1

Разблокирование процессов, ожидающих светофора

 
Image               …

Если семафор сброшен, вместо повторения цикла ожидания текущий процесс переводится в заблокированное состояние, а ЦП начинает выполнять выбранный процесс, находящийся в состоянии готовности. Аналогично в операторе V после установки семафора в 1 осуществляется пересылка процессов, которые были заблокированы из-за недоступности разделенного ресурса, из списка заблокированных процессов в список процессов, находящихся в состоянии готовности. Первый из этих процессов, который возобновляет выполнение, сможет войти в свою критическую секцию.

предыдущаяследующая