Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OC - Лекция 5 / Alg_banker

.pas
Скачиваний:
12
Добавлен:
21.05.2015
Размер:
1.17 Кб
Скачать
program alg_banker;//предложен Дейкстрой
const
num_device=100;//общее число устройств
num_proc=50;//общее число процессов
var
max_want:array[1..num_proc] of integer;//максимальная потребность процессов
allot:array[1..num_proc] of integer;//выделено устройств
rest:array[1..num_proc] of integer;//остаток
not_completed:array[1..num_proc] of boolean;//=true, если процесс может не завершиться
free_device:integer;//количество свободных устройств
i:integer;
was_free:boolean;//признак освобождения устройств
{алгоритм применяется после предварительного выделения устройств}
begin
free_device:=num_device;
for i:=1 to num_proc do
begin
free_device:=free_device-allot[i];
not_completed[i]:=true;
rest[i]:=max_want[i]-allot[i];
end;
repeat
was_free:=false;
for i:=1 to num_proc do
if not_completed[i] and (rest[i]<=free_device) do
begin
not_completed[i]:=false;
free_device:=free_device+allot[i];
was_free:=true;
end;
until not was_free;
if free_device=num_device then State_is_safety
else State_is_not_safety;
end.
Соседние файлы в папке OC - Лекция 5