Курсовой проект (774312), страница 3
Текст из файла (страница 3)
Двум процессам дан высокий приоритет, трём —средний и ещё двум — низкий. Процессы работают по следующему алгоритму: Процесс отрабатывает два интервала времени.Затем захватывает устройство и работает с ним: один интервалвремени работает, два — ждёт результатов, и так три раза.После работы с устройством процесс работает ещё один интервал времени.
Вся процедура работы выполняется дважды.Наглядный пример алгоритма:for a := 1 to 2 do beginwork(2);getDevice;for b := 1 to 3 do beginwork(1);waitDevice(2);end;releaseDevice;work(1);end;Программа вернула следующую статистику по эмуляции:processes: Apriority: highBhighCnormDnormEnormFlowGlowsem.time/istep1:1>0run1>0runstep2:1>0run1>0runstep3:1>01>02>12>12>1d:run d:run sleep sleep sleepstep4:1>01>0d:run d:runstep5:1>01>02>12>12>12>12>1 -1- + 2/0d:run d:run sleep sleep sleep sleep sleep= 18/0step6:1>0d:slp d:slp d:runstep7:1>0run1>0run2>11>01>03>23>2 -0- + 4/0sleep d:run d:run sleep sleep= 25/0step8:1>0run1>0run1>02>12>12>12>1 -0- + 3/0d:run sleep sleep sleep sleep= 28/02>12>12>13>23>2 -3- + 2/0sleep sleep sleep sleep sleep= 2/01>0run1>0run1>0run1>0runwait1>0run1>0runwait2>12>1 -3- + 5/0sleep sleep= 7/01>0run1>0run-1- + 4/0= 11/03>23>2 -1- + 5/0sleep sleep= 16/01>0run– 20 –1>0run-0- + 3/0= 21/0step9:1>0run1>0run2>11>01>0sleep d:run d:runwait-0- + 4/0wait= 32/0step10:wait1>02>12>1wait d:run sleep sleepwait-0- + 1/0wait= 33/0step11:wait2>11>01>0wait sleep d:run d:runwait-0- + 2/0wait= 35/0step12:waitwait2>12>11>0sleep sleep d:run-0- + 2/0wait= 37/0step13:wait2>1wait sleepstep14:1>0d:runwaitstep15:d:slp2>1wait sleepstep16:1>0d:runwaitstep17:1>0d:run2>1wait sleepstep18:1>0run1>0d:run2>12>11>02>1 -0- + 3/0wait sleep sleep d:run sleep= 54/0step19:--endd:slpwaitwait3>21>0 -0- + 1/0wait sleep d:run= 55/0step20:1>0d:runwaitwait2>13>2 -0- + 1/0wait sleep sleep= 56/0step21:d:slpwaitwaitwaitstep22:1>0d:slp d:runwait3>2wait sleepstep23:1>02>11>0d:run sleep d:run2>13>2 -0- + 2/0wait sleep sleep= 61/0step24:1>02>1d:slp d:run sleepwaitstep25:1>0run2>11>01>03>2sleep d:run d:run sleepstep26:--end1>02>12>12>13>2 -0- + 1/0d:run sleep sleep sleep sleep= 68/0step27:step28:1>0runstep29:--end1>0run1>0run1>0run1>0run1>0run3>21>0 -1- + 3/0sleep d:run= 40/02>12>12>13>2 -0- + 2/0sleep sleep sleep sleep= 42/01>0run1>0run1>02>1 -0- + 3/0d:run sleep= 45/02>12>13>21>0 -0- + 3/0sleep sleep sleep d:run= 48/01>0run1>0run2>11>01>0sleep d:run d:run2>13>2 -0- + 3/0sleep sleep= 51/01>0run1>0run1>0run2>12>13>2sleep sleep sleep1>0run2>1 -1- + 1/0sleep= 57/01>0run-1- + 2/0= 59/02>1 -0- + 2/0sleep= 63/01>0run-0- + 4/0= 67/02>1 -0- + 3/0sleep= 71/01>0run-1- + 2/0= 73/01>02>13>2 -2- + 2/0d:run sleep sleep= 75/0– 21 –step30:--end2>11>02>1 -1- + 1/0sleep d:run sleep= 76/0step31:step32:1>0run2>13>2 -1- + 1/0sleep sleep= 78/0step33:--end1>02>1 -1- + 1/0d:run sleep= 79/0step34:3>21>0 -1- + 1/0sleep d:run= 80/0step35:2>13>2 -1- + 0/0sleep sleep= 80/0step36:2>1 -1- + 0/0d:slp sleep= 80/0step37:-1- + 0/1d:slp d:slp= 80/1step38:1>01>0 -1- + 2/0d:run d:run= 82/1step39:3>23>2 -1- + 0/0sleep sleep= 82/1step40:2>12>1 -1- + 0/0sleep sleep= 82/1step41:-1- + 0/1d:slp d:slp= 82/2step42:step43:3>21>0 -0- + 1/0d:slp sleep d:run= 77/01>0run1>0run-3- + 2/0= 84/2----- -3- + 0/0endend= 84/2-------------------------------------------------------------TotalTime: 54677375788686= 86ВыводПроцессу требовалось для выполнения работы 24 единицывремени, половину из которых процесс проводил в ожидании.В параллельной работе во время ожидания одного процессапроцессор обрабатывал другие, что позволило выполнить общуюработу почти в два раза быстрее.
А эффективно использоватьустройства, не мешая друг другу, удалось с помощью семафора.– 22 –.