Лабораторная работа: Реализация управления процессами и ресурсами многопрограммных операционных систем на уровне диспетчеризации
!Timeproc – таймер
Алгоритм модулей
Sort – производится объектом TListView.
Newproc, Endproc, Delproc, Editproc – описания не требуется ?).
Findplace:
{определение ресурсов выделенных }
цикл от j:=0 до ListView1.Count-1
если {все ресурсы доступны} то
ListView2.Add:= ListView1.Items.Item[j-k];
Inc(k);
иначе если {процессы которые используют требуемые ресурсы имеют меньший приоритет} то
ListView2.Add:= ListView1.Items.Item[j-k];
ListView1.Add:={процессы занявшие ресурсы}
Inc(k);
всё
всё
{sortproc – вызывается объектами TlistView автономно при каждом изменении}
к.ц.
ReRun:
если ListView3.Items.Item[0]=nil то
если {абсолютный приоритет выполняемого меньше приоритета ListView2.Items.Item[0]} то
{ListView3.Items.Item[0] меняется местами с ListView2.Items.Item[0]}
всё
всё
так как сортировка производится методами винды и при этом обрабатываются только строки из обного столбца, то добавлен столбец # в котором находится
HEX(255-приоритет)+HEX(память), что позволяет быстро сортировать
по принципу HPF=SM=FCFS.
Добавления только в Findplace.
Описание тестового примера
NewProc:\\ ID:FF0200 name:proces1 priority:0 mem:512 device1: () device2: () device3: ()