Veleučilište u Rijeci Dodjela procesora (eng. CPU scheduling)
Pojmovi Program Statični niz instrukcija Proces Program u izvođenju Dretva (thread) Niz instrukcija koje se izvode Po potrebi dretve dijelimo na manje dijelove koje nazivamo nit (fiber) OperacijskiSustavi ú stranica2
Višezadaćnost Radi ostvarenja višezadaćnosti mora postojati mogućnost da se raspodijeli vrijeme procesora među zadaćama koje se izvršavaju u danom vremenu pomoć algoritmi dodjele vremena Kod jednoprocesorskog sustava samo jedan proces može biti aktivan, dok drugi procesi prihvaćeni na obradu su u različitim stanjima (pripravan, čeka i sl.). Cilj višeprocesnog sustava je praktički uvjek zaposliti procesor obradom korisničkih procesa. Aktivan proces se izvodi sve do trenutka kada mora čekati na neki događaj (ulazno/izlaznu operaciju, poruku od nekog drugog procesa ili ga jednostavno suspendira sistemski sat). OperacijskiSustavi ú stranica3
Raspoređivanje Bez prekidanja procesa bez pretpražnjenja (eng. nonpreemptive scheduling) procesor se može oduzeti samo od procesa koji je završio aktivnost ili čeka na neki resurs Sa prekidom procesa sa pretpražnjenjem (eng. preemptive scheduling) procesor se može oduzeti procesu koji nije završio aktivnost i nije blokiran hardwareska metoda sata (timer) OperacijskiSustavi ú stranica4
Procesorski i O/I ciklusi Učinkovitost algoritma za dodjelu procesora zasnovana je na sljedećem svojstvu procesa: proces koji se izvodi sastoji se od dijela proračuna (CPU burst ili CPU cycle), a potom ulazno/izlazne operacije. Ovi ciklusi se izmjenjuju do završetka procesa. load store add store read from file čekaj na U/I load increment index load write to file čekaj na U/I load sub store add store read from file čekaj na U/I proračun U/I ciklus proračun U/I ciklus proračun U/I ciklus OperacijskiSustavi ú stranica5
Kriteriji dodjele procesora Prije nego se pristupi odabiru algoritma za odabir procesa iz reda pripravnih koji će dobiti procesor na korištenje prvo je potrebno odrediti kriterije na osnovi kojih će se uspoređivati različiti algoritmi: 1.Iskoritivost procesora (CPU utilization). Namjera je svih projektanata operacijskih sustava držati procesor što je moguće više zaposlenim. Iskoristivost procesora je između 0 i 100%. U realnim sustavima ona varira između 40% kod slabije opterećenih sustava do 90% kod jako opterećenih računarskih sustava. 2.Propusnost (Throughput). Procesor dok je zaposlen izvodi proračun. Jedna od mjera zaposlenosti procesora je i broj procesa koje on obradi u jedinici vremena. Za napomenuti je da kada se obrađuju relativno dugi procesi propusnost može biti svega jedan proces svakih desetak minuta, a za kratke procese propusnost može iznositi i desetak procesa u sekundi. OperacijskiSustavi ú stranica6
Kriteriji dodjele procesora (2) 3. Vrijeme proračuna (Turnaround time). S aspekta svakog procesa značajna je karakteristika koliko je vremena potrebno procesoru da obradi taj proces. Tako se vremenski interval od trenutka prihvaćanja procesa na obradu do trenutka završetka njegove obrade naziva vrijeme proračuna. Ono je suma vremena potrebnog da proces bude prihvaćen na obradu, vremena potrošenog za proračune i ulazno izlazne operacije i vremena provedenog u čekanju. 4. Vrijeme čekanja (Waiting time). Algoritmi za dodjelu procesora ne utječu na vrijeme potrebno za proračun i objavljenje ulazno/izlaznih operacija. Oni jednostavno utječu samo na vrijeme koje proces provodi u redu pripravnih procesa. Zato se vrijeme čekanja definira kao ukupno vrijeme koje proces provede u redu pripravnih procesa. OperacijskiSustavi ú stranica7
Kriteriji dodjele procesora (3) 5. Vrijeme odziva (Response time). Kod interaktivnih sustava vrijeme odziva možda i ne predstavlja najbolji kriterij za vrednovanje algoritama za dodjelu procesora. Obično proces nakon kraćeg izvođenja daje korisniku neke međurezultate koje korisnik analizira dok procesor nastavlja obradu, zatim korisnik unosi neke podatke s kojima utječe na daljini tijek obrade, dobiva nove međurezultate itd. Očito je da je korisniku značajno da proces u što kraćem vremenu prikaže prve rezultate obrade pa se i zato definira vrijeme odziva kao vrijeme proteklo od trenutka kada je korisnik započeo proces do trenutka kada je proces dao prve rezultate. Ovo je znatno bolji kriterij za vrednovanje algoritama dodjele procesora od vremena odziva koje je obično limitirano brzinom ulazno/izlaznih uređaja. Cilj: optimizacija sustava - postići maksimalnu iskoristivost procesora i propusnost uz što kraće vrijeme proračuna, vrijeme čekanja i vrijeme odziva OperacijskiSustavi ú stranica8
Algoritmi za dodjelu procesora 1. FCFS (First Come First Served) Najjednostavniji algoritam - odabere se prvi proces iz reda pripravnih procesa te se njemu dodjeli procesor. Novi proces smješta se na kraj reda (tail), a procesor uzima proces na izvršavanje sa glave reda (head). Primjer: proces potrebno vrijeme obrade P 1 24 P 2 3 P 3 3 OperacijskiSustavi ú stranica9
FCFS (First Come First Served) P 1, P 2, P 3 P 1 0 24 27 30 Prosječno vrijeme čekanja iznosi (0 + 24 + 27)/3 = 17 jedinica vremena P 2 P 3 P 2, P 3, P 1 P 2 P 3 P 1 0 3 6 30 Prosječno vrijeme čekanja iznosi (0 + 3 + 6)/3 = 3 jedinica vremena OperacijskiSustavi ú stranica10
Algoritmi za dodjelu procesora 2. SJF (Shortest Job First) procesor se dodjeljuje onom procesu koji ima najkraći sljedeći interval proračuna Ukoliko dva procesa imaju jednak sljedeći interval proračuna odabir između njih dva se izvodi prema FCFS algoritmu Primjer: proces potrebno vrijeme obrade P1 6 P2 8 P3 7 P4 3 OperacijskiSustavi ú stranica11
SJF (Shortest Job First) P 4 P 1 P 3 P 2 0 3 9 16 24 SJF (0 + 3 + 9 + 16)/4 = 7 P 1 P 2 P 3 P 4 FCFS (0 + 6 + 14 +21)/4 = 10.25 0 6 14 21 24 najvjerojatnije optimalni algoritam sa stajališta minimalnog vremena čekanja. u praksi nemoguće implementirati. Razlog je nemogućnost poznavanja dužine sljedećeg intervala proračuna trajanje procesa OperacijskiSustavi ú stranica12
Procjena dužine sljedećeg intervala proračuna Za procjenu dužine sljedećeg intervala proračuna obično se koristi eksponencijalna razdioba od prethodnih mjerenih intervala proračuna. Neka je t n trajanje n-tog intervala proračuna, τ n+1 procijenjeno trajanje n+1 intervala, a α konstanta, 0 α 1, tada je: trajanje proračuna t n 6 4 6 4 13 13 13... procjena τ n 10 8 6 6 5 9 11 12... 14 τ n + 1 = α tn + 1 α) ( τ n trajanje proračuna 12 10 8 6 4 stvarno procjena 2 0 vrijeme OperacijskiSustavi ú stranica13
SJF (Shortest Job First) bez pretpražnjenja Primjer: Proces Vrijeme nailaska Vrijeme izvršavanja P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (nonpreemptive) P 1 P 3 P 2 P 4 0 3 7 8 12 16 Prosječno vrijeme čekanja = (0 + 6 + 3 + 7)/4 = 4 OperacijskiSustavi ú stranica14
SJF (Shortest Job First) sa pretpražnjenjem Proces Vrijeme nailaska Vrijeme izvršavanja P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (preemptive) P 1 P 2 P 3 P 2 P 4 P 1 0 2 4 5 7 11 16 Prosječno vrijeme čekanja = (9 + 1 + 0 +2)/4 = 3 OperacijskiSustavi ú stranica15
SJF - Dodjela procesora prema prioritetima (Priority Scheduling) Kod SJF prioriteti se dodjeljuju na osnovi procijenjene dužine sljedećeg intervala proračuna duži procesi imaju manji prioritet i obrnuto Primjer: proces vrijeme proračuna prioritet P 1 10 3 P 2 1 1 P 3 2 3 P 4 1 4 P 5 5 2 0 P 2 1 P 5 P 1 P 3 P 4 6 16 18 19 OperacijskiSustavi ú stranica16
SJF - Dodjela procesora prema prioritetima (Priority Scheduling) Problem: Ukoliko je u sustavu stalno prisutan veći broj procesa s većim prioritetom oni će praktički uvijek dobivati procesor na korištenje dok procesi s manjim prioritetom neće dobiti priliku za korištenjem procesora. Tako mogu procesi s najmanjim prioritetom beskonačno čekati. Ovaj efekt primijećen je opterećenim u računarskim sustavima i nazvan je izgladnjivanje (starvation). Postoje neprovjereni podaci da su u procesu 1973. godine iskopčanja računarskog sustava IBM 7094 na MIT otkriveni procesi započeti 1967. godine.!!! Rješenje: u starenju procesa (aging). Prioritet procesa tijekom njegovog boravka u redu pripravnih procesa raste. Tako npr. svakih 15 minuta prioritet svih procesa koji nisu u tom intervalu dobili pravo korištenja procesora povećava se za jedan. U ovu svrhu potrebno je deskriptoru procesora dodati jedno polje u koje se upisuje da li je proces bio aktiviran u prethodnom vremenskom intervalu. OperacijskiSustavi ú stranica17
Round-Robin (RR) algoritam razvijen za sustave s vremenskom podjelom poslova (time sharing). U osnovi zasnovan je na algoritmu FCFS ali je dodano vremensko ograničenje u korištenju procesorskog vremena. U ovakvim računarskim sustavima definira se kvant vremena (vremenski interval obično između 10 do 100 ms). Procesor se dodjeljuje svakom procesu iz reda pripravnih maksimalno za jedan vremenski kvant. Ukoliko proces u dodijeljenom mu vremenskom intervalu završio obradu ili zatražio ulazno/izlaznu operaciju, oduzelo bi mu se pravo korištenja procesora i stavlja ga se na kraj reda pripravnih procesa. OperacijskiSustavi ú stranica18
Round-Robin (RR) algoritam (2) Primjer: Proces Vrijeme izvođenja Vremenski kvant P 1 53 20 P 2 17 P 3 68 P 4 24 P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162 Najbolje vrijeme odaziva, veće srednje vrijeme završetka procesa Pretpostavlja se da dispečer trenutno izmjenjuje kontekst OperacijskiSustavi ú stranica19
Round-Robin (RR) algoritam (3) Potreban sklopovski prekid u redovitim vremenskim intervalima (timer) Kako ispravno odrediti vremenski interval prekida: a) Ako je prevelik vrijeme odziva je loše b) Ako je premali iskoristivost je mala (vrijeme konteksta je postaje sve utjecajnije) Prednosti RR algoritma: a) Osigurana pravednost b) Uz pravilno osiguranu duljinu vremenskog intervala moguće je iskorištenje do maksimalno 90% vremena procesora Nedostatak je ako poslovi imaju približno isto vrijeme za izvršavanje tada vrijeme izmjene postaje veliko i postavlja se upitno smisao korištenja strategije (rijetki uglavnom industrijski primjeri) OperacijskiSustavi ú stranica20
Round-Robin (RR) algoritam (4) Ostvarujemo balans takav da se 10% vremena troši na zamjenu konteksta Na Windows XP operacijskom sustavu vremenski interval je 20 ms buduci da je cilj osigurati što bolji odziv korisniku preko sučelja. Na Windows 2000 operacijskom sustavu vremenski interval je 120 ms buduci da nam je cilj što više vremena dati serverskim aplikacijama kako bi ubrzali odgovor poslužitelja. izmjena konteksta P 1 P 2 12.1 0 7 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 1 0 1 2.1 3.2 4.3 5.4 6.5 7.6 8.7 9.8 10.9 12 13.1 OperacijskiSustavi ú stranica21
Dodjela procesora s više redova pripravnih procesa U svakom većem računarskom sustavu istovremeno se izvode različiti procesi više redova pripravnih procesa npr. interaktivni i pozadinski procesi Svaki red ima različite algoritme za dodjelu procesora ili neki koriste iste algoritme ali s različitim parametrima. Npr. dva ili više redova mogu koristiti RR algoritam ali s različitim vremenskim kvantom. Redovi su poredani prema prioritetima najveći prioritet sistemski procesi interaktivni procesi interaktivno editiranje teksta grupna obrada C P U najmanji prioritet studentski procesi OperacijskiSustavi ú stranica22
Windows XP Windows XP uses a priority-based preemptive scheduling algorithm. The dispatcher uses a 32-level priority scheme to determine the order of thread execution, divided into two classes - variable class from 1 to 15 and real-time class from 16 to 31, ( plus a thread at priority 0 managing memory. ) There is also a special idle thread that is scheduled when no other threads are ready. Win XP identifies 7 priority classes ( rows on the table below ), and 6 relative priorities within each class ( columns. ) Processes are also each given a base priority within their priority class. When variable class processes consume their entire time quanta, then their priority gets lowered, but not below their base priority. Processes in the foreground ( active window ) have their scheduling quanta multiplied by 3, to give better response to interactive processes OperacijskiSustavi in the foreground. ú stranica23
Solaris OS OperacijskiSustavi ú stranica24
LINUX Modern Linux scheduling provides improved support for SMP systems, and a scheduling algorithm that runs in O(1) time as the number of processes increases. The Linux scheduler is a preemptive priority-based algorithm with two priority ranges - Real time from 0 to 99 and a nice range from 100 to 140. Unlike Solaris or XP, Linux assigns longer time quantums to higher priority tasks. OperacijskiSustavi ú stranica25
Višeprocesorski sustavi Dodjela procesora je kompleksnija potrebna sinhronizacija procesora Simetrično komunikacija između procesora Asimetrično master/slave procesori OperacijskiSustavi ú stranica26
Sustavi u realnom vremenu (eng. realtime systems) Hard (engl. embedded computing) izvršavanje u intervalu proces sa informacijom za koje vrijeme mora biti obavljen Soft - kritični zadaci dobivaju prioritet nad drugim zadacima na Slici interval odaziva OperacijskiSustavi ú stranica27