Составители:
o Взаимное исключение. Конкурирующие процессы должны
ЖДАТЬ освобождения общего ресурса и СИГНАЛИЗИРОВАТЬ
об окончании его использования.
Ресурсы, которые не допускают одновременного использования не-
сколькими процессами, называются критическими, а те участки про-
грамм, в которых происходит обращение к критическим ресурсам,
называются критическими секциями (critical sections) [2]. Для кор-
ректного выполнения конкурирующих процессов необходимо нали-
чие механизма взаимного исключения (mutual exclusion), не позво-
ляющего двум процессам одновременно использовать критический
ресурс. Для реализации механизма взаимного исключения, а также
для обмена данными между процессами, в операционной системе
должны быть предусмотрены средства синхронизации взаимодейст-
вующих процессов. Например, если один процесс использует в дан-
ный момент критический ресурс, то все остальные процессы, кото-
рым нужен этот ресурс, должны ждать его освобождения. Реализация
взаимных исключений может создать проблему взаимной блокировки
или тупика (deadlock) [2,3]. Пусть имеются два процесса P1, P2 и два
ресурса R1, R2. Предположим, что каждому процессу для выполне-
ния некоторых функций требуется доступ к обоим ресурсам. Тогда
возможно возникновение ситуации, когда ОС выделяет ресурс R1
процессу P2, а ресурс R2 процессу P1. В результате каждый процесс
ожидает получения одного из двух ресурсов. При этом ни один из
процессов не освобождает уже имеющийся у него ресурс, ожидая по-
лучения второго ресурса для выполнения требуемых функций. В ре-
зультате процессы оказываются взаимно заблокированными. Реали-
зация взаимных исключений может также создать проблему зависа-
ния процесса (starvation – «умирание от голода») [3,5,6]. Пусть имеет-
ся три процесса P1, P2, P3 , каждому из которых периодически требу-
ется доступ к ресурсу R. Пусть P1 обладает ресурсом R, а процессы
53
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »