Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Критические области



Основным способом предотвращения проблем, связанных с состоянием состязания, и любой другой ситуации, связанной с совместным использованием памяти, файлов и чего-либо еще, является запрет одновременной записи и чтения разделенных данных более чем одним процессом. Говоря иными словами, необходимо взаимное исключение. Это означает, что в тот момент, когда один процесс использует разделенные данные, другому процессу это делать будет запрещено.

Проблему исключения состояний состязания можно сформулировать на абст­рактном уровне. Некоторый промежуток времени процесс занят внутренними рас­четами и другими задачами, не приводящими к состояниям состязания. В другие моменты времени процесс обращается к совместно используемым данным или выполняет какое-то другое действие, которое может привести к состязанию. Часть программы, в которой есть обращение к совместно используемым данным, назы­вается критической областью или критической секцией. Если нам удастся избе­жать одновременного нахождения двух процессов в критических областях, мы сможем избежать состязаний.

Несмотря на то что это требование исключает состязание, его недостаточно для правильной совместной работы параллельных процессов и эффективного исполь­зования общих данных. Для этого необходимо выполнение четырех условий:

1. Два процесса не должны одновременно находиться в критических обла­стях.

2. В программе не должно быть предположений о скорости или количестве процессоров.

3. Процесс, находящийся вне критической области, не может блокировать дру­гие процессы.

4. Невозможна ситуация, в которой процесс вечно ждет попадания в крити­ческую область.

В абстрактном виде требуемое поведение процессов представлено на рисунке. Процесс А попадает в критическую область в момент времени Т1. Чуть позже, в мо­мент времени Т2, процесс В пытается попасть в критическую область, но ему это не удается, поскольку в критической области уже находится процесс А, а два процесса не должны одновременно находиться в критических областях. Поэто­му процесс В временно приостанавливается, до наступления момента времени Т3, когда процесс А выходит из критической области. В момент времени Т4 процесс В также покидает критическую область, и мы возвращаемся в исходное состояние, когда ни одного процесса в критической области не было.





Дата публикования: 2015-01-26; Прочитано: 484 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...