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

Методы решения проблем синхронизации



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

Все известные средства решения проблемы взаимного исключения основаны на использовании аппаратных возможностей: блокировка памяти, специальные команды типа «проверка и установка», механизмы системы прерываний, позволяющие организовать такие средства, как семафорные операции, мониторы, почтовые ящики и т.д. С помощью перечисленных средств можно разрабатывать взаимодействующие процессы, при выполнении которых будут корректно решаться задачи синхронизации при работе критических секций.

Все вычислительные машины обязательно имеют средство для организации взаимного исключения, называемое Блокировкой памяти. Оно запрещает одновременное выполнение нескольких команд, обращающихся к одной и той же ячейке памяти. Если в ячейке хранится разделяемая переменная, то обратиться к ней в некоторый момент времени может только один процесс.

Механизм блокировки памяти предотвращает одновременный доступ к ячейке, но не предотвращает чередование доступа. Т.о. если в критической секции более одного обращения к памяти, то задача усложняется.

Все операции по установке переменных должны поддерживаться средством блокировки памяти.

Более эффективное решение – вместо введения переменных для каждого процесса можно со всеми критическими секциями связать 1 переменную как некий «ключ». Вначале доступ к критической секции открыт, но перед входом в свою критическую секцию процесс забирает ключ и тем самым блокирует другие процессы. После выхода из критической секции ключ возвращается. Если процесс хочет войти с критическую секцию и обнаруживает отсутствие ключа, он переводится в состояние блокировки до тех пор, пока ключ не будет возвращён другим процессом. При этом проверку возможности входа в критическую секцию лучше возложить не на процессы, а на ОС. Это сделано в Семафорах Дейкстры.





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



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