Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операции по управлению семафором






 

Как упоминалось выше, к семафору можно получить доступ только с помощью специальных операций, подобных тем, которые выполняются с объектами. Это операции декремента, P(), и инкремента, V(). Если объект Mutex представляет собой семафор, то логика реализации операций P (Mutex) и V (Mutex) м ожет выглядеть таки м образо м:

 

P(Mutex)

if (Mutex > 0) {

Mutex--;

} else {

Блокирование по объекту Mutex;

}

V(Mutex)

if(Oчepeдь доступа к объекту Mutex не пуста){

Передача объекта Мьютекс следующей задаче;

} else {

Mutex++;

}

Реализация зависит от конкретной систе м ы. Эти операции неделимы, т.е. их невозможно прервать. Если операцию P () попытаются выполнить сразу несколько задач, то лишь одна из них получит разрешение продолжить работу. Если объект Mutex был уже декре м ентирован, то задача будет заблокирована и зай м ет м есто в очереди. Операци я V () вызываетс я задачей, которая и м еет доступ к объекту Mutex. Если получения доступа к объекту Мьютекс ожидают дру г ие задачи, он «передается » следующей задаче из очереди. Если очередь задач пуста, объект Mutex инкрементируетс я.

Операции с семафором могут иметь другие имена:

Операци я P(): lock()

Операци я V(): unlock()

Значение семафора зависит от его типа. Двоичный семафор будет иметь значение 0 или 1. Вычислительный семафор (определяю щ ий лимиты ресурсов для процессов, получающих доступ к ним) может иметь некоторое неотрицательное целочисленное значение.

Стандарт POSIX определяет несколько типов семафоров. Эти семафоры испо л ьзуются процессами или потоками. Типы семафоров (а также их некоторые основные операции) перечислены в табл. 5.1.

Таблица 5 .1. Типы семафоров, определенные стандартом POSIX

 

Тип семафора Пользователь Описание
Мьютексный семафор Процессы или потоки Механизм, используемый для реализации взаимного исключения в критическом разделе кода
Блокировка для обеспечения чтения и записи Процессы или потоки Механизм, используемый д л я реализации стратегии доступа для чтения и записи среди потоков
Условная переменная Процессы или потоки Механизм, используемый д л я уведом л ения потоков о том, что произош л о событие.
    Событийный мьютекс остается заблокированным потоком до тех пор, пока не будет получен соответствующий сигнал
Несколько условных переменных Процессы или потоки Аналогичен событийному мьютексу, но включает несколько событий или условий

 

 

Операционные системы, которые не противоречат спецификации Single UNIX Specification или стандарту POSIX Standard, поддерживают реализацию семафоров, которые являются частью библиотеки libpthread (соответствующие функции объявлены в заголовке pthread. h).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.