Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
3. konzultace (4 hodiny) 6. března 2015 Operační systémy LS 2014/2015
2
Přepínání kontextu procesů
proces P0 proces P1 operační systém uložení kontextu P0 předání kontextu P1 . uložení kontextu P1 předání kontextu P0 idle běží privilegované instrukce
3
Sdílení času - zajišťuje iluzi souběžného zpracování několika procesů - time slicing - při preempci operační systém nepovolí žádnému procesu běžet neomezenou dobu, pouze určitý časový interval, jestliže proces běží dlouho, odebere mu OS v rámci přerušení časovače procesor a přidělí jej jinému procesu, délky intervalů běhu procesu jsou jednotky až desítky ms - v průměrném případě se časové sdílení neuplatní, proces většinou stihne udělat vše co potřebuje a vyvolá nějakou službu, její součástí bývá čekání na nějakou událost, takže se procesor stejně přidělí někomu jinému
4
Analýza časového kvanta
- musí být podstatně větší, než režijní interval operačního systému spojený se změnou procesu (přerušení časovačem a provedení dispečerských operací) - musí být větší než typická doba interakce procesu s okolím (ne o moc, aby se nepenalizovaly I/O vázané procesy) přidělení časového kvanta doba odpovědi (s) časové kvantum (q) q - s časové kvantum větší než typická doba interakce konec interakce přidělení časového kvanta proces přeplánován časové kvantum (q) doba odpovědi (s) opětovné přidělení časového kvanta běh jiného procesu časové kvantum menší než typická doba interakce
5
Proč multitasking ? Model procesor V/V - zvýšení využití procesoru
- pravděpodobnost čekání na V/V - pravděpodobnost pro n procesů - využití procesoru pn m = 1 - pn
6
Vývoj multitaskingu - vzájemné volání - přímý předchůdce multitaskingu, je to vlastnost jednotlivých programů, není možné přepínání (Apple, MS DOS) - omezené přepínání programů - jeden hlavní program, více speciálních (accessories) - neomezené přepínání programů - spuštění několika hlavních programů a přepínání mezi nimi (dostatek paměti) - kooperativní multitasking - princip vychází z přepínání, tam mohlo ale dojít ke změně pouze na žádost uživatele, nevyužitý procesorový čas, v případě čekání aktivního procesu se spustí jiný proces, při jeho přerušení se provede pokus o návrat do procesu na popředí (foreground), background procesy - využívají čas procesoru během neaktivity foreground procesu, Windows 3.x - nevýhody kooperativního multitaskingu: zpomalení foreground, chybí volání přerušovací služby (zacyklení background), malá bezpečnost, programování omezeno konvencemi (delší procesy rozděleny na kratší úseky), foreground only - degradace na neomezené přepínání, realizace není o moc jednodušší než preemptivní - hlavním rysem je spolupráce procesů - kooperativnost
7
Priorita - statická priorita - je přidělena při vytvoření, nemění se
- statický časový interval - při přeplánování je čítač nastaven na konstantní hodnotu, stejnou pro všechny procesy - dynamická priorita, dynamický časový interval - mění se na základě vlastností a chování procesů, vyšší průchodnost operačního systému - správce procesů sleduje dobu, po kterou měl proces procesor (součet momentů Running), pokud je delší než určitá doba, sníží se priorita, náročné procesy běží dlouho, krátké procesy hotovy dříve - možnost zrušení procesu při zacyklení - při přepínání kontextu se zjišťuje, vyčerpal-li proces celý svůj interval, přidělí se tím větší priorita, čím menší doba byla čerpána z povoleného intervalu (časté čekání na periferie, …)
8
Modul přidělování procesoru
- správa procesů nejkomplikovanější částí každého OS - multitasking - vztahuje se k OS, nikoliv k počítači, multiprogramming, souběžná realizace více procesů, prokládání běhů procesů, sdílení CPU procesu pomocí přerušení - musí být pečlivě navržen, nevyplatí se pro jednoúčelová prostředí - první multitaskové OS - počátek 60. let, sálové počítače, na PC koncem 80. let - pokud je jeden procesor, nemůže na něm běžet současně více procesů, tento stav je pouze simulován, musí se přihlížet i v systémech s více procesory (rovnoměrné zatížení) přepínání programů, kooperativní a preemptivní multitasking podpora multitaskingu – hardwarová (přerušovací systém, DMA, MMU, ochrana paměti), softwarová (plánování, ochrana proti zablokování) požadavek absolutní transparentnosti multitaskingu vůči procesům Výhody: * přechod k jinému programu bez nutnosti přerušovat práci * snadná implementace činností, které musí probíhat paralelně (správa počítačové sítě, …), zajištění běhu dalších procesů * lepší kooperace programů (není potřeba soubory) * nutná podmínka pro víceuživatelské prostředí * lepší využití kapacity výpočetního systému (procesor ne- zahálí při čekání) Nevýhody: * degradace programu při spuštění více úloh, dnes irelevantní * větší režie OS spojená s plánováním * větší, složitější, dražší, náročnější na HW * větší nároky na bezpečnost
9
Plánování běhu procesů - pojmy
- režim výběru – nonpreemptive (bez předbíhání), vybraný proces běží, dokud se sám neukončí, nevhodné pro víceuživatelské systémy, preemptive (s předbíháním), běžící proces lze přerušit, ochrana před monopolizací procesoru - procesy vázané na I/O – proces opakovaně alternuje mezi potřebou procesoru a periferie, dávka procesorové orientace (jednotky ms) je následována I/O operacemi (řádově delší doba) - procesorově orientovaný proces – dokázal by využívat procesor po neomezenou dobu (dlouhé procesy) - priorita procesu – narušení disciplíny FIFO (spravedlivá obsluha), prioritní úrovně (pro každou z nich je samostatná FIFO), procesy nízké priority mohou stárnout, procesy mohou měnit prioritu dynamicky
10
Plánování běhu procesů - rozdělení
dlouhodobé – strategické plánování, povolení vytvoření procesu, stupeň multitaskingu střednědobé – taktické plánování, řízení odkládání, rozhodující roli sehrává dostupná paměť, provádí správa paměti, řízení stupně multiprogramování krátkodobé – operativní plánování, plánování procesoru, aktivace přerušením časovače, I/O přerušením, službou OS, signály (semafor), uživatelsky orientované (odpověď, průchod), systémově orientované (využití, spravedlnost, propustnost) - monoprocesor, multiprocesor, RT - minimalizace doby odpovědi, co nejvyšší propustnost, co nejvyšší využití procesoru
11
Prioritní fronty . . . RQ0 Dispatch Release Processor RQ1 RQ2 Admit
Blocked queue Release Event wait Event occurs RQ1 RQ2 RQn . . . Preemption Dispatch Admit
12
Kriteria plánování Uživatelsky orientované (výkonnost)
doba obrátky (od předložení procesu do jeho zpracování, zahrnuje čas zpracování + čekání na zdroje), je možné měřit pro každý job čas odezvy (pro interaktivní procesy), je lépe měřitelný než doba obrátky Systémově orientované (výkonnost) propustnost, snaha o maximální množství procesů zpracovaných za jednotku času, závisí na délce procesů, je ovlivněno plánovací politikou, utilizací procesoru, ... využití procesoru, čas, kdy je procesor zaměstnán, jde o významné kritérium, u jednouživatelských OS a RT je méně důležité
13
Plánování běhu procesů
Processor Ready queue Ready, suspend queue Blocked, suspend queue Blocked queue Interactive users Time-out Release Event wait Event occurs Long-term scheduling Medium-term Short-term Batch jobs
14
First Come First Served (FCFS)
Proces Vznik Trvání 1 3 2 6 4 5 8 - vybírá se proces, který je nejdéle ve frontě připravených procesů, rozhodování není preemptivní, proces běží tak dlouho, dokud se sám neukončí, pokud je proces orientovaný na procesor, dojde k jeho monopolizaci, procesorově orientované procesy jsou zvýhodňovány, I/O orientované procesy musí čekat, i když už mají dokončenu svoji operaci (nedojde k uvolnění periferie), pro I/O procesy je potřeba zajistit vyšší prioritu, snadno se implementuje
15
Cyklické plánování (Round Robin)
Proces Vznik Trvání 1 3 2 6 4 5 8 - vybírá se proces, který je nejdéle ve frontě připravených procesů, rozhodování je nepreemptivní, proces běží po předem stanovenou dobu časového kvanta (jednotky až desítky ms), po vypršení časového kvanta je proces přeplánován a vrací se na konec fronty připravených procesů, při ignorování plánovací režie dostává každý z n procesů k dispozici 1/n výkonu procesoru, pro q dostatečně velké dochází k degradaci na FCFS, pro malé q se výrazně projevuje plánovací režie, zvýhodněné jsou procesorově vázané procesy, I/O procesy časové kvantum nevyužije a řadí se do fronty Blocked, procesorově vázané procesy je proto předbíhají, neboť se vrací do fronty připravených procesů
16
Virtuální RR - model - po ukončení I/O operace je proces přesunut do pomocné fronty, která je obsluhována přednostně před regulérní frontou připravených procesů, procesy spuštěné z této pomocné fronty běží pouze po dobu nevyčerpaného časového kvanta
17
Shortest Process Next (SPN)
Vznik Trvání 1 3 2 6 4 5 8 - vybírá se proces s nejmenší očekávanou dobou potřeby procesoru, může být nonpreemptivní nebo preemptivní (pokud se objeví kratší proces, je přeplánováno, SRT – Shortest Remaining Time), procesy vázané na I/O budou upřednostňovány, je potřeba dokázat odhadnout dávku potřeby procesoru, používá se exponenciální průměrování (aproximace budoucnosti z historie), hrozí nebezpečí stárnutí dlouhých procesů, pokud bude vznikat dostatečný počet krátkých procesů
18
Průměrování Nechť T[i] je i-tá doba provádění procesu, skutečná doba trvání časového kvanta procesoru přiděleného procesu. Nechť S[i] je odhad i-tého kvanta. Nejjednodušší volba S[i+1] je odhad průměrem: Aby se nemusela opakovaně počítat celá suma, lze tento vztah přepsat: Tím se dá stejná váha každé instanci běhu procesu. Z principu časové lokality platí, že poslední instance běhu procesu lépe vystihují budoucí chování procesu a proto se používá metoda exponenciálního průměrování.
19
Exponenciální průměrování
Postup volby příštího kvanta procesoru: Pokud platí, že a > 1/n, mají poslední instance běhu procesu větší váhu a váhy starších instancí se exponenciálně snižují s růstem vzdálenosti na časové ose: Odhad první instance S[1] se obvykle neprovádí a nastavuje se na hodnotu nula (dává se tím přednost novým procesům).
21
Srovnání plánovacích politik – použité procesy
Process Arival Time Service Time A 3 B 2 6 C 4 D 5 E 8
22
Srovnání plánovacích politik
5 10 15 20 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
23
FCFS RR q=1 RR q=4 SPN SRT FB q=1
Process Arrival Time Service Time (Ts) A 3 B 2 6 C 4 D 5 E 8 Průměr FCFS Finish Time Turnaround Time (Tr) Tr/Ts 1,00 9 7 1,17 13 2,50 18 12 2,40 20 6,00 8,60 2,65 RR q=1 1,33 16 2,67 17 3,25 14 2,80 15 3,50 10,80 2,71 RR q=4 2,5 11 1,25 19 5,50 10,00 SPN 2,75 1,50 7,60 1,84 SRT 2,17 10 7,20 1,59 FB q=1 3,00 2,60 1,5 2,63
24
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
25
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
26
Typy front 3. 2. 1. P = 1 P = 4 P = 6 P = 10 P = n ….. t = 16 D = 1
první 3. 2. 1. FIFO poslední Typy front Prioritní P = 1 P = 4 P = 6 P = 10 P = n ….. 1 4 6 10 n Delta list t = 16 D = 1 D = 4 D = 5 D = 680 D = 682 D = 1548 D = 10589 ….. 18 697 1580 12358 LIFO 3. 2. 1. poslední první
27
. . . . . 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) NULL následující PID předchozí První člen Poslední člen
28
Stavy procesů Nulový proces suspended ready current waiting receiving
sleeping 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
29
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ů
30
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 receiving Komunikace se servery wakeup sleep blocked sleeping
31
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()
32
vytvoření PCB procesu: identifikace procesu
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)
33
Implementace služby RESCHED
#include <conf.h> #include <proc.h> #include <q.h> /* služba přeplánuje, spustí proces s nejvyšší prioritou */ int resched(void) { register struct pentry *optr; /* směrník na starý proces */ register struct pentry *nptr; /* směrník na nový proces */ if((optr=&proctab[CURRPID])->pstate==PRCURR) if(firstkey(rdyqueue)<optr->pprio) return OK; optr->pstate=PRREADY; insert(currpid, rdyqueue, optr->pprio); } nptr=&proctab[(currpid=getfirst(rdyqueue))]; nptr->pstate=PRCURR; preempt=QUANTUM; lastsva=&(optr->svarea); newsva=&(nptr->svarea); ctxsw(); - bere v úvahu stav procesů a zajis- tí přepnutí kontextu - CURRPID - číslo aktivního procesu - nemusí dojít k přeplánování - realizováno jako nepřerušitelné - insert zařazuje proces na konec procesů se stejnou prioritou - pouhé volání služby zajistí střídání procesů podle sdílení času - je volána v rámci přerušení časovače - interní pomocná služba správce procesů - READY
34
označení stavu procesu
Služba RESCHED přepnutí kontextu kontrola nutnosti přepnutí umístění procesu do prioritní fronty (na obecné místo) přeznačení stavu procesů v PCB Služba READY označení stavu procesu parametr RESCHYES, RESCHNO umístění procesu do prioritní fronty (na obecné místo) přeplánování až po zařazení posledního procesu
35
Implementace služby READY
#include <conf.h> #include <kernel.h> #include <proc.h> #include <q.h> /* Služba READY, která převede proces do ready fronty a potom vyvolá přeplánování */ int ready(short pid, short resch) { register struct pentry *pptr; (pptr=&proctab[pid])->pstate=PRREADY; insert(pid, rdyhead, pptr->pprio); if(resch) resched(); return OK; } /* konec funkce */ RESCHYES definováno jako 1 RESCHNO definováno jako 0 - pid - identifikační číslo procesu pro frontu READY (rdyhead) - správně nastaví stavovou informaci v tabul- ce procesů, zařadí jej do fronty READY, vy- volá přeplánování - parametr resch - proti přeplánování po za- řazení jednotlivých procesů ze skupiny - priorita následujících procesů může být vyšší - resch se nastaví až při zařazování posledního procesu
36
Implementace služby RESUME
#include <conf.h> #include <kernel.h> #include <proc.h> /* služba převede proces ze stavu SUSPENDED do stavu READY a vrací prioritu procesu */ int resume(short pid) { struct pentry *pptr; int prio; if((pptr=&proctab[pid])->pstate!=PRSUP) return SYSERR; PRIO=pptr->pprio; ready(pid,RESCHYES); return PRIO; } - slouží k převodu procesu do READY fronty - kontrola stavu procesu - proměnná PRIO - uschování priority procesu proti ztrátě během přeplánování
37
jestliže není stav SUSPEND, tak chyba
Služba RESUME jestliže není stav SUSPEND, tak chyba převedení procesu ze stavu SUSPEND zařazení procesu do prioritní fronty použit parametr RESCHYES, priorita procesu v lokální proměnné Služba SUSPEND pouze ze stavu CURRENT (přeplánuje), READY (vyřadí z fronty) nesmí být nulový proces procesy ve stavu SUSPEND jsou bez fronty
38
Implementace služby SUSPEND
#include <conf.h> #include <kernel.h> #include <proc.h> /* služba převede proces ze stavu READY nebo CURRENT do stavu SUSPEND */ int suspend(short pid) { struct pentry *pptr; int prio; if(pid==NULLPROC || (pptr=&proctab[pid])->pstate!=PRCURR&&pptr->pstate!=PRREADY) return SYSERR; PRIO=pptr->pprio; if(pptr->state==PRREADY) { dequeue(pid); pptr->pstate=PRSUSP; } else { pptr->pstate=PRSUSP; resched(); } return PRIO; } - musí zpracovat proces ve stavu READY, CURRENT - ze stavu READY se vyřadí z fronty - ze stavu CURRENT (proces suspenduje sám sebe) se vyvolá přeplánování - ve stavové informaci aktivního procesu předáme službě RESCHED stav PRSUSP
39
Implementace služby KILL
- musí zpracovat proces v libovolném stavu - snížení počítadla procesů - uvolnění paměti pro zásobník - označení položky v tabulce procesů PRFREE - odstranění procesu z fronty - úprava semaforu #include <conf.h> #include <kernel.h> #include <proc.h> #include <sem.h> #include <mem.h> /********************************* KILL - odstraní proces ze systému *********************************/ int kill(short pid) { struct pentry *pptr; if ((pptr=&proctab[pid])->pstate == PRFREE) return SYSERR; -- NUMPROC; free(pptr->plimit, pptr->pstklen); switch(pptr->pstate) { case PRCURR: pptr->pstate=PRFREE; resched(); break; /* sebevražda, nikdy se nevrátí ... */ case PRWAIT: semaph[pptr->psem].semcnt++; break; case PRSLEEP: case PRREADY: dequeue(pid); break; } pptr->pstate=PRFREE; return OK;
40
odstraní proces ze systému, musí existovat
Služba KILL odstraní proces ze systému, musí existovat při odstranění aktivního procesu musí být přeplánování ze stavu SLEEP, READY a WAIT vyřazení z fronty úprava stavu obecného semaforu Služba SLEEP proces je uložen do DELTA listu stav DELTA listu je uchován v globálních proměnných - přeplánování (uspává se vždy aktivní proces)
41
Implementace služby SLEEP
- proces je zařazen do delta listu - používá globálních proměnných CURRPID, slnempty, sltop - čas pro uspání předán jako parametr - jednotky záleží na implementaci #include <kernel.h> #include <proc.h> #include <q.h> #include <sleep.h> void sleep(unsigned for_time) { if(for_time != 0) insert(currpid, clockqueue, for_time); slnempty=1; sltop=DELTA(clockqueue); /* funkce vrací čas prvního procesu */ proctab[CURRPID].pstate=PRSLEEP; } resched();
42
Implementace služby WAKEUP
- není k dispozici vrstvám OS, pouze je volána v rámci obsluhy přerušení časovače - slnempty informuje o spícím procesu - sltop obsahuje čas do probuzení prvního procesu v delta listu #include <kernel.h> #include <proc.h> #include <q.h> #include <sleep.h> /**************************************** volána pouze v případě neprázdného delta listu ****************************************/ void wakeup(void) { while (nonempty(clockqueue) && firstkey(clockqueue) == 0) ready(getfirst(clockqueue),RESCHNO); if(slnempty=nonempty(clockqueue)) sltop=DELTA(clockqueue); resched(); }
43
Memory Management požadavky řízení paměti (cache, relokace, ochrana, sdílení, logická organizace, fyzická organizace) dělení paměti (blokové přidělování) stránkování segmentace virtuální paměť
44
Cache paměť CPU Word Transfer - drahá a velmi rychlá paměť
Main memory Cache CPU Block Transfer Word Transfer - drahá a velmi rychlá paměť - kontakt s pomalejší a větší hlavní pamětí - OS a uživatelské procesy ji nevidí - je v interakci s HW správy paměti (MMU) - hledání odkazovaného slova v cache při neúspěchu přesun dalšího bloku dat prostorová lokalita
45
Adresové prostory RAM LAP FAP procesor RAM DAT - MMU
lan la1 la0 DAT - MMU fan fa1 fa0 Logický adresový prostor Fyzický adresový prostor LAP - logické adresy, instrukční soubor procesoru FAP - fyzické adresy, HW řešení DAT - Dynamic Address Translation MMU - Memory Management Unit správa adresových prostorů (oddělení LAP a FAP pro jednotlivé procesy, rozdělení FAP pro LAP)
46
Relokace v multiprogramovém prostředí je paměť sdílená více procesy, umístění programů v paměti je nezávislé na programátorovi, při odkládání procesů se uplatní relokace před relokací se používalo zobrazení LAP do FAP pomocí identity (monotaskové OS, DAT neexistuje, statický způsob (kompilace-sestavení-zavedení), overlays, programátorsky složité Process control information Process control block Entry point to program Program Branch instruction Increasing address values Data Reference to data Current top of stack Stack
47
Zobrazení LAP do FAP relokací
LAP OS LAP2 LAP1 AP2 AP1 FAP nevyužito RR - zachování spojitosti LAP ve FAP - DAT – relokační registr RR - obraz RR je součástí PCB - LAP -> FAP se provádí dynamicky za běhu
48
Hardwarová podpora relokace
Relative address Process control block Base register Program Adder Absolutní adresa Data Comparator Bounds register Stack Interrupt to operating system Process image in main memory
49
Ochrana paměti - SW - žádný proces by neměl narušit adresový prostor jiného procesu nebo dokonce operačního systému - v multitaskovém prostředí je tento požadavek jedním z nejdůležitějších, nutná jednotka řízení paměti, nabízí dva mechanismy - paměť, která není dosažitelná nemůže být poškozena, jedná se o vedlejší efekt virtualizace (každý proces má jiné stránkové tabulky) - ochrana sdílených dat, jedná se o knihovny, které jsou sdílené více procesy, jednotka řízení paměti má k dispozici prostředky, kterými označí stránku pouze pro čtení (1 bit), v případě snahy o modifikaci dojde k vyvolání výjimky a zrušení procesu Řešení s podporou HW ochrana systémových dat před procesy, procesor rozlišuje běh v režimu jádra OS a režimu uživatelském, jednotka řízení paměti nabízí prostředky pro označení stránek pro běžný proces a pro OS, při přístupu do paměti se dělá komparace, v jakém režimu se nachází procesor, při porušení se generuje přerušení Mezní registry: - dva registry s nejnižší a nejvyšší dostupnou adresou, odkaz mimo rozsah způsobí výjimku, nastavení mezních registrů musí být privilegovaná instrukce. Zámky a klíče: - paměť je rozdělena na stránky, každé je přiřazen zámek (celé číslo), procesor má speciální registr (klíč), procesor může používat pouze ty stránky paměti, které mají zámek nastavený na stejnou hodnotu, jako je klíč (klíč s hodnotou 0 je univerzální – přístup je povolen ke každé stránce). Tento způsob ochrany se užívá i u dynamických bloků.
50
Blokové přidělování Fragmentace paměti – hlavní nevýhoda, důsledek přidělování nestejně velkých bloků paměti a jejich uvolňování v různých okamžicích, pro omezení externí fragmentace se přidělují stejně veliké bloky (zvýšení režie), spojování více bloků, pro úplné zamezení - uvolňování v opačném pořadí než se alokuje, nepřijatelný diktát chování procesů, některé procesy si OP potřebují držet stále, drasticky by se snižovala průchodnost OS, musí být vnitřní věcí správce OP. Externí fragmentace – dost volné paměti, není dostupná v souvislé díře Interní fragmentace – přidělená oblast je větší, než bylo požadováno Redukce externí fragmentace – slučování nesousedních děr posuvem obsazených oblastí (bliter). Při přesouvání bloků dat je nutné zachování transparentnosti pro procesy - požadavek na překlad adres, pokud je k dispozici, není důvod nepoužít virtualizaci - virtuální paměť. strategie pro jednoduché OS nebo jednorázové a krátkodobé úkoly, proces musí vědět, kolik OP potřebuje a explicitně si ji vyžádat (požadavek je buď akceptován, nebo odmítnut), je třeba udržovat informace o vlastnících bloků, o volných blocích (tabulky s informacemi), potřebná znalost délky bloku, adresa dalšího bloku nemusí být explicitně uvedena (bloky navazují)
51
Odstranění fragmentace - setřásání
P4 P3 P1 P2 volná fragmentováno defragmentováno
52
Blokové přidělování Informace o blocích v datových strukturách správce, potřeba další paměti a zvýšení režie, počet bloků předem neznáme, řešením je přidělení většího bloku, do volného místa uložit informace o samotném bloku i o adrese následujícího. Nevýhodou je promíchání systémových informací a paměťových bloků. Při nedokonalé ochraně paměti hrozí zhroucení OS. Proces1 Další blok Data P1 Proces2 Data P2 Informace v bloku Proces1 15KB Proces2 10KB Proces3 25KB Informace ve zvláštní struktuře
53
Blokové přidělování - statické
Pevná velikost přidělovaných bloků – umožňuje umístění procesu menšího nebo stejného, pokud jsou všechny bloky obsazené a žádný proces není ve stavu READY nebo RUN, je možné odkládat 8 MB 8 MB 2 MB 4 MB 12 MB 16 MB bloky stejné velikosti nezáleží na tom, který blok se použije (jsou stejné) nabízený prostor je nedostatečný, nutnost zavedení překryvů využití paměti je extrémně neefektivní i malý požadavek čerpá celý blok vzniká interní fragmentace bloky nestejné velikosti existují dvě možnosti čerpání bloků
54
Způsob obsazení bloků jedna fronta procesů pro každý blok – pro každý blok je jedna plánovací fronta procesů, výhodou je omezení interní fragmentace jedna fronta procesů pro všechny bloky – možnost stanovit preferenci mezi odkládáním malých procesů a jejich umístění ve větším prostoru (zvýšení interní fragmentace versus zvýšená průchodnost operačního systému) 8 MB 2 MB 4 MB 12 MB 16 MB nové procesy nové procesy 8 MB 2 MB 4 MB 12 MB 16 MB
55
Blokové přidělování - dynamické
Díra – blok dostupné paměti, díry mají různý rozměr, jsou roztroušeny po FAP, při vzniku procesu se procesu přidělí dostatečně velká díra, OS udržuje informaci o přidělených oblastech a dírách OS proces 5 proces 8 proces 2 volné proces 9 proces 10
56
Alokační strategie First fit - přidělí oblast v první díře, která má dostatečnou velikost, zbytek je novou dírou, jednoduchá, rychlá, nemá vliv na fragmentaci Best fit - přidělí oblast v nejmenší díře, která má ještě dostatečnou velikost, mírně omezuje fragmentaci, pomalá, větší režie, zanechává malé díry, šetří velké díry pro velké požadavky Worst fit – přidělí oblast v největší díře, pomalá, zanechává největší díru Last fit – obsazuje paměť od nejvyšších adres, někdy výhodný způsob (místo pro zásobník) Next fit – prohledává paměť za posledním umístěním first fit best fit last fit worst fit next fit Poslední poslední alokovaný alokovaný volný nově alokovaný
57
Systém „blíženců“ zajímavým kompromisem mezi statickým a dynamickým přidělováním bloků je tzv. „Buddy System“ (Unix SVR4). Dostupné jsou paměťové bloky o velikosti 2K, L <= K <= U, kde představuje: 2L – nejmenší velikost alokovaného bloku 2U – největší velikost alokovaného bloku (dostupná paměť) Řešení požadavku na přidělení bloku o velikosti S: - začne se s celým blokem velikosti 2U. Jestliže platí 2U-1 < S < 2U, přidělí se celý blok délky 2U, jinak se blok rozdělí na dva „blížence“ o rozměrech 2U-1. Jestliže platí 2U-2 < S < 2U-1, přidělí se jeden z blíženců, jinak opět dojde k rozdělení. Postup se opakuje, dokud se nezíská nejmenší možný blok s velikostí větší nebo rovnou s požadavkem S. Jakmile se „blíženci“ uvolní, tak splývají. Operační systém udržuje několik seznamů děr: - i-tý seznam je seznam děr o velikosti 2i - kdykoliv se v (i+1) seznamu vyskytne pár „blíženců“, jsou z (i+1) seznamu odstraněny, sloučeny a vloženy do i-tého seznamu. Když se požaduje oblast o velikosti k, kde 2i+1 < k < 2i, nejprve se zkoumá i-seznam a je-li prázdný, zkoumá se (i+1) seznam ...
58
Buddy System 1M 512K B - 256K 256K D - 256K 128K E - 128K A - 128K
C 64K 64K Rel. B Req. E – 75K Req. D – 256K Req. C – 62K Rel. A Rel. C Rel. E Req. A – 100K Req. B – 240K volná přidělená
59
Stránkování RAM procesor fyzická adresa logická adresa p d f
LAP se dělí na logické stránky, FAP na fyzické stránky (frame), oboje má pevnou délku, délka je mocninou 2, zobrazení LAP do FAP se děje pomocí tabulky stránek, technika trpí vnitřní fragmentací, logickou adresu generuje procesor, číslo stránky (p – index do tabulky stránek, indexovaný řádek obsahuje číslo rámce f), offset (d – adresa ve stránce, dohromady s f tvoří fyzickou adresu)
60
Stránkování paměti - metoda, jak se vyrovnat s externí fragmentací, logická adresa (použita v programu) má dvě složky (číslo stránky a offset), velikost stránky bývá v KB (při velikosti 4 KB je pro offset potřeba 12 bitů, spodních 12 bitů je offset, zbytek je pro číslo stránky, číslo stránky se použije jako index do tabulky stránek (každý proces má svoji vlastní), v tabulce stránek je uvedeno číslo rámce ve fyzické paměti, k tomuto rámci se připojí offset => fyzická adresa, výhodou je odstranění externí fragmentace, není nutné přemísťování bloků v paměti, poslední stránka procesu trpí interní fragmentací, je potřeba hardwarová podpora, součet paměťových nároků procesu nemůže překročit velikost fyzické paměti
61
Příklady stránkování A0 1 A1 2 A2 3 A3 4 B0 D0 5 B1 D1 6 B2 D2 7 C0
B1 5 B2 6 C0 7 8 9 10 D3 11 D4 12 D0 D1 D2 Proces A - Proces B Proces C 13 14 Proces D Free frame list - proces D nezabírá souvislou oblast - nedochází k externí fragmentaci - vnitřní fragmentace je problém poslední stránky procesu - OS udržuje PT pro každý proces - zmenšování délky stránky – minimalizace vnitřní fragmentace, prodlužování PT
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.