(Správa a plánování činnosti procesorů. Systémy souborů. Správa a plánování činnosti V/V zařízení)
Procesorů je ve výpočetních systémech téměř vždy méně, než procesů, OS musí rozhodnout, který proces dostane přidělen čas procesoru a na jak dlouho.
Cílem je dosažení maximálního využití CPU (v dnešní době všech jejich jader) pomocí multithreadingu (současný běh více procesů).
Běh programu se vyznačuje střídáním dávek instrukcí, a čekání na I/O. Čekání na I/O se využije pro zpracovávání instrukcí jiného procesu.
Vybírá mezi procesy, které sídlí v hlavní paměti ty, které jsou připravené k běhu – ready
Plánovací rozhodnutí vydává dispečer v okamžiku, kdy proces:
Z rozhodnutí dispečera může nastat, že proces přechází ze stavu běžící do stavu připravený
Nepreemptivní plánování (bez předbíhání)
Preemptivní plánování (s předbíháním)
algoritmus předání
dispečerské zpoždění = doba, kterou potřebuje OS pro pozastavení běhu jednoho procesu a pro start běhu jiného procesu
Jednoduchý algoritmus plánování bez předbíhání (nepreemptivní). Procesy se řadí ve FIFO frontě, jakmile se uvolní procesor, první proces ve frontě je přiřazen procesoru. Předchozí proces se zařadí na konec fronty jakmile se dostane opět do stavu „ready“.
Procesům přiřazeny priority (p), plánovač vždy preferuje procesy s vyšší p. Preemptivní (procesor je procesu s nízkou p odebrán a přiřazen procesu s vyšší) i nepreemptivní (procesor není vzat procesu, dokud neskončí dávku) varianta. Procesy seskupeny do prioritních tříd.
Z čekajících procesů vybírá ten s nejkratší dávkou pro CPU. Ta je ovšem dopředu známa jenom velmi zřídka, proto se používá exponenciální průměrování na základě historie velikostí dávek procesu.
Požívá se jak preemptivní (pokud je ve frontě proces, který by běžel méně, než stávající proces je stávajícímu procesu procesor odebrán), tak nepreemptivní varianta.
Vypočítává odhady pro délku trvání procesu na základě předchozího chování programu.
Používá se parametr vlivu historie - říká jak moc má algoritmus přihlížet na historii běhu programu.
Preemptivní algoritmus plánování s FIFO frontou. Proces na CPU dostane časové kvantum q (délky desítky až stovky ms), po vypršení je zařazen na konec fronty kde je n procesů.
Systém souborů je součást operačního systému (ale nemusí být plně implementovaný v jádru OS!), který řeší správu sdílených zdrojů na vnějších pamětech.
Záleží na druhu OS, jestli soubor zamkne a ovlivní tím dalšího přístupu k souboru
Rozlišují se dva druhy zámků
• sdílený (shared) - všechny procesy mohou ze souboru číst, ale žádný nesmí zapisovat
• výlučný (exclusive) - k souboru může přistupovat výhradně jeden proces.
doba přístupu (seek time) je dána:
minimalizace doby vystavení
Toto plánování je pravděpodobně jen pro disky s kruhovitým tvarem. Např. flash paměti mají přístup mnohem rychlejší a používají jiné metody(protože se netočí, ale jsou adresovány přímo?)
FCFS - First come, first served
SSTF - Shortest Seek Time First
SCAN (někdy také výtah)
Funguje podobně jako výtah, který nemá tlačítko pro přivolání - jezdí od okraje do středu a zpět a vyřizuje požadavky podle pořadí zpřístupňovaných stop
C-SCAN
Jednosměrný výtah - obdoba SCAN, ale požadavky jsou vyřizovány pouze po jedné cestě dle pořadí zpřístupňovaných stop, zpět se vrací bez vyřizování požadavků. Průměrné doby čekání jsou tak rozloženy rovnoměrněji.
C-LOOK Varianta C-SCAN, raménko se opakovaně pohybuje z kraje směrem ke středu a zpět a vrací se po dosažení posledního požadavku v tomto směru bez vyřizování požadavků a požadavky vyřizuje podle pořadí zpřístupňovaných stop.
Základní představa - k počítači máme připojeny různé I/O(=V/V) zařízení a musíme ošetřit organizaci přístup k těmto zařízením(aby se například 2 procesy netiskly data na tiskárně ve stejnou chvíli).
polling(vyzývání)
programovaný I/O, činné čekání, synchronní operace
busy-wait - OS čeká aktivně na uvolnění I/O, nedělá nic jiného, než že zjišťuje stav I/O zařízení - zdržuje procesor.
Někdy se také používá polling tak, že procesor počítá a vždy po určitém čase zkontroluje pollované zařízení zda už je ready, pokud ne, tak se vrátí k počítání - zdržuje méně.
přerušení
DMA (direct memory access)
náhrada programovaného I/O, není využíván procesor, ale speciální DMA řadič
typicky pro velké toky dat (dnes už všechny HDD)
Příklad: zobrazení videa - proces potřebuje data v paměti, aby je mohl dekódovat+zobrazit, procesor ale data do paměti nepřenáší - řekne DMA řadiči, že data potřebuje v paměti, DMA se postará o jejich přenos, po dokončení přenosu informuje procesor pomocí přerušení a procesor řeší ve spolupráci s grafickou kartou jejich zobrazení.
Dle druhu OS, nemusí být přítomny všechny
plánování (I/O plánovače)
buffering - zařízení A generuje data rychleji, než je zařízení B zvládne zpracovat, data pak uložíme do bufferu, a B si čte dle potřeby. I naopak(B generuje pomaleji, ale A potřebuje souvislý zdroj - nagenerejume do bufferu a A pak přečte)
caching - kopie(pouze kopie!) dat uložena v rychlé paměti - k dosažení vysokého výkonu.
spooling V daném okamžiku může vstupně výstupní zařízení provádět jen jednu úlohu, požadavky do fronty. Pro realizaci fronty požadavků (úloh) je většinou využit souborový systém s přímým přistupem (disk, ramdisk). Např. tiskárna, magnetická páska
rezervace - exklusivní přístup k zařízení pro proces, nutná ochrana proti uváznutí)
FI:PB152 Operační systémy doc. Ing. Jan Staudek, CSc.
FI:PA150 Principy operačních systémů doc. Ing. Jan Staudek, CSc.
Úloha OS, prostředky počítače, představa virtuálního počítače - od Helenky :) (PDF) Operační systémy z FIT VUT (PDF) FCFS Na ČWUT wiki Plánování práce procesorů (PDF)
zdroj: Jan Staudek, skripta PB152 Operační systémy, 07_planovani.pdf
další texty: http://www.kai.vslib.cz/~kolar/os/old/part04.html
Základ vložil: Musil Marek
dopracuje: Marek Babák do 19.6.08
99%, z mé strany hotovo, pokud máte něco k doplnění, upřesnění, opravení, tak to tam rovnou napište
Diskuze
Nepatri ty algoritmy planovani pristupu na disk spise do systemu souboru? Podle me je tato otazka zamerena na planovani, a proto bych u systemu souboru nemluvil o tom co to je system souboru, ale spis bych tam popsal ty algoritmy FIFO,SSTF,SCAN …..
Je zde prece napsano neco jako: SYSTEM SOUBORU - nastroje pro manipulaci s daty na vnejsi pameti
Tak jsem to našel ve skriptech k organizaci souboru a přepsal to sem, ještě promyslím co s těma obecnýma informacema.
doplnil jsem u I/O DMA, polling, IRQ + subsystémy
rozepsal jsem to o něco víc než je to ve skriptech
odstranil jsem dle mého názoru irelevantní informace ve vztahu k plánování OS
Neřekl bych, že proces=vlákno. Procesy mohou obsahovat více vláken. Jednolivé procesy mají svůj vlastní kontext (PC-program counter, zásobník…), zatímco vlákna jednoho procesu (viz vícevláknové aplikace) mají kontext společný…
t.j. 1, opraveno
Pekne spracovane. Drobnym nedostatkom je asi cast systemy suborov, tam si myslim, ze sa po nas chce nieco o FAT, NTFS apod.
to je otázka… aplikovaní ji mají v otázce 12, tahle otázky zní vyloženě plánování v operačních systémech a podotázka je Systém souborů (takže logicky plánování systému souborů v operačních systémech) ale explicitně to tam uvedený není, takže se nebudu hádat, klidně se to naučte. :)
btw doba pristupu disku k datam je access time nie seek time, doba pristupu(access time) = seek time + latency. Podla mna seek time je to vystavenie hlaviciek na spravnu stopu a latency je ta rotacna doba