Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Список используемых источников. 1. В.И. Ключко, В.И.Лойко, Архитектура вычислительных систем и сетей ЭВМ
1. В.И. Ключко, В.И.Лойко, Архитектура вычислительных систем и сетей ЭВМ. Изд. КубГТУ. 2000г.-153с. 2. В.И. Лойко, Методические указания к лабораторным работам. Изд. КубГТУ. 2000г. -25с.
Приложения
Приложение 1 Листинг программы Program Kurs; Uses Crt; Type pointer=^pnt; pnt =record ptr:pointer; time:integer; end; Var i: integer; a,prr,pspt,ph,p1,p2,px:pointer; l,r,N,t,t2,k,k2,v,d,s2,c:integer; P, Dlit, Short: Integer; Summ,Tspt,Trr:Integer; ch:char; {Процедура добавления заявки} Procedure push (var px,y:pointer; l:integer); begin new(p1); p1^.ptr:=nil; if y=nil then begin px:=p1; y:=p1; y^.time:=l; end else begin y^.ptr:=p1; y^.time:=l; end; y:=p1; end; Begin Repeat Clrscr; Randomize; { Число тактов} Write(' Введите число заявок (100 или 1000) '); Readln(N); { Вероятность прихода заявки} Write(' Введите вероятность прихода заявки (30% или 60%) '); Readln(P); { Длительность решения задачи} Write(' Введите длительность решения задачи (0-7) '); Readln(Dlit); { Заявка считается короткой} Writeln(' Заявка считается короткой (4) '); {Readln(}Short:=4;{);} {Заполнение списка заявок} a:=nil;ph:=nil;p1:=nil;p2:=nil;prr:=nil;pspt:=nil; v:=0; c:=0; Summ:=0; { For i:=1 to n do} Repeat begin r:=random(10)+1; {Генерации вероятности прихода заявки} If r<=(P div 10) {------------------------} then begin l:=random(Dlit)+1; {Генерация длительности заявки} push(ph,a,l); {Добавление заявки} inc(v); {Счетчик заявок} Summ:=Summ+l; {Сумма длинн заявок} end else push(ph,a,0); {Заявки нет} c:=c+1; end; Until v=n; Writeln; Writeln(' Сумма длин всех заявок: ',Summ); {;Алгоритм без сортировки} t:=0; a:=ph; k:=0; i:=1; s2:=0; d:=0; Tspt:=0; Repeat If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) } then begin if d<i then begin d:=i; {Простой} inc(s2); inc(t) end; a:=a^.ptr; {Следующая заявка} end else begin if d<i then begin d:=d+a^.time; inc(t,a^.time); inc(k); a:=a^.ptr; {Следующая заявка} end end; inc(i); Until (a^.ptr=nil); { Заявки кончились} s2:=n-s2; If k=0 then k:=1; Writeln; Writeln(' Среднее время пребывания заявки в очереди: ',t/k:0:4); Writeln(' Число тактов процессора: ',d); {;Алгоритм SPT с сортировкой} t:=0; a:=nil; px:=ph; k:=0; i:=1; s2:=0; d:=0; Tspt:=0; repeat if (px^.time=0) then if (a=nil) then begin ph:=px^.ptr; Dispose(px); px:=ph; end else begin a^.ptr:=px^.ptr; Dispose(px); px:=a^.ptr; end else begin a:=px; px:=px^.ptr; end; Until (a^.ptr=nil); a:=ph; Repeat inc(Tspt); If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) } then begin if d<i then begin d:=i; {Простой} inc(s2) end; a:=a^.ptr; {Следующая заявка} end else begin if d<i then begin d:=d+a^.time; { Считаем число тактов работы алгоритма SPT } inc(t,a^.time); inc(k); a:=a^.ptr; {Следующая заявка} end end; inc(i); Until (a^.ptr=nil); { Заявки кончились} s2:=n-s2; If k=0 then k:=1; Writeln; Writeln(' SPT: Среднее время пребывания заявки в очереди: ',t/k:0:4); Writeln(' Число тактов процессора: ',d); {;Алгоритм RR} t:=0; t2:=0; s2:=0; a:=ph; k:=0; k2:=0; i:=1; d:=0; Trr:=0; Repeat inc(Trr); { Считаем время работы алгоритма RR } If a^.time=0 {Если время заявки 0 (заявки в этот такт нет) } then begin if d<i then begin d:=i; inc(s2) end; a:=a^.ptr; { Следующая заявка} end else if (a^.time>0) and (a^.time<5) {Если длина заявки дольше короткой} then begin if d<i then begin d:=d+a^.time; inc(t,a^.time); inc(k); a:=a^.ptr; { Следующая заявка} end end else {Отбрасываем длинную заявку в конец очереди} begin if d<i then begin d:=d+Short; p2:=a^.ptr; inc(t2,a^.time); inc(k2); r:=a^.time-Short; repeat a:=a^.ptr; until a^.ptr=nil; push(ph,a,r); a:=p2; end end; inc(i); Until (a^.ptr=nil); s2:=n-s2; If k=0 then k:=1; Writeln; Writeln(' RR: Среднее время пребывания короткой заявки в очереди: ',t/k:0:4); Writeln(' Среднее время пребывания длинной заявки в очереди: ',t2/k2:0:4); Writeln(' Число тактов процессора: ',d); Writeln; Writeln('Выход? (Y-Да) '); Ch:=ReadKey; Until (Ch='y') or (CH='Y') or (CH='н')or(CH='Н'); End.
|