Procesy n Proces pojem n Proces plnovanie n

  • Slides: 39
Download presentation
Procesy n Proces - pojem n Proces - plánovanie n Operácie na Procesoch n

Procesy n Proces - pojem n Proces - plánovanie n Operácie na Procesoch n Medziprocesorová komunikácia (Interprocess Communication - IPC) n Príklady IPC systémov n Komunikácia v Klient-Server Systéme Operating System Concepts 3. 1 © 2009

Proces - pojem n Operačný systém vykonáva rozmanité programy: Dávkové systémy – joby l

Proces - pojem n Operačný systém vykonáva rozmanité programy: Dávkové systémy – joby l Systémy zdieľania času (Time-shared systems) – používateľské programy alebo úlohy n Učebnice používajú výrazy job a proces takmer zameniteľne n Proces – program ktorý sa vykonáva; vykonávanie procesu sa vyvíja sekvenčným spôsobom n Proces zahrňuje: l Počítadlo inštrukcií (program counter) l Zásobník procesu (stack) l l Dátovú sekciu (data section) Operating System Concepts 3. 2 © 2009

Proces v Pamäti Operating System Concepts 3. 3 © 2009

Proces v Pamäti Operating System Concepts 3. 3 © 2009

Plánovače (Schedulers) n Dlhodobý plánovač (Long-term scheduler) (alebo plánovač úloh) n Krátkodobý plánovač (Short-term

Plánovače (Schedulers) n Dlhodobý plánovač (Long-term scheduler) (alebo plánovač úloh) n Krátkodobý plánovač (Short-term scheduler) (alebo CPU plánovač) Operating System Concepts 3. 4 © 2009

Plánovače n Krátkodobý plánovač je vyvolávaný veľmi často (millisekundy) (musí byť rýchly) n Dlhodobý

Plánovače n Krátkodobý plánovač je vyvolávaný veľmi často (millisekundy) (musí byť rýchly) n Dlhodobý plánovač je vyvolávaný nie často (sekundy, minúty) (smie byť pomalý) n Dlhodobý plánovač riadi stupeň multiprogramovania n Proces môže byť opísaný ako: l V/V-zviazaný proces – míňa viac času na vykonávanie V/V než na výpočty, veľa krátkych CPU vykonávaní l CPU-zviazaný proces – míňa viac času na vykonávanie výpočtov; málo veľmi dlhých CPU vykonávaní Operating System Concepts 3. 5 © 2009

Prepínanie kontextu n Keď CPU prepína na ďalší proces, systém musí uchovať (uložiť) stav

Prepínanie kontextu n Keď CPU prepína na ďalší proces, systém musí uchovať (uložiť) stav starého procesu a zaviesť uchovaný stav pre nový proces prostredníctvom prepnutia kontextu (context switch) n Kontext procesu je reprezentovaný prostredníctvom PCB n Čas prepínania kontextu je réžia; systém nerobí užitočnú prácu keď prepína n Časovo závislý na hardvérovej podpore Operating System Concepts 3. 6 © 2009

Vytvorenie Procesu n Rodičovský proces vytvorí detské procesy, ktoré, podľa poradia vytvárajú ďalšie procesy,

Vytvorenie Procesu n Rodičovský proces vytvorí detské procesy, ktoré, podľa poradia vytvárajú ďalšie procesy, vytvárajúc strom procesov n Vo všeobecnosti, proces je jednoznačne identifikovaný a spravovaný prostredníctvom identifikátora procesu - a process identifier (pid) n Zdroje zdieľania l Rodič a dieťa zdieľajú všetky zdroje l Dieťa zdieľa podmnožinu rodičovských zdrojov l Rodič a dieťa nezdieľajú zdroje n Vykonávanie l Rodičia a deti vykonávajú činnosť (bežia) súbežne l Rodič čaká dovtedy pokiaľ dieťa skončí Operating System Concepts 3. 7 © 2009

Vytvorenie Procesu n Adresový priestor l Potomkový proces je duplikátom rodiča l Potomkový proces

Vytvorenie Procesu n Adresový priestor l Potomkový proces je duplikátom rodiča l Potomkový proces sa vykonáva nad iným programom n UNIX- ovské príklady l Systémové volanie fork vytvára nový proces l Systémové volanie exec je použité po syst. volaní fork s cieľom nahradiť pamäťový priestor procesu novým programom Operating System Concepts 3. 8 © 2009

Tvorba Procesu Operating System Concepts 3. 9 © 2009

Tvorba Procesu Operating System Concepts 3. 9 © 2009

C Program int main() { pid_t pid; /* fork another process */ pid =

C Program int main() { pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } Operating System Concepts 3. 10 © 2009

Dokončenie Procesu n Proces vykonáva posledný stav a žiada operačný systém, aby ho zrušil

Dokončenie Procesu n Proces vykonáva posledný stav a žiada operačný systém, aby ho zrušil (exit) l Výstupné dáta z potomka na rodiča (cez wait) l Zdroje procesu sú uvoľnené operačným systémom n Rodič môže ukončiť vykonávanie procesu potomka (abort) l Potomok (dieťa) prekročilo pridelené zdroje l Úloha pridelená potomkovi už viac nie je požadovaná l Ak rodič skončí 4 Niektoré operačné systémy nedovoľujú potomkovi pokračovať ak ich rodič je ukončený (skončil svoju činnosť) n Všetky deti (potomkovia) sú ukončené – kaskádové ukončenie Operating System Concepts 3. 11 © 2009

Komunikácia medzi procesmi n Procesy v systéme môžu byť nezávislé alebo spolupracujúce (kooperujúce) n

Komunikácia medzi procesmi n Procesy v systéme môžu byť nezávislé alebo spolupracujúce (kooperujúce) n Spolupracujúci proces môže ovplyvniť alebo byť ovplyvnený inými procesmi, zahrňujúc zdieľané dáta n Dôvody pre spolupracujúce procesy: l Zdieľanie informácií l Rýchlosť výpočtu l Modularita l Výhoda n Spolupracujúce procesy potrebujú interprocess communication (IPC), t. j. medziprocesorovú komunikáciu n Dva modely IPC l Zdieľaná pamäť l Posielanie správ Message passing Operating System Concepts 3. 12 © 2009

Komunikačné Modely Operating System Concepts 3. 13 © 2009

Komunikačné Modely Operating System Concepts 3. 13 © 2009

Spolupracujúce Procesy n Nezávislý proces nemôže ovplyvniť alebo byť ovplyvnený inými procesmi vykonávanými v

Spolupracujúce Procesy n Nezávislý proces nemôže ovplyvniť alebo byť ovplyvnený inými procesmi vykonávanými v systéme n Spolupracujúci (kooperujúci) proces môže ovplyvniť alebo byť ovplyvnený inými procesmi vykonávanými v systéme n Výhody spolupráce procesov l Zdieľanie informácie l Zrýchlenie výpočtov l Modularita l Pohodlie Operating System Concepts 3. 14 © 2009

Producent-Konzument Problem n Paradigma pre spolupracujúce procesy, producent proces produkuje informáciu, ktorá je konzumovaná

Producent-Konzument Problem n Paradigma pre spolupracujúce procesy, producent proces produkuje informáciu, ktorá je konzumovaná procesom konzument l Neohraničený bufer nemá žiadny limit na svoju veľkosť l Ohraničený bufer predpokladá fixnú veľkosť bufra Operating System Concepts 3. 15 © 2009

Ohraničený bufer – riešenie použitím zdieľanej pamäte n Zdieľané dáta #define BUFFER_SIZE 10 typedef

Ohraničený bufer – riešenie použitím zdieľanej pamäte n Zdieľané dáta #define BUFFER_SIZE 10 typedef struct {. . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; n Riešenie je správne, ale môže použiť len BUFFER_SIZE-1 prvkov Operating System Concepts 3. 16 © 2009

Ohraničený bufer – Producent while (true) { /* Produce an item */ while (((in

Ohraničený bufer – Producent while (true) { /* Produce an item */ while (((in = (in + 1) % BUFFER SIZE count) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; } Operating System Concepts 3. 17 © 2009

Ohraničený bufer – Konzument while (true) { while (in == out) ; // do

Ohraničený bufer – Konzument while (true) { while (in == out) ; // do nothing -- nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; } Operating System Concepts 3. 18 © 2009

Medziprocesorová komunikácia n Mechanizmus pre procesy kvôli komunikácii a synchronizácii ich činností n Systém

Medziprocesorová komunikácia n Mechanizmus pre procesy kvôli komunikácii a synchronizácii ich činností n Systém správ – procesy komunikujú navzájom medzi sebou bez použitia zdieľaných premenných n IPC možnosti poskytujú dve operácie: l send(správa) – veľkosť správy je fixná alebo premenlivá l receive(správa) n Ak P a Q chcú komunikovať, potrebujú: l zriadiť komunikačnú linku medzi sebou l vymeniť správy prostredníctvom send/receive n Implementácia komunikačnej linky fyzikálna (napr. , zdieľaná pamäť, hardwerová zbernica l logická (napr. , logické vlastnosti) l Operating System Concepts 3. 19 © 2009

Implementačné otázky n Ako nadviazať spojenie? n Môžu sa k linke pripojiť viac ako

Implementačné otázky n Ako nadviazať spojenie? n Môžu sa k linke pripojiť viac ako dva procesy? n Koľko liniek môže existovať medzi každým párom komunikujúcich procesov? n Aká je kapacita linky? n Je dĺžka správy pevne daná (fixná) alebo premenlivá? n Je linka jednosmerná alebo obojsmerná? Operating System Concepts 3. 20 © 2009

Priama komunikácia n Procesy sa musia navzájom explicitne pomenovať: l send (P, správa) –

Priama komunikácia n Procesy sa musia navzájom explicitne pomenovať: l send (P, správa) – pošli procesu P správu l receive(Q, správa) – prijmi od procesu Q správu n Vlastnosti komunikačnej linky l Spojenie sa nadviaže automaticky l Spojenie je umožnené presne dvom procesom l Medzi každou dvojicou procesov existuje práve jedno spojenie l Linka môže byť jednosmerná, ale zvyčajne je obojsmerná Operating System Concepts 3. 21 © 2009

Nepriama komunikácia n Správy sú posielané a prijímané z poštových schránok - mailboxov (tiež

Nepriama komunikácia n Správy sú posielané a prijímané z poštových schránok - mailboxov (tiež nazývaných porty) l Každý mailbox má jedinečnú identifikáciu id l Procesy môžu komunikovať len ak zdieľajú mailbox n Vlastnosti komunikačnej linky l Spojenie je zavedené len ak procesy zdieľajú spoločný mailbox l Spojenie môže byť asociované s viacerými procesmi l Každá dvojica procesov môže zdieľať niekoľko komunikačných liniek l Linka môže byť jednosmerná alebo obojsmerná Operating System Concepts 3. 22 © 2009

Nepriama komunikácia n Zdieľanie Mailboxu l P 1, P 2, a P 3 zdieľajú

Nepriama komunikácia n Zdieľanie Mailboxu l P 1, P 2, a P 3 zdieľajú mailbox A l P 1, posiela správu do A; P 2 a P 3 prijímajú z A l Ktorý proces prijme správu poslanú od A? n Riešenia l Dovoliť spojenie asociované s najviac dvoma procesmi l Dovoliť najviac jednému procesu v danom čase vykonávať operáciu receive l Dovoliť systému rozhodnúť, ktorý proces sa stane prijímateľom správy. Nebudú to oba procesy naraz. Operating System Concepts 3. 23 © 2009

Nepriama komunikácia n Činnosti l Vytvor nový mailbox l Pošli a príjmi správy cez

Nepriama komunikácia n Činnosti l Vytvor nový mailbox l Pošli a príjmi správy cez mailbox l Odstráň mailbox n Definujeme operácie: send(A, správa) – pošli správu do mailbox-u A receive(A, správa) – príjmi správu z mailbox-u A Operating System Concepts 3. 24 © 2009

Synchronizácia n Odovzdávanie správ môže byť buď blokované alebo neblokované n Blokovanie uvažované ako

Synchronizácia n Odovzdávanie správ môže byť buď blokované alebo neblokované n Blokovanie uvažované ako synchrónne n l Blokovanie odosielania – posielajúci proces je zablokovaný pokiaľ nie je prijatá správa l Blokovanie prijímania – prijímateľ je blokovaný pokiaľ nie je správa k dispozícii Neblokovanie je uvažované ako asynchrónne l Neblokované posielanie – posielajúci proces pošle správu a pokračuje v činnosti l Neblokované prijímanie – prijímateľ prijme buď platnú správu alebo „nič“l Operating System Concepts 3. 25 © 2009

Bufrovanie n Front správ pripojených k linke, implementovaný je troma spôsobmi: 1. Nulová kapacita

Bufrovanie n Front správ pripojených k linke, implementovaný je troma spôsobmi: 1. Nulová kapacita – 0 správ vo fronte Odosielateľ musí čakať na príjemcu správy (rendezvous) 2. Ohraničená kapacita – konečná dĺžka n správ Odosielateľ musí čakať ak je front plný 3. Neobmedzená kapacita – nekonečná dĺžka Odosielateľ nikdy nečaká Operating System Concepts 3. 26 © 2009

Príklady IPC systémov POSIX n POSIX Zdieľaná pamäť l Proces najprv vytvorí segment zdieľanej

Príklady IPC systémov POSIX n POSIX Zdieľaná pamäť l Proces najprv vytvorí segment zdieľanej pamäte segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); l Proces ak chce mať prístup k tejto zdieľanej pamäti, musí sa k nej pripojiť shared memory = (char *) shmat(id, NULL, 0); l Teraz môže proces zapisovať do zdieľanej pamäte sprintf(shared memory, "Writing to shared memory"); l Keď daný proces sa má oddeliť od zdieľanej pamäte, z jej adresného priestoru shmdt(shared memory); Operating System Concepts 3. 27 © 2009

Príklady IPC systému - Mach n Mach komunikácia je správa založená na l Každý

Príklady IPC systému - Mach n Mach komunikácia je správa založená na l Každý systém volá všetky správy l Každá úloha dostane dva mailboxy pri vytvorení - Kernel a oznámenie (Notify) l Iba tri systémové volania potrebné prenos správy msg_send(), msg_receive(), msg_rpc() l Mailboxy potrebné pre komunikáciu, vytvorené prostredníctvom port_allocate() Operating System Concepts 3. 28 © 2009

Príklady IPC systémov – Windows XP n Správa-možnosť prechodu cez lokálne volanie procedúry (LPC)

Príklady IPC systémov – Windows XP n Správa-možnosť prechodu cez lokálne volanie procedúry (LPC) l Pracuje len medzi procesmi v tom istom systéme l Užívateľské porty (ako mailboxy) na zriadenie a udržiavanie (podporovanie) komunikačných kanálov l Komunikácia pracuje nasledovne: 4 Klient otvorí prácu spojovacieho portu subsystému objektu 4 Klient posiela požiadavku na spojenie 4 Server vytvorí dva privátne komunikačné porty a vráti narábanie (prácu) jednému z nich (ku klientovi) 4 Klient a server používajú zodpovedajúci port pre posielanie správ alebo spätné volania(volania naspäť) a „počúva“ odpovede Operating System Concepts 3. 29 © 2009

Lokálne volanie procedúr vo Windows XP Operating System Concepts 3. 30 © 2009

Lokálne volanie procedúr vo Windows XP Operating System Concepts 3. 30 © 2009

Komunikácie v klient-server systéme n Sokety n Vzdialené volanie procedúr(Remote Procedure Calls) n Rúry

Komunikácie v klient-server systéme n Sokety n Vzdialené volanie procedúr(Remote Procedure Calls) n Rúry (Pipes) n Vzdialené volanie metód (Java) Operating System Concepts 3. 31 © 2009

Sokety n Soket je definovaný ako koncový bod komunikácie n Je vytvorený z IP

Sokety n Soket je definovaný ako koncový bod komunikácie n Je vytvorený z IP adresy zreťazenej s číslom portu n Soket 161. 25. 19. 8: 1625 vzťahujúci sa na port 1625 na hostiteľovi 161. 25. 19. 8 n Dvojica procesov komunikuje cez sieť používajúc dvojicu soketov – jeden soket pre každý proces Operating System Concepts 3. 32 © 2009

Soketová komunikácia Operating System Concepts 3. 33 © 2009

Soketová komunikácia Operating System Concepts 3. 33 © 2009

Volanie vzdialenej procedúry n Volanie vzdialenej procedúry (Remote procedure call - RPC) používa sa

Volanie vzdialenej procedúry n Volanie vzdialenej procedúry (Remote procedure call - RPC) používa sa často v distribuovaných aplikáciách klient-server. Procesy takejto aplikácie sa vykonávajú na rôznych uzloch siete a komunikujú pomocou zasielania správ. n Stubs – „client-side proxy“ pre aktuálnu procedúru na serveri n „client-side stub“ lokalizuje server a zoraďuje parametre n „server-side stub“ prijme túto správu, rozbalí zoradené parametre a vykoná procedúru na serveri Operating System Concepts 3. 34 © 2009

Vykonanie RPC Operating System Concepts 3. 35 © 2009

Vykonanie RPC Operating System Concepts 3. 35 © 2009

Rúry - Pipes n Najstarší a najjednoduchší mechanizmus komunikácie medzi procesmi n Otázky l

Rúry - Pipes n Najstarší a najjednoduchší mechanizmus komunikácie medzi procesmi n Otázky l Je komunikácia jednosmerná alebo obojsmerná? l V prípade dvojsmernej (obojsmernej) komunikácie je to polovičný alebo plný duplex? l Musí tu existovať vzťah (t. j. rodič - potomok) medzi komunikujúcimi procesmi? l Môžu byť rúry použité v sieti? Operating System Concepts 3. 36 © 2009

Rúry n Obyčajné Rúry dovoľujú komunikáciu štandardným spôsobom producent-konzument n Producent zapisuje na jeden

Rúry n Obyčajné Rúry dovoľujú komunikáciu štandardným spôsobom producent-konzument n Producent zapisuje na jeden koniec (zapisovací koniec rúry) n Konzument číta z druhého konca (čítací koniec rúry) n Obyčajné rúry sú preto jednosmerné n Požadujú vzťah rodič – potomok medzi komunikujúcimi procesmi Operating System Concepts 3. 37 © 2009

Obyčajné Rúry Operating System Concepts 3. 38 © 2009

Obyčajné Rúry Operating System Concepts 3. 38 © 2009

Pomenované rúry - Named Pipes n Pomenované rúry sú výkonnejšie ako obyčajné rúry n

Pomenované rúry - Named Pipes n Pomenované rúry sú výkonnejšie ako obyčajné rúry n Komunikácia je obojsmerná n Vzťah rodič – potomok (dieťa) nie je potrebný v procese komunikácie n Niekoľko procesov môže použiť pomenované rúry pre komunikáciu n Poskytujú ich rovnako UNIX-ovské aj Windows-ovské systémy Operating System Concepts 3. 39 © 2009