Требования к Критической секции - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

Требования к Критической секции

Слисаренко К.С. 1
1Брянский Государственный Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просмотров работы: 60