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

Определение и свойства критической секции



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

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

На критическую секцию, связанную с доступом к какому-либо разделяемому несколькими процессами информационному ресурсу, налагаются следующие требования:

– в любой момент времени только один процесс может находиться в своей критической секции по данному ресурсу (это главное требование - взаимное исключение);

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

– ни один процесс не может находиться в своей критической секции бесконечно долго (это следствие предыдущего требования - все процессы в течение приемлемого времени должны получить доступ к разделяемым данным для выполнения своих функций);

– никакой процесс, находящийся вне своей критической секции, не должен задерживать выполнение других процессов, ожидающих входа в свои критические секции.

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

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

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

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

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

Относительно режима работы с разделяемыми информационными ресурсами сделаны следующие предположения:

– относительные скорости процессов неизвестны;

– программа может останавливаться только вне ее критической секции;

– операции считывания и записи разделяемых данных неделимы;

– процессы не имеют приоритетов, связанных с доступом к общим данным, то есть нет приоритетов на вход в критические секции;

– одновременные обращения к одним и тем же данным для выполнения операции чтения или записи более чем одного процессора приведут к последовательным обращениям в неустановленном порядке.

Далее проблема взаимного исключения и способы ее реализации рассматриваются на примере двух циклических процессов.

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

Обозначим критическую секцию процесса Pi (всю последовательность составляющих ее операторов) через CSi. Все операторы, выполняемые процессом Pi до входа в критическую секцию, обозначим BEFOREi, а всю последовательность операторов, выполняемых после выхода процесса Pi из критической секции, - AFTERi. Для простоты будем считать, что в рассматриваемых процессах нет других критических секций. Тогда программное представление процесса Pi на псевдокоде можно записать следующим образом:

process Pi ;

Begin





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



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