close

Вход

Забыли?

вход по аккаунту

?

ПП. ЛР 2

код для вставкиСкачать
1. Формулировка задачи об обедающих мудрецах
См. дополнительную информацию по предыдущей работе
2. Механизм семафоров
S - семафор - переменная специального типа с целочисленными значениями, над которой определены две операции: Р и V (Р - закрытие, V - открытие). Считается, что S1. Определим эти операции.
P(S): если S1, то процесс продолжает выполняться, а S уменьшается на единицу; если S=0, то процесс задерживается, а имя его передается в очередь процессов, ожидающих доступа к данному ресурсу (обычно семафоры связывают с некоторыми ресурсами). V(S): если в очереди к семафору S есть процессы, то один из них выбирается и активизируется (переводится в состояние готовности: помещается в очередь процессов, претендующих на процессорное время); если в очереди нет процессов, то выполняется операция S=S+1(при условии непревышения результата максимально допустимого значения семафора; для двоичного семафора 0S1). Операция V(S) выполняется процессом, который выходит из критической секции.
Операции Р и V неделимы, т.е. над одним семафором одновременно может работать только один процесс (процесс, начавший работу с семафором, должен ее закончить до переключения процессора на другой процесс в случае квазипараллельных процессов).
3. Семафорное решение задачи об обедающих мудрецах
Обозначим через Р1, Р2, Р3, Р4 - процессы-философы; b1, b2, b3, b4 - вилки. Для еды философу необходимо использовать две соседние вилки одновременно (рис. 23).
Рис. 23
Алгоритм работы каждого философа [20] предполагает использование пяти семафоров(Si, , S), один из которых (S) предназначен для взаимного исключения процессов при получении доступа к массиву b, отвечающему за вилки, а семафор Si предназначен для подвешивания i-го философа в том случае, если в результате проверки вилок он обнаружит, что нужных ему вилок в наличии нет, i=1,..,4. Приведем алгоритм работы первого философа; остальные работают аналогично.
P1:P(S[1]);
P(S);
if (b1>0)&(b4>0) then begin
b1:=0; b4:=0;
V(S);
{питание}
P(S);
b1:=1; b4:=1;
V(S);
for i:=1 to 4 do V(S[i]);
{философствование}
end
else V(S);
goto P1;
4. Особенности работы и требования к отчету
Основным отличием данной лабораторной работы от предыдущей является необходимость синхронизации процессов-философов при доступе к разделяемым данным посредством семафоров, что предполагает приведенный выше алгоритм. Таким образом, необходимо реализовать механизм семафоров (как описано в п. 2), исключив при этом активное ожидание. Т.е. процесс, ожидающий освобождения некоторого семафора должен быть изъят из очереди процессов, которым передается управление диспетчером задач, ему не должно выдаваться процессорное время. В эту очередь ждущий процесс снова может попасть только в одном случае - при освобождении семафора, на котором он повис.
Отчет о работе должен содержать:
* постановку задачи;
* листинг программы;
* результаты работы в виде протокола выполнения программы, который должен выводиться ей в файл; протокол работы содержит информацию о текущем состоянии массива вилок и философов на некоторый момент времени
* выводы по работе
Документ
Категория
Рефераты
Просмотров
17
Размер файла
44 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа