Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТОИ 17-32.docx
Скачиваний:
14
Добавлен:
25.09.2019
Размер:
57.84 Кб
Скачать
  1. Дайте понятие критической секции.

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

process Pi;

begin

while true do

begin

BEFOREi; {Операторы, предшествующие критической секции }

CSi; {Операторы критической секции }

AFTERi; {Операторы, следующие за критической секцией }

end

end Pi.

Процедура инициализации

Первый процесс

Второй процесс

procedure INIT;

common integer N ;

begin

N := 1 ;

start(P1) ;

start(P2)

end INIT .

process P1;

common integer N ;

begin

while true do

begin

BEFORE1 ;

while N = 2 do ;

CS1 ;

N := 2 ;

AFTER1 ;

end

end P1 .

process P2;

common integer N ;

begin

while true do

begin

BEFORE2 ;

while N = 1 do ;

CS2 ;

N := 1 ;

AFTER2 ;

end

end P2

  1. Сформулируйте свойства критической секции.

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

– в любой момент времени только один процесс может находиться в своей критической секции по данному ресурсу

– ни один процесс не должен ждать бесконечно долго входа в критическую секцию

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

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

  1. Каковы общие условие решения задачи взаимного исключения?

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

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

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

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

– никакой процесс, находящийся вне своей критической секции, не должен

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

Процедура инициализации

Первый процесс

Второй процесс

procedure INIT;

common integer N ;

begin

N := 1 ;

start(P1) ;

start(P2)

end INIT .

process P1;

common integer N ;

begin

while true do

begin

BEFORE1 ;

while N = 2 do ;

CS1 ;

N := 2 ;

AFTER1 ;

end

end P1 .

process P2;

common integer N ;

begin

while true do

begin

BEFORE2 ;

while N = 1 do ;

CS2 ;

N := 1 ;

AFTER2 ;

end

end P2