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

OC - Лекция 5 / Alg_banker

.pas
Скачиваний:
43
Добавлен:
21.05.2015
Размер:
1 Кб
Скачать
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