1 / 22

8. přednáška 16. 11. 2011 dynamické priority prioritní RR zpětná vazba

8. přednáška 16. 11. 2011 dynamické priority prioritní RR zpětná vazba srovnání plánovacích politik plánování – multiprocesor, RT správa procesů fronty služby správce procesů ( create ) Studijní materiály najdete na adrese: http://www.uai.fme.vutbr.cz/~vdumek/.

dewitt
Download Presentation

8. přednáška 16. 11. 2011 dynamické priority prioritní RR zpětná vazba

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8. přednáška • 16. 11. 2011 • dynamické priority • prioritní RR • zpětná vazba • srovnání plánovacích politik • plánování – multiprocesor, RT • správa procesů • fronty • služby správce procesů (create) • Studijní materiály najdete na adrese: • http://www.uai.fme.vutbr.cz/~vdumek/

  2. Dynamické priority procesů - několik front procesů s klesajícími prioritami, penalizace dlouhých procesů P(RQ0) > P(RQ1) > … > P(RQn) - nový proces se vloží do fronty RQ0, pokud tento proces spotřebuje svoje časové kvantum, vrátí se do fronty RQ1, při dalším spotřebování celého kvanta se vrací vždy do méně prioritní fronty až skončí ve frontě RQn - procesy vázané na I/O budou zůstávat ve frontách s vyšší prioritou, procesorově vázané procesy budou prioritně klesat - dispečer vybírá z fronty RQi pouze za předpokladu, že je fronta RQ(i-1) až RQ0 prázdná - v každé frontě se uplatňuje politika FCFS, pouze ve frontě s nejnižší prioritou je RR - při pevném časovém kvantu bude dlouhé zpracování delších procesů, časové kvantum může exponenciálně narůstat podle hloubky fronty připravených procesů RQi má časové kvantum q = 2i-1 - delší procesy mohou stále stárnout, lze kombinovat se změnou priority (zrání procesu)

  3. q = 8 q = 16 q = 32 Dynamické priority procesů

  4. Prioritní RR Dynamické priority procesů q=1 q=2(i-1)

  5. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 A 0 0 1 B 0 1 2 3 4 5 C 0 1 2 3 D 0 1 2 3 4 E 1 0 Zpětná vazba (Feedback) - předem se neznají časy, které budou procesy potřebovat, penalizují se dlouho běžící procesy, dojde-li k preempci z důvodu přečerpání q, sníží se priorita, pro každou prioritu je jedna fronta, nad každou frontou běží RR, nad poslední FCFS

  6. Srovnání plánovacích politik – použité procesy

  7. Srovnání plánovacích politik 20 0 5 10 15 A FCFS B C D E A B RR q=1 C D E A B RR q=4 C D E A B C SPN D E A B C SRT D E A B Feedback q=1 C D E

  8. Srovnání plánovacích politik FCFS (First Come First Served) – nejdéle čekající proces z připravených, nonpreemptive, proces se musí ukončit sám (zvýhodnění procesorově orientovaných), snadná implementace Round Robin (cyklické plánování) – výběr stejný jako u FCFS, nonpreemptive, předem stanovené kvantum (desítky ms, při delším kvantu degradace na FCFS), favorizuje procesorově vázané, virtuální RR (pomocná fronta obsluhovaná prioritně, procesy běží pouze po zbytek časového kvanta), prioritní RR SPN (Shortest Process Next) – proces s nejmenší očekávanou dobou potřeby procesoru, nonpreemptive, varianta SRT (Shortest First) preemptivní, jakmile se objeví kratší, dojde k přerušení, zvýhodnění V/V vázaných procesů, problém odhadu potřeby procesoru, exponenciální průměrování (aproximace budoucnosti z historie, přednost novým procesům), znevýhodnění dlouhých procesů Feedback (zpětná vazba) – neznáme délky procesů, penalizace dlouho běžících procesů, pro každou prioritu jedna fronta, výběr pomocí RR, poslední fronta pomocí FCFS

  9. Plánování běhu procesů - multiprocesor Multiprocesor – architektura ASMP (master/slave): klíčové funkce jádra běží vždy na jednom konkrétním procesoru, master odpovídá za plánování, slave žádá o služby mastera, přetížený master (dedikace) se může stát úzkým místem systému, SMP: všechny procesory si jsou rovny, funkce jádra mohou běžet na libovolném procesoru, vyžaduje se podpora vláken v jádře, vlákno běží nezávisle na zbytku procesu, aplikace je potom sada vláken pracujících paralelně do společného adresního prostoru, vlákna běžící na různých procesorech dramaticky zvyšují výkonnost systému, existence společných front procesů pro jednotlivé procesory, fronty zásobují bank procesorů, plánovací politiky nemají takový význam, zvýšení výkonu zavedením sledů, sledům se přiřazují jednotlivé procesory, zátěž se rozkládá mezi procesory náhodně, není potřeba centrální dispečer (procesory se řídí samostatně), předběhnutá vlákna nemusí nutně pokračovat na stejném procesoru, pokud má každý procesor svoji frontu, tak se používá dynamické vyvažování (Load Balancing), v systémech s globální frontou není dynamické vyvažování potřebné, sledy se nemohou spustit paralelně, afinita vlákna k procesoru (použije se procesor, na kterém vlákno již běželo, v cache mohou být nějaké údaje z minulého běhu)

  10. Plánování běhu procesů – Real Time RT – řízení technologií, telekomunikace, robotika, vojenské systémy velení, řízení letového provozu, závislost nejen na logických výsledcích výpočtu, ale i na běhu času, procesy reagují na události v okolí, deterministické prostředí (operace se odehrávají v přesných časových intervalech, nutnost minimalizace doby běhu se zamaskovaným přerušením), malý rozměr procesů, prioritní RR, speciální časové limity a hlášení výjimek, OS musí být malý, zvláštní HW vybavení (hlídací časovače, alarmy), tabulkou řízené statické plánování ( určuje pevně, kdy bude který proces spuštěn tak, aby včas skončil), preemptivní plánování s fixními prioritami, procesům nejde o rychlost, ale o včasné dokončení, o každém procesu je znám potřebný čas, termín začátku a konce každého běhu periodicky spouštěného procesu UNIX – 160 prioritních úrovní ve třech třídách, základní jádro není preemptivní Windows NT – monouživatelský multitasking, minimalizace doby reakce, třída priority procesu (čekací, normální, vysoká, realtime), prioritní offset prováděcího toku v rámci třídy procesu

  11. Správa procesů Operační systém, to je něco jako socialistická ekonomika: samé plánování a samá fronta. (Roderik Plevka) - správce procesů (dispečer, plánovač) sleduje procesy v systému a řídí jejich chování, předává jim procesor - správce procesů plánuje, který proces bude aktivován, rozhoduje o přerušení aktivního procesu - příští aktivní proces určuje plánovací algoritmus - pro zajištění činnosti udržuje správce procesů několik front procesů, odpovídajících jednotlivým situacím, ve kterých proces na něco čeká - ve frontách čekají procesy na ukončení určité situace - z fronty se vybírá proces podle splnění určitých kritérií, aktivace po odstranění příčiny čekání - zabraňuje monopolizování procesoru procesem

  12. Fronty procesů - práce s frontami - základní požadavek efektivity správce procesů - fronta je objekt, na který můžeme aplikovat služby: *vytvoření fronty - vznik nového objektu *zrušení fronty * umístění do fronty - vložení na určité místo fronty *odebrání z fronty - vrací proces z fronty (první, obecný) - správce front udržuje několik prioritních front, jednu frontu speciál- ního typu - delta list, fronty typu FIFO - prioritní fronta - parametrem je priorita procesu, podle které se pro- cesy řadí sestupně, proces je zařazen na konec skupiny procesů se stejnou prioritou - delta list - fronta, do které se procesy řadí pro čekání na uplynutí ča- sového intervalu - absolutní čas je pouze u prvního procesu, jinak přírůstky - FIFO – First In First Out, LIFO – Last In First Out

  13. poslední FIFO 3. Prioritní Delta list 2. P = 1 t = 16 1. P = 1 D = 1 1 18 P = 4 D = 4 4 první P = 6 D = 4 LIFO P = 6 D = 5 P = 6 D = 680 poslední první 6 697 P = 10 D = 682 P = 10 D = 1548 10 1580 3. ….. ….. 2. P = n D = 10589 n 12358 1. Typy front

  14. NULL předchozí předchozí . . . . . následující následující NULL PID PID PID První člen Poslední člen Fronta jako spojový seznam - žádný proces nemůže být ve více frontách současně, zpětně vázaný seznam (v každém prvku vyjma prvního a posledního je umístěn ukazatel na předcházející a následující prvek)

  15. Správa front isempty() /* je fronta prázdná ? */ nonempty(q) /* je fronta neprázdná ? */ firstkey(q) /* nejmenší priorita ve frontě */ lastkey(q) /* největší priorita nebo čas v delta listu*/ firstid(q) /* první proces ve frontě */ enqueue(p,q) /* zařazení procesu p na konec fronty q */ insert(p,q,key) /* zařazení s prioritou key */ insertd(p,q,time) /* zařazení do delta listu */ dequeue(p) /* odstranění procesu p z fronty */ getfirst(q) /* zjištění prvního procesu ve frontě */ getlast(q) /* zjištění posledního procesu ve frontě */ newqueue(void) /* vytvoření nové fronty */

  16. suspended ready current waiting receiving sleeping Stavy procesů Nulový proces Situace, kdy jsou všechny procesy mimo pohotovostní stav (ready), jediný aktivní proces potřebuje přerušit (čekání na stisk klávesy) - proces s nízkou prioritou, triviální obsah, nesmí být v jiném stavu než ready nebo current

  17. Stavy procesů - suspended: speciální stav procesů, z/do něj se dostane pouze na základě explicitního požadavku jiného procesu nebo OS - ready: čekání na přidělení procesoru, ready (prioritní) fronta, vybírá se první proces - current: aktivní stav, pouze jeden proces, při ukončení změna kontextu - waiting: čekání na periferní operaci, každá událost má svoji frontu - receiving: čekání na příchod zprávy od jiného procesu -sleeping: čekání na uplynutí časového intervalu, delta list z kteréhokoliv stavu lze proces zrušit, při rušení aktivního procesu se mění kontext- změna kontextu - základní kámen multitaskingu, plánování činnosti procesů

  18. Služby správce procesů Vlastní přepnutí kontextu je „zabaleno“ do resched create suspended resume suspend resched ready current signal wait waiting Využívají ovladače periferií send receive Komunikace se servery receiving wakeup sleep sleeping blocked

  19. Tabulka procesů(demonstrační verze) #define PRNEW '\011' /* proces byl vytvořen*/ #define PRCURR '\01' /* proces právě běží */ #define PRFREE '\02' /* volné místo v tabulce procesů */ #define PRREADY '\03' /* proces je v ready frontě */ #define PRRECV '\04' /* proces čeká na zprávu */ #define PRSLEEP '\05' /* proces čeká na uplynutí času */ #define PRSUSP '\06' /* proces je suspendován */ #define PRWAIT '\07' /* proces čeká na semafor */ struct pentry { unsigned char pstate; /* stav procesu: PRCURR, ... */ short pprio; /* priorita */ unsigned *svarea; /* ukládací oblast pro kontext */ short psem; /* semafor pro stav waiting */ short pmsg; /* přijatá zpráva */ short phasmsg; /* <> 0, je-li zpráva OK */ unsigned *pbase; /* zásobník */ unsigned pstklen; /* jeho délka */ unsigned *plimit; /* jeho limit */ char pname[PNMLEN]; /* jméno procesu */ short pargs; /* počet parametrů */ void *paddr; /* startovní adresa */ }; extern struct pentry proctab[]; - v tabulce procesů se udržují potřebné i nepotřebné informace o procesech, (jméno, čas vytvoření, způsobvytvoření, …), statistické a ladící účely

  20. Implementace služby CREATE (demonstrační verze) vytvoření záznamu na zásobníku #include <…..> int create(void (*procaddr)(),unsigned ssize, short priority,char *name,short nargs,unsigned *args[]) { int pid, i;/* pid - číslo nového procesu */ struct pentry *pptr; unsigned *saddr;/* adresa zásobníku */ if(priority(1,MAX)||((saddr=getstk(ssize)==0)|| (pid=newpid())==SYSERR) return SYSERR; numproc++;/* zvýšení počtu procesů */ pptr=&proctab[pid]->pstate=PRNEW; for(i=0;i<N&&(pptr->pname[i]=name[i])!=0;i++); pptr->pprio=priority; pptr->plimit=saddr; pptr->pbase=saddr+ssize; pptr->pstklen=ssize; pptr->pargs=nargs; pptr->paddr=procaddr; saddr=pptr->pbase; for(i=0;i<nargs;i++) *saddr--=args[i]; *--saddr=procaddr; napln_reg(); pptr->svarea=saddr;/* ukládací oblast kontextu */ return(pid); } parametry adresa procesu vstupní bod funkce nulování registrů procesoru SP vrchol zásobníku pid = fork()

  21. Služba CREATE Vytvoření běhového a datového kontextu procesu. • vytvoření PCB procesu:identifikace procesu • stav procesu (READY, ihned k přeplánování) • řídicí informace • zapojení kontrolních mechanismů • inkrementace čítače procesů • alokace paměti pro uživatelský zásobník • alokace paměti pro kernel zásobník • nastavení obsahu registrů(zavede se do procesoru při přeplánování) • - nastavení ukazatelů paměti(private adress space, shared adress space)

More Related