Upload
maja-kokolanska
View
243
Download
1
Embed Size (px)
DESCRIPTION
Upravuvanje So Procesi
Citation preview
Управување со
процеси
1
Управување со процеси
� Кога имаме два или повеќе процеси кои се наоѓаат во состојба на подготвеност (READY)
� Ако имаме 1 процесор на располагање тогаш треба да се донесе одлука кој од
2
тогаш треба да се донесе одлука кој од процесите ќе се избере за доделување на процесорот
� Во состав на ОС се наоѓа дел кој се нарекува распоредувач и користи одреден алгоритам за распоредување на процеси
Видови процеси
� Врз основа на видот на ресурси кои
доминантно се користат се делат на:
� Процеси кои доминантно го користат процесор
3
процесор
� Процеси кои доминантно користат влезно-
излезни операции
Потреба за распоредување� При креирање на процес, процесот родител
и процесот дете се во состојба подготвени
� Кога еден процес се терминира
� Кога процесот се блокира на В/И повик, на
семафор или од некоја друга причина друг
4
семафор или од некоја друга причина друг процес се избира за извршување
� Хардверски прекин - Распоредувачот треба
да одлучи дали по сервисирањето напрекинот ќе се извршува нов процес од
редицата на чекање, процесот што
беше прекинат или пак некој трет процес
Распоредувачи
� Долгорочeн распоредувач (пристапниот, admission)� Сите процеси што доаѓаат, а не може веднаш да се извршат – најчесто на диск
� Овој распоредувач бира од нив и ги вчитува во меморија за извршување;
� Контролира степен на мултипрограмирање (број на процеси сместени во меморија)
Кога бројот на процесите ќе се зголеми во главната
5
� Кога бројот на процесите ќе се зголеми во главната меморија и некои од нив ќе се суспендираат на диск
� Среднорочен распоредувач (мемориски)
� Системи со временска распределба (time-sharing)
� Отстранува процеси од меморија (растеретува). Потоа процесот пак се сместува во меморијата
� swapping
� Краткорочен распоредувач (процесорски)� ЦПЕ распоредувач, редица на подготвени процеси
Распоредувачи
� Еден процес мигрира помеѓу различни редови за чекање
6
Редови на чекање
� По креирање процесот се вметнува во влезна редица на чекање (job queue)
� Процеси подготвени за работа и се во меморија се чуваат во редот на чекање на подготвени процеси (ready
7
чекање на подготвени процеси (ready queue)
� ОС воведува и посебен ред за чекање за секој влезно-излезен уред (I/O queue)
Процесот кој се извршува
� Процесот кој се извршува може да остане без процесорот:� Ќе истече временски квантум� Да се создаде нов процес и да чека во блокирана состојба, додека новиот процес да се изврши
8
блокирана состојба, додека новиот процес да се изврши
� Кога ќе се случи прекин� Да се постави В/И барање, по што процесот се префрла во редот на чекање на влезно-излезниот уред т.е. станува блокиран
Дијаграм на редици за
распоредување
9
Распоредување на процеси
� Доделувањето на процесорот по даден алгоритам е основна функција на оперативниот систем.
� Одлука кој од “подготвените” процеси да го завземе процесорот
� Одлуката треба да:
10
Одлуката треба да:
� Ја подобри искористеноста на ЦПЕ (користење на ресурс)
� Го подобри времето на одѕив(задоволување на корисникот)
� Биде фер
Одѕив (Responsiveness)
Job 1arrives
Job1 Job2 Job3
Job 2arrives
Job 3arrives
11
Job 1terminates
Job 2terminates
Job 3terminates
Job1Job3
Job2
Job 1 terminates Job 3 terminates
Job 2 terminates
Користење на ЦПЕ (Utilization)
idle
idle
idle
idle
idle
idle
1st I/Ooperation
I/Oends
2nd I/Ooperation
I/Oends
3rd I/Ooperation
CPU
Disk
12
idle idle idleDisk
CPU
Disk idle idle
idle
idleJob1 Job1
Job1 Job1Job2
Job2
Job2
Критериуми за доделување на
процесите на процесорот� Искористеноста на процесорот (CPU utilization) (однос на корисното време врз вкупно потрошеното време)
� Пропусна моќ на системот (throughput) (бројот на задачи по единица време кои системот ги извршува)
� Време потребно за завршување на процесот (turnaround time) (просечен временски период од моментот кога
13
time) (просечен временски период од моментот кога задачата е поставена во системот до моментот на завршување)
� Време на чекање (waiting time) (временски период од моментот кога процесот влегол во редица на чекање се до моментот кога бил распореден за извршување)
� Време на одѕив (response time) (времето од издавање на команда до добивање на резултат)
Кратко-рочно распоредување
running
schedule wait for event
terminated
14
ready blocked
created
schedule
preempt
event done
wait for event
Кратко-рочно распоредување
� Шемата на извршувањето на процесите се состои и измена на ЦПЕ циклусот и чекање на В/И уреди
� Процесите подготвени за извршување се чуваат во ready(run) редица
� Краткорочниот распоредувач ги распоредува процесите одready редицата кога ЦПЕ е слободен
15
ready редицата кога ЦПЕ е слободен
Начини на распоредување
� Без испразнување (nonpreemptive)(Windows 3.1)
� Состојба на извршување се додека процесот на заврши
16
� Од состојба на извршување – во чекање (В/И побарување или чека на завршување на процесот –дете)
Начини на распоредување
� Со испразнување (preemptive)
� Процесот што во тој момент се извршува, може да биде прекинат и ставен во состојба на подготвеност од страна на ОС (прекин)
� Од состојба на чекање – во подготвеност (В/И барање завршено)
17
завршено)� Овозможува подобри услови за сите процеси од причина што не постои процес кој може да го монополизира процесорот
� Пософистициран пристап, со многу можности, но и понеефикасен поради губење време на промена на контекст на процесите (context switching) (синхронизациони проблеми на два процеси, потребен е дополнителен хардвер)
Мерки
� Време на чекање: просек од Twait
� Овој параметар е под системска контрола
� Пропусност - Throughput
18
� Бројот на комплетираните процеси во временска единица
� Искористување� Дел од времето ЦПЕ е искористен
Мерки: Време на одзив
(Response time)
� Време на одзив претставува средна вредност од џоб-те ’Tresp
19
Job arrives/becomes ready to run Starts running
Job terminates/blocks waiting for I/O
Twait Trun
Tresp
Tresp= Twait + Trun
Алгоритми за доделување на
процесорот
� Обично се засновува врз два параметри :
� Користење на ЦПЕ = (време во кое ЦПЕ работел на програмата / вкупно време на работа)
� Време на одѕив = Просек (време на завршување -време на почнување)
� Поделба на алгоритми според намена на системот:
20
� Поделба на алгоритми според намена на системот: системи со групна обработка, интерактивни системи и системи со мултипрограмирање.
� Ќе ги разгледаме следниве:
� First come, first served (FCFS)
� Shortest Job First (SJF)
� Shortest Time Remaining Next (STRN)
� Round Robin (RR)
Пример
21
Прв пристигнал – прв услужен
(FCFS)
22
� Секој процес се придружува на крајот од редицата на подготвени� Кога тековниот процес ќе престане да се извршува, се бира следен од редицата за извршување
� Може да се случи кус процес долго да чека на извршување� Дава предност на ЦПЕ доминантни, В/И процесите мора да чекаат додека процесите поврзани со ЦПЕ не завршат - ефект на конвој во редица за В/И
� FCFS е без испразнување (процес држи ЦПЕ додека на заврши или побара В/И) (не е погоден за интерактивни системи)
Нареден најкус процес (SJF)
23
� Политика на неиспразнување
� Се избира оној процес кој има најмало очекувано време на
обработка (треба да се изврши процена)
� Секако дека дава предност и ги фаворизира кусите
процеси, а ако двата се со иста должина се користи FCFS
Најкусо преостанато време
24
� STRN – Shortest Time Remaining Next
� Верзија на SFJ со политика на испразнување
� Нов процес дојден во редот може да е покус од тој што
се опслужува и ЦПЕ се доделува на новиот процес, а
подоцна се довршува претходниот (п.2 прекинат од п.3)
� Мора да постои оценка за времето на процесирање
Кружна патека (Round-robin)
25
� Сличен со FCFS но со додадено испразнување (preepmptive)
� Употребува испразнување врз основа на часовен сигнал одреден временски квантум
� Однапред се дефинира интервал на време за кое може да биде користен процесорот од даден процес (10 — 100 m sec)
� Средно време на чекање често е доста долго
Следен со највисок
коефициент на одѕив
26
� Избери го следниот процес што има најмал количник (највисок коефициент на одѕив) :
Распоредување со приоритети
(PS)
� SJF е специјален случај на PS
� Секој процес добива приоритет кој се
пресметува според
27
пресметува според� Врем. ограничување, мемориски побарувања, број на отворени датотеки, време на опслужување (ЦПЕ, В/И);
� Политика (тип на процес, вложени финансии…)
Распоредување со приоритети
(PS)
� Наједноставно: 1/f каде што f е предвиденото време на користење на процесорот од страна на процесот� Поголема должина на процесот - помал приоритет
� Класи на приоритети (редици на чекање со ист приоритет) и на пример RR во секоја класа
28
на пример RR во секоја класа
� За да не изгладнат процесите (подготвени, но не им се доделува ЦПЕ) во класите со понизок приоритет потребно е динамичко менување на приоритетите, т.е. шетање на процесите од една во друга класа (според aging)
Повеќекратни редови за чекање
(multiple queues)
29
� Класи со различни приоритети
� Процес од повисока класа – еден квантум на извршување, пониска-два и така понатаму, со искористувањето се менува и класата
Повеќекратни редови за чекање
(multiple queues)
Пример
� Процес кој треба да се пресметува 100 квантуми континуирано.
30
� Иницијално му се доделува 1 квант, па се испразнува, потоа 2 кванта, па 4,8,16,32,64, иако му требаат само 37 за да заврши.
� Потребни се само 7 испразнувања наместо 100 со RR-алгоритамот
Едноставна проценка на време на
извршување (Aging)� Следното време на опслужување со ЦПЕ на еден процес може да се предвиди според времето на опслужување на процесот во минатото.
� Нека Tn е должина на n-то опслужување на тој процес (најсвежа информација, скора историја - recent history), Fn+1 е нашата предвидена вредност за следната должина на процесот (Fn е историја од минатото – past
31
Fn+1 е нашата предвидена вредност за следната должина на процесот (Fn е историја од минатото – past history)
� Дефинираме рекурентна врска:
Fn+1= α ·Tn + (1- α) ·Fn,
(α го контролира влијанието на скората и мината историја)
Едноставна проценка на време на
извршување (Aging)
� Проценка на времетраење на следно извршување на процес: Нека имаме две претходни вредности за времето на извршување на еден процес, T0 i T1
F1=T0, F2= α ·T1 + (1- α) ·F1,
FK = α ·TK-1 + (1- α) ·FK-1, K=3, 4, ...
32
за α= 1/2 (скората и историјата од минатото имаат еднаква тежина)
T0, T0 /2+T1/2, T0 /4+T1/4+ T2/2, T0 /8+ T1/8 + T2 /4+ T3/2,...
(историјата се помалку влијае врз иднината)
� SJF е единствен оптимален (според времето на чекање) кога сите процеси доаѓаат во ист момент, во спротивно не е
Распоредување со извлекување
(Lottery scheduling)� На секој процес му се доделуваат тикети за разни системски ресурси (пр. ЦПЕ).
� Кога треба да се избере процес за извршување, случајно се избира тикет и процесот кој го има го добива ресурсот
33
� Повеќе тикети поголема шанса за избирање
� Ако од 100 постоечки тикети еден процес има 20 –20% процесорско време
� Тикетите може да се доделуваат на сродни процеси и динамичко да им се менува бројот
Подеднакво распоредување
(Fair-Share Scheduling)
� Секој процес се распоредува без оглед на корисникот кој е негов сопственик.
� За да се избегне ситуација кога еден корисник има повеќе процеси (пр. 2 корисника, 1 со 1 процес, другиот со 9) да добива поголемо процесорско време
� Се врши распоредување според корисниците
34
� Корисник 1: A,B,C,D Корисник 2: E
� Со RR алгоритамот и 50% ЦПЕ време за секого:
� A E B E C E D E A E B E C E D E
� Ако на корисникот 1 има доделено 2-пати поголемо ЦПЕ време :
� A B E C D E A B E C D E
Распоредување во
Real Time системи� Системи со процеси во реално време:
� Hard time (каде што дадените временските рокови треба да се почитуваат)
� Soft time (пречекорувањето на ограничувањето не е посакувано, но може да се толерира)
� При појава на настан распоредувачот избира процес при што сите временски лимити мора да бидат задоволени
� Начин на појавување на настани
35
� Начин на појавување на настани� Периодични (се појавуваат во регуларни интервали)
� Апериодични (се појавуваат непредвидливо)
� Системот може да врши распоредување ако е задоволен условот:
� Каде што постојат m процеси, и се појавува настанот i со периода Pi кој бара Ci секунди од процесорското време
1
1
m
i
i i
C
P=
≤∑
Распоредување на нишки
� Распоредувањето е многу слично како кај процесите:
� Може да биде со или без испразнување� Може да се користи било кој алгоритам за распоредување
(FCFS, SJF, RR, …)
� Нишките (не процесите) сега можат да бидат во некоја редица за чекање, може да бидат блокирани или да работат
36
редица за чекање, може да бидат блокирани или да работат итн.
Но:
� Еден добар распоредувач треба да ги земе в предвид односите меѓу нишките и процесите� Дво-нивоовско распоредување – распоредувај процеси, и во рамките на секој процес распоредувај нишки
Добро се изведува во повеќе процесорски системи
Распоредување на нишки
37
Можен начин за распоредување на нишки од корисничко ниво� 50-msec процесен квантум� Нишката се извршува 5 msec/CPU burst
Распоредување на нишки
38
Можно распоредување на нишки од ниво на јадро� 50-msec процесен квантум� Се извршува 5 msec/CPU burst
Управување со процеси во UNIX
� Основни функции за креирање, полнење на програмата, завршување …� fork(), exec(), wait(), exit()
Сигнали
39
� Сигнали� kill()
� Контрола� ptrace(), nice(), sleep()
fork() - UNIX
� Создава дете - процес� Два различни процеси извршуваат копија од еден ист програм
40
� Детето процес наследува од таткото:
� Идентични копии на променливите и меморијата (адресен простор)
� Идентични копии на сите ЦПЕ регистри (освен еден)
fork() - UNIX
� Двата процеса (таткото и детето) се извршуваат од истата точка по враќањето на повикот fork():� За детето - процес, fork() враќа 0 (PID за детето)
За таткото - процес, PID е различен од 0
41
� За таткото - процес, PID е различен од 0
� Едноставна имплементација на fork():� Алоцира меморија за детето - процес� Ја копира меморијата и ЦПЕ регистрите од таткото во детето-процес
� Скапа операција!
Користење на fork()
� Во процесот - татко:
main()…int pid = fork(); // create a childif (pid == 0) { // child continues here…}
42
…}else { // parent continues here…}
� Кодот на таткото и детето се во иста „програма“
� Детето-процес ги наследува сите отворени датотеки и мрежни конекции
Полнење на програма exec()
� Системскиот повик exec() овозможува процесот да полни различна програма и започне нејзиното извршување
� Тој овозможува процесот да зададе аргументи (argc) и низа на стрингови (argv)
� Ако повикот е успешен� Работи истиот процес !!
43
� Работи истиот процес !!
� Но работи друга програма !!
� Две можности за имплементација:
� Процесот што го извршил повикот exec() го препишува тековниот мемориски сегмент со нови вредности ( пример. Командата /bin/ls – листење на директориум)
� Да се алоцира нов мемориски сегмент, наполни со новите вредности, и деалоцира стариот)
Користење на exec()
� Во процесот- татко:
main()
…
int pid = fork(); // create a child
if (pid == 0)
{ // child continues here
44
{ // child continues here
exec(“program”, argc, argv0, argv1, …);
}
else { // parent continues here
…
}
Во 99% случаи, се користи еxec() по повикот fork()
Нормално завршување: exit()� По завршувањето, програмата извршува системски повик exit()
� Овој системски повик:� Го зема резултатот вратен од програмата како аргумент
45
аргумент� Ги затвора сите отворени датотеки, линкови итн.
� Ја деалоцира меморијата� Ги деалоцира повеќето од структурите на ОС што ги подржувале процесот
� Проверува дали таткото – процес е жив:
� Процесот – дете ја чува резултантната вредност додека таткото не ја побара, не умира туку влегува во zombie/defunct статус
Контрола на процесите� ОС мора да вклучува повици за некои посебни контроли врз процесите
� Манипулација со приоритетите:� nice, кој задава (почетен приоритет)� Приоритетот во UNIX опаѓа со користењето на ЦПЕ-то
46
� Подршка за дебагирање:� ptrace, овозможува контролата на процесот да биде под друг процес
� Другиот процес тогаш може да сетира точки на прекин, испита регистри, итн.
� Аларм и време:� sleep го става процесот во ред за чекање одреден број секунди, а at го активира во одредено време
Сигнали
� Сигналите служат да се извести процесот дека се случил некој настан
� Синхрони сигнали (се доделуваат на
47
� Синхрони сигнали (се доделуваат на самиот процес што ја извел операцијата што предизвикала сигнал):� Погрешен пристап до меморијата, погрешна инструкција
� Делење со 0
Сигнали
� ОС ги третира некои настани како асинхрони сигнали (се праќаат од друг процес или од корисникот):� <Ctrl-C>,� Аларми
� Сигнали имаме и при контрола на процесите, пример kill -9
48
� Процесот може (trap во UNIX):� Да отиде на предодредениот водич на сигналот� игнорира сигналот (опасно)� Корисникот сетира свој водич на сигналот (акција по сигналот)
Сирачиња и зомби
� Сирачиња� Процес чиј родител завршил.
� Сирачињата се наследени од init
� Ставката во процесната табела веднаш се ослободува кога сирачето завршува.
49
� Зомби� Процесот кој повеќе не постои, но се уште завзема место во процесната табела
� Еквивалентно: Процесот кој завршил, но чиј родител постои и чека на потврда за завршување на детето-процес
Демони
� Се дисконектира од родителот и живее независно
� Малку потешко да се направи правилно� Примери:
� inetd
50
� inetd
� atd
� Nfsd
ВЕЖБИ (Процеси и распределување на процеси) 1
� Дадено е множество на процеси, со големината на CPU-burst времиња (u msec) и со приоритети:� Process Burst Time Priority
� P1 10 3
� P2 1 1
� P3 2 3
� P4 1 4
P5 5 2
51
� P5 5 2
� Процесите наидуваат по следен редослед сите приближно во време 0 и во следна низа P1, P2, P3, P4, P5� a) да се нацртаат Gannt-овите дијаграми за овие процеси за случаите FCFS, SJF, „non-preemptive priority“ (помал број поголем приоритет), RR (quantum=1) на алгортмите за распоредување
� b) Да се пресмета „tournaround“ време за секој процес и средно за сите наведени алгоритми
� c) Да се пресмета време на чекање за секој процес и средно време на чекање за сите наведени алгоритми
� d) Кој алгоритам има најмало време на чекање
FCFSProcess Burst Time Priority
P1 10 3P2 1 1
P3 2 3
P4 1 4P5 5 2
52
a. Turnaround time b) Waiting time
TA(P1) = 10 W(P1)=0
TA(P2) = 11 W(P2)=10
TA(P3) = 13 W(P3)=11
TA(P4) = 14 W(P4)=13
TA(P5) = 19 W(P5)=14
TAavg = 13.4 Wavg=9.6
RR=1Process Burst Time Priority
P1 10 3
P2 1 1
P3 2 3P4 1 4
P5 5 2
53
a. Turnaround time b) Waiting timeTA(P1) = 19 W(P1)=4+2+1+1+1=9TA(P2) = 2 W(P2)=1TA(P3) = 7 W(P3)=2+3=5TA(P4) = 4 W(P4)=3TA(P5) = 14 W(P5)=4+2+1+1+1=9TAavg = 9.2 Wavg=5.4
PriorityProcess Burst Time Priority
P1 10 3
P2 1 1
P3 2 3P4 1 4P5 5 2
54
a. Turnaround time b) Waiting time
TA(P1) = 16 W(P1)=6
TA(P2) = 1 W(P2)=0
TA(P3) = 18 W(P3)=16
TA(P4) = 19 W(P4)=18
TA(P5) = 6 W(P5)=1
TAavg = 12 Wavg=8.2
SJFProcess Burst Time Priority
P1 10 3
P2 1 1P3 2 3P4 1 4
P5 5 2
55
a. Turnaround time b) Waiting time
TA(P1) = 19 W(P1)=9
TA(P2) = 1 W(P2)=0
TA(P3) = 4 W(P3)=2
TA(P4) = 2 W(P4)=1
TA(P5) = 9 W(P5)=4
TAavg = 7 Wavg=3.2
Вежба 2� Дадена е секвенца од 4 процеси кои во време t=0 влегле во „ready-queue“ состојба по следниов редослед со следните „burst-time“ времиња.
� Process Burst Time
� P1 6
� P2 3
� P3 1
56
� P4 7
� За RR алгоритамот со quantum=7, да се нацрта Gannt-овдијаграм и да се одреди средно „turnaround“ време и средно време на чекање
� Колку измени на контексти се случиле и ако contex switch=0.01 колку е траењето на обработка на сите 4 процеси?
RR=7Process Burst Time
P1 6 P2 3
P3 1 P4 7
57
a. Turnaround time b) Waiting time
TA(P1) = 6 W(P1)=0
TA(P2) = 9 W(P2)=6
TA(P3) = 10 W(P3)=9
TA(P4) = 17 W(P4)=10
TAavg = 10.5 Wavg=6.25
Ttotal = Tprocesses + NxTcsw=17+3*0.01=17.03
RR=2Process Burst Time P1 6 P2 3
P3 1
P4 7
58
a. Turnaround time b) Waiting time
TA(P1) = 14 W(P1)=0+5+3=8
TA(P2) = 10 W(P2)=2+5=7
TA(P3) = 5 W(P3)=4
TA(P4) = 17 W(P4)=5+3+2=10
TAavg = 11.5 Wavg=7.25
Ttotal = Tprocesses + NxTcsw=17+9*0.01=17.09
Вежба 3
� За даден случај да се определи средно„turnaround“ и време на чекање за SJF и
STRN
59
� Process Arrival Time Burst Time
� P1 0.0 7
� P2 2.0 4
� P3 4.0 1
� P4 5.0 4
SJFProcess Arrival Time Burst TimeP1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
60
a. Turnaround time b) Waiting time
TA(P1) = 7 W(P1)=0
TA(P2) = 12-2=10 W(P2)=8-2=6
TA(P3) = 8-4=4 W(P3)=7-4=3
TA(P4) = 16-5=11 W(P4)=12-5=7
TAavg = 8 Wavg=4
Ttotal = Tprocesses + NxTcsw=16+3*0.01=16.03
STRNProcess Arrival Time Burst TimeP1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
61
a. Turnaround time b) Waiting time
TA(P1) = 16 W(P1)=0+9=9
TA(P2) = 7-2=5 W(P2)=0+1=1
TA(P3) = 5-4=1 W(P3)=0
TA(P4) = 11-5=6 W(P4)=7-5=2
TAavg = 7 Wavg=3
Ttotal = Tprocesses + NxTcsw=16+5*0.01=16.05