Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор
Автор: Katekap • Апрель 7, 2019 • Реферат • 1,121 Слов (5 Страниц) • 666 Просмотры
РЕФЕРАТ
по дисциплине
«Операционные системы»
[pic 1]
Оглавление
Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор 3
Компьютерные сети. Сетевые ОС и их задачи 6
Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор
Синхронизация в информатике обозначает одно из: синхронизацию процессов, либо синхронизацию данных, либо процесс синхронизации передачи данных.
Синхронизация процессов — это механизм, позволяющий обеспечить целостность какого-либо ресурса (файл, данные в памяти), когда он используется несколькими процессами или потоками в случайном порядке. Для синхронизации процессов и потоков используются семафоры и другие.
Понятие семафорного механизма было введено Э. Дейкстрой в 1962 году.
Семофор относится к низкоуровневым средствам синхронизации, работает по двухступенчатой схеме в режиме пассивного ожидания.
Семафоры Дейкстры представляют собой целочисленную переменную, обрабатываемую ядром с помощью некоторых элементарных операций, с которой связана очередь ожидающих процессов. Над семафором можно выполнить только две операции – «открытие» и «закрытие», названных соответственно P- и V-операциями. Существенно, что операции над семафорами являются непрерывными, поэтому их часто называют примитивами. Пытаясь пройти через семафор, процесс пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, процесс проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), процесс останавливается и ставится в очередь. Таким образом, семафор выполняет роль вспомогательного критического ресурса. Закрытие семафора соответствует захвату ресурса, доступ к которому контролируется этим семафором. Процесс, закрывший семафор, захватывает ресурс. Если ресурс захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с ресурсом, процесс увеличивает значение семафора на единицу, открывая его. При этом первый из стоявших в очереди процессов активизируется, вычитает из значения семафора единицу, и снова закрывает семафор. Если же очередь была пуста, то ничего не происходит, просто семафор остается открытым. Тогда первый процесс, подошедший к семафору, успешно пройдет через него. Это действительно похоже на работу железнодорожного семафора, контролирующего движение поездов по одноколейной ветке.
Над семафором определены две операции:
- Inc(S) (у Дейкстры – P(S)) – увеличить значение семафора S.v++;
- Dec(S) (у Дейкстры – V(S)) – уменьшить значение семафора S.v--.
Так как значение семафора не может быть отрицательным, операции Dec(S) может быть невозможна, если текущее значение равно нулю. В этом случае процесс, выдавший эту операцию, переходит в состояние ожидания до появления возможности сделать эту операцию. Эта возможность появится, если другой процесс сделает операцию Inc(S).
[pic 2]
Теперь можно уточнить семантику операций:
- Inc(S)
- Если текущее значение больше нуля - S.v++
- Если текущее значение равно нулю и очередь пуста - S.v++
- Если текущее значение равно нулю и очередь не пуста – разблокируется первый процесс из очереди, значение остается нулевым.
- Dec(S)
- Если текущее значение больше нуля - S.v—
- Если текущее значение равно нулю – процесс переводится в состояние ожидания и помещается в очередь, значение остается нулевым.
Очень важное замечание – все операции с семафором – АТОМАРНЫЕ, т.е. всегда выполняются неразрывно.
...