Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционки Шпор.doc
Скачиваний:
20
Добавлен:
28.10.2018
Размер:
332.8 Кб
Скачать

10Необходимость синхронизации и гонки, критическая секция

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

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

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

Синхронизация – основа любого взаимодействия процессов, связано ли это взаимодействие с разделением ресурсов или с обменом данными. Необходимость в синхронизации возникает если:1)   функции, выполняемые различными процессами, связаны (например, одна задача готовит данные для другой). Такая синхронизация называется синхронизацией по информации;2)   необходимо упорядочить доступ нескольких процессов к разделяемому ресурсу;3)   необходимо синхронизировать процесс с внешним событием (с помощью механизма прерываний);4)   необходимо приостановить процесс до некоторого момента времени, либо запустить процесс в данный момент. Такая синхронизация носит название синхронизации процессов во времени.

11 Блокирующие переменные, семафоры, мьютексы.

Блокирующие переменные. Для синхронизации процессов прикладной программист может использовать глобальные блокирующие переменные. С этими переменными, к ко­торым все процессы имеют прямой доступ, программист работает, не об­ращаясь к системным вызовам ОС. Каждому набору критических данных ставится в соответствие двоичная пере­менная, которой процесс присваивает значение 0, когда он входит в критическую секцию, и значение 1, когда он ее покидает. Если переменная установлена в 0, то данные заняты и запрашивающий процесс продолжает запрос. Если же данные свободны, то значение пере­менной устанавливается в 0 и процесс входит в критическую секцию. После того как он выполнит все действия с данными, значение переменной снова устанавливается равным 1. ОС.

Мью́текс — одноместный семафор, служащий в программировании для синхронизации одновременно выполняющихся потоков.

Мьютексы — это один из вариантов семафорных механизмов для организации взаимного исключения. Они реализованы во многих ОС, их основное назначение — организация взаимного исключения для потоков из одного и того же или из разных процессов.

Мьютексы — это простейшие двоичные семафоры, которые могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта mutex, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным.

Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток засыпает до тех пор, пока мьютекс не будет освобождён.

Цель использования мьютексов — защита данных от повреждения; однако им порождаются другие проблемы — такие, как взаимная блокировка (клинч) и Состояние гонки.

Семафор - механизм реализации взаимоисключения процессов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]