Операционные системы. Процессы и потоки. Илюшкин Б.И. - 61 стр.

UptoLike

Составители: 

цию может любое количество процессов, при этом значение семафо-
ра каждый раз уменьшается на единицу. После того как процесс, на-
ходившийся в критической секции, покидает ее, s:=s+1 и один из
заблокированных процессов удаляется из очереди и активизируется,
т.е. перемещается из списка приостановленных процессов в список
готовых к выполнению процессов. Данный процесс сможет войти в
критическую секцию, как только планировщик операционной систе-
мы выберет его.
В случае потоков, выполняющихся в пространстве пользователя,
используется упрощенная версия семафора, называемая мьютексом
(mutex, сокращение от mutual exclusion – взаимное исключение) [5].
Мьютекс может управлять взаимным исключением доступа к совме-
стно используемым ресурсам, и его реализация более проста и эф-
фективна.
Мьютекспеременная, которая может находиться в одном из двух
состояний: блокированном (<>0) или неблокированном (=0). Значе-
ние мьютекса устанавливается двумя процедурами. Для входа в кри-
тическую секцию поток или процесс вызывает процедуру
mutex_lock. Если мьютекс не заблокирован, поток может войти в
критическую секцию [5]. В противном случае вызывающий поток
блокируется до тех пор, пока другой поток, находящийся в критиче-
ской секции, не выйдет из нее, вызвав процедуру mutex_unlock.
Если мьютекс блокирует несколько потоков, то из них случайным
образом выбирается один. Ниже приводятся коды процедур
mutex_lock и mutex_unlock в случае потоков на уровне пользо-
вателя с использованием команды TSL [5].
mutex_lock ;
TSL REGISTER,MUTEX ; предыдущее значение mutex
; копируется в регистр и устанавливается
61