PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ 1/29 A JEJICH ROZHRANÍ Procesy 05 Pro spuštěný program máme řadu pojmenování ● dávkové systémy: úlohy, dávky, jobs ● multiprogramové systémy: procesy (processes, tasks), vlákna (threads) Společné pojmenování pro spuštěný program je proces (někdy používáme synonymum task) CO JE TO PROCES 2/29 Dále zavádíme pojem vlákno pro „dílčí“ proces v rámci „procesu“ Proces obsahuje ● čítač instrukcí ● zásobník ● datovou sekci ● program (instrukční sekce) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Hierarchie procesů ● rodič, potomek (proces vytvořený na žádost jiného procesu – rodiče) ● sourozenci (procesy vytvořené jedním rodičem) Procesy a mutiprogramování PROCES V OS 3/29 Procesy a mutiprogramování ● prokládáním běhů procesů maximalizujeme využití procesoru a minimalizujeme dobu odpovědi ● procesu jsou přidělovány zdroje systému ● bereme v úvahu priority a vzájemnou výlučnost operací ● musíme zabránit „uváznutí“ procesů (deadlock) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Proces se může nacházet v jednom ze stavů: ● nový (new): právě vytvořený proces ● běžící (running): některý procesor právě vykonává instrukce procesu ● čekající (waiting): čeká na určitou událost STAVY PROCESU 4/29 ● čekající (waiting): čeká na určitou událost ● připravený (ready): čeká na přidělení času procesoru ● ukončený (terminated): ukončil své provádění PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ STAVY PROCESU new terminatedadmitted interrupt exit 5/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ ready running waiting I/O or event completion I/O or event wait scheduler dispatch Process Control Block -- tabulka obsahující informace potřebné pro definici a správu procesu ● stav procesu (běžící, připravený, …) INFORMACE OS O PROCESU pointer process state process number process counter 6/29 připravený, …) ● čítač instrukcí ● registry procesoru ● informace potřebné pro správu paměti ● informace potřebné pro správu I/O ● účtovací informace PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ registers memory limits list of open files PŘEPNUTÍ PROCESU save state into PCB0 operating system reload state from PCB process P0 process P1 interrupt or system call idle executing 7/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ reload state from PCB1 save state into PCB1 reload state from PCB0 idle idle executinginterrupt or system call executing Vyžádá se služba, akceptuje se některé asynchronní přerušení, obslouží se a nově se vybere jako běžící proces Když OS přepojuje CPU z procesu X na proces Y, musí: ● uchovat (uložit v PCB procesu X) stav původně běžícího procesu ● zavést stav nově běžícího procesu (z PCB procesu Y) Přepnutí kontextu představuje režijní ztrátu (zátěž) PŘEPNUTÍ KONTEXTU 8/29 Přepnutí kontextu představuje režijní ztrátu (zátěž) ● během přepínání systém nedělá nic efektivního Doba přepnutí závisí na konkrétní HW platformě ● Počet registrů procesoru, speciální instrukce pro uložení/načtení všech registrů procesoru apod. Při přerušení musí procesor ● uchovat čítač instrukcí ● zavést do čítače instrukcí hodnotou adresy vstupního bodu ovladače přerušení z vektoru přerušení PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Fronta úloha ● seznam všech procesů v systému Fronta připravených procesů ● seznam procesů uložených v hlavní paměti a připravených k běhu Fronta na zařízení FRONTY PLÁNOVÁNÍ PROCESŮ 9/29 Fronta na zařízení ● seznam procesů čekajících na I/O operaci Fronta odložených procesů ● seznam procesů čekajících na přidělení místa v hlavní paměti Fronta na semafor ● seznam procesů čekajících na synchronizační událost … PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ PŘÍKLAD: FRONTY PROCESŮ head tail head tail ready queue mag mag tape unit 1 registers PCB7 registers PCB2 queue header 10/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ head tail head tail head tail terminal unit 0 disk unit 0 mag tape unit 1 PCB3 PCB14 PCB6 PCB5 Obecně nemusím mít všechny úlohy, které chci spustit, v operační paměti Fronta všech úloh může být značně dlouhá a plánovač musí rozhodnout, které úlohy zavést do paměti a spustit STRATEGICKÝ PLÁNOVAČ 11/29 Toto je úkol dlouhodobého (strategického) plánovače ● vybírá který proces lze zařadit mezi připravené procesy ● plánovač je spouštěn relativně málo často – typicky při ukončení jednoho procesu rozhodne, kterou úlohu dále vybrat k zavedení do paměti a spuštění ● nemusí být super rychlý ● určuje stupeň multiprogramování PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Přiděluje procesor připraveným procesům Je spouštěn často (např. každých 10ms) Proto musí být rychlý KRÁTKODOBÝ PLÁNOVAČ ready queue CPU 12/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ I/O queue I/O request time slice expired fork a child wait for a interrupt child executes intercept occurs I/O Každý proces musíme jednou zavést do RAM ● alespoň částečně (část může zůstat na disku a dohrána on-demand – viz některé optimalizace) Příliš mnoho procesů v RAM však snižuje výkonnost i při využití virtuální paměti ODKLÁDÁNÍ PROCESŮ 13/29 OS musí provádění některých procesů odložit -- „vrátit“ na disk Dva nové stavy ● odložený čekající ● odložený připravený PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Střednědobý (taktický) plánovač ● vybírá který proces lze zařadit mezi odložené procesy ● vybírá který odložený proces lze zařadit mezi připravené procesy Náleží částečně i do správy operační paměti ● kapacita FAP je omezená a odložené procesy uvolňují paměť STŘEDNĚDOBÝ PLÁNOVAČ 14/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ CPUready queue I/O I/O waiting queues partialy executed swapped-out process swap in swap out end Rodič vytváří potomky (další procesy) Potomci mohou vytvářet další potomky … Vzniká strom procesů Sdílení zdrojů – varianty při vytváření potomků ● rodič a potomek sdílejí zdroje původně vlastněné rodičem VYTVOŘENÍ PROCESU 15/29 ● rodič a potomek sdílejí zdroje původně vlastněné rodičem ● potomek sdílí rodičem vyčleněnou podmnožinu zdrojů s rodičem ● potomek a rodič jsou plně samostatné procesy, nesdílí žádný zdroj Běh ● rodič a potomek mohou běžet souběžně ● rodič čeká na ukončení potomka PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Proces provede poslední příkaz a sám požádá OS o ukončení ● výstupní data procesu se předají rodiči (pokud o to má zájem – např. čeká na ukončení potomka voláním wait) ● zdroje končícího procesu se uvolňují operačním systémem O ukončení procesu žádá jeho rodič (nebo jiný proces s dostatečnými právy nebo OS), protože např.: UKONČENÍ PROCESU 16/29 dostatečnými právy nebo OS), protože např.: ● potomek překročil stanovenou kvótu přidělených zdrojů ● úkol přidělený potomkovi rodič již dále nepotřebuje ● rodič končí svoji existenci a nebylo povoleno, aby potomek přežil svého rodiče ● může docházet ke kaskádnímu ukončování (ukončí se celá větev stromu procesů) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Nezávislé procesy ● nemohou se vzájemně ovlivňovat Kooperující procesy ● mohou ovlivňovat běh jiných procesů nebo jiné procesy mohou ovlivňovat jejich běh Přínosy kooperace procesů KOOPERUJÍCÍ PROCESY 17/29 Přínosy kooperace procesů ● sdílení informací ● urychlení výpočtů ● modularita ● pohodlí při programování Příklady typových úloh kooperace ● producent – konzument ● klient – server PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Neumožňuje spouštět procesy paralelně (singletaskingový systém) Služby OS ● spusť proces a čekej na ukončení potomka (služba 4bh int21h) PŘÍKLAD: MS-DOS 18/29 int21h) ● ukonči proces (služba 00 int21h nebo služba 4ch int21h nebo int20h) ● zjisti návratovou hodnotu ukončeného procesu (služba 4dh int21h) ● ukonči proces, ale neuvolňuj paměť – (terminate, but stay resident) – TSR (služba 31h int21h nebo int 27h) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Popisovač procesu (Program Segment Prefix) PŘÍKLAD: MS-DOS (2) Offset Size Contents +0 2 EXE programs may JMP or RET here (PSP:0) to exit +2 2 top of available system memory in paragraphs +4 1 (reserved) +5 5 FAR CALL to DOS function dispatcher +6 (2) bytes available in Program Segment (for COM file only) +0aH 4 Terminate address. See INT 22H 19/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ +0aH 4 Terminate address. See INT 22H +0eH 4 Ctrl-Break handler address INT 23H +12H 4 Critical Error handler addr INT 24H +16H 16H DOS reserved area +2cH 2 Segment address of DOS environment +2eH 2eH DOS reserved area +5cH 10H setup as an FCB for 1st cmd parameter +6cH 14H setup as an FCB for 2nd cmd parameter +80H 1 count of characters in UPA at 81H also offset of default DTA +81H 7fH characters from DOS command line (except any redirection directives) 100H Program Segment Prefix size OS s preemptivním multitaskingem Služby OS ● fork – vytvoří nový proces jako kopii rodiče ● execve – nahradí současný proces spuštěním jiného PŘÍKLAD: UNIX 20/29 programu ● exit (resp. _exit) – ukončí proces ● wait, waitpid – čeká na ukončení potomka PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ volání fork() implementováno jako copy-on-write (tj. dokud paměť není měněna je sdílena a až při pokusu o modifikaci je vytvořena kopie) vfork – upravené fork, které nekopíruje stránky paměti rodičovského procesu ● rychlejší ● vhodné pro okamžité spuštění execve PŘÍKLAD: LINUX 21/29 ● vhodné pro okamžité spuštění execve clone – upravené fork, které umožňuje sdílet některé zdroje (například paměť, deskriptory souborů, ovladače signálů) mezi rodičovským a nově vytvořeným procesem. Informace o procesu jsou uloženy ve struktuře task_struct (viz include/linux/sched.h) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ PŘÍKLAD: LINUX (2) 1 6 zombie interrupt & return sys call or interrupt & return running in user mode context switch 22/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ 2 4 3 5 sleeping wakeup ready to run fork () new process running in kernel mode sleep context switch in/out Služby OS ● CreateProcess – vytvoří nový proces (spustí specifikovaný program) ● OpenProcess – pro získání přístupu k existujícímu procesu PŘÍKLAD: WIN32 23/29 procesu ● ExitProcess – ukončí tento proces ● TerminateProcess – ukonči nějaký (např. synovský) proces ● GetExitCodeProcess – zjisti návratovou hodnotu ukončeného procesu (nebo fakt, že proces ještě neskončil) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ PŘÍKLAD: WIN32 Initialized Waiting ReadyTerminated Reinitialise Place in ready queue Create and initialize thread object Thread waits on Wait is complete 24/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Running Transition Standby Context-switch to it and start ist execution (dispatching) Execution completes Preempt Select for execution waits on an object handle Kernel stack outswapped Preempt (or time quantum ends) Výukovou pomůcku zpracovalo Servisní středisko pro e-learning na MU http://is.muni.cz/stech/ 25/29PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ