390 likes | 727 Views
Proces y. Proces - pojem Proces - p l á n ovanie Oper ácie na Proces och Medziprocesorová komunikácia ( Interprocess Communication - IPC) Príklady IPC s yst émov K omuni kác i a v K lient-Server Syst éme. Proces - p o j e m. O pera čný syst é m vykonáva rozmanité program y :
E N D
Procesy • Proces - pojem • Proces - plánovanie • Operácie na Procesoch • Medziprocesorová komunikácia (Interprocess Communication - IPC) • Príklady IPC systémov • Komunikácia v Klient-Server Systéme
Proces - pojem • Operačný systém vykonávarozmanité programy: • Dávkové systémy – joby • Systémy zdieľania času (Time-shared systems) – používateľské programy alebo úlohy • Učebnicepoužívajú výrazyjob a procestakmerzameniteľne • Proces – program ktorý sa vykonáva; vykonávanie procesu sa vyvíja sekvenčným spôsobom • Proces zahrňuje: • Počítadlo inštrukcií (program counter) • Zásobník procesu (stack) • Dátovú sekciu (data section)
Plánovače (Schedulers) • Dlhodobý plánovač (Long-term scheduler)(alebo plánovač úloh) • Krátkodobý plánovač (Short-term scheduler)(aleboCPU plánovač)
Plánovače • Krátkodobý plánovačje vyvolávaný veľmi často (millisekundy) (musí byť rýchly) • Dlhodobý plánovač je vyvolávaný nie často (sekundy, minúty) (smie byť pomalý) • Dlhodobý plánovač riadi stupeň multiprogramovania • Proces môže byť opísaný ako: • V/V-zviazaný proces– míňaviac času na vykonávanieV/Vnež na výpočty, veľa krátkych CPU vykonávaní • CPU-zviazaný proces– míňa viac času na vykonávanie výpočtov; málo veľmi dlhých CPU vykonávaní
Prepínanie kontextu • Keď CPU prepína na ďalší proces, systém musíuchovať (uložiť) stav starého procesu a zaviesťuchovaný stavpre nový procesprostredníctvom prepnutia kontextu (context switch) • Kontextprocesuje reprezentovaný prostredníctvom PCB • Čas prepínania kontextu je réžia; systém nerobí užitočnú prácu keď prepína • Časovo závislý na hardvérovej podpore
Vytvorenie Procesu • Rodičovskýproces vytvorídetsképrocesy, ktoré, podľa poradia vytvárajú ďalšie procesy, vytvárajúc strom procesov • Vo všeobecnosti, procesje jednoznačne identifikovaný a spravovaný prostredníctvom identifikátora procesu -a process identifier (pid) • Zdroje zdieľania • Rodič a dieťa zdieľajú všetky zdroje • Dieťa zdieľa podmnožinu rodičovských zdrojov • Rodič a dieťa nezdieľajú zdroje • Vykonávanie • Rodičia a detivykonávajú činnosť (bežia) súbežne • Rodič čaká dovtedy pokiaľdieťa skončí
Vytvorenie Procesu • Adresový priestor • Potomkový proces je duplikátom rodiča • Potomkový proces sa vykonáva nad iným programom • UNIX- ovské príklady • Systémové volanieforkvytvára nový proces • Systémové volanie execje použité po syst.volaníforks cieľom nahradiť pamäťový priestor procesu novým programom
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); } }
Dokončenie Procesu • Proces vykonáva posledný stav a žiada operačný systém, aby ho zrušil (exit) • Výstupné dátaz potomka na rodiča (cezwait) • Zdroje procesu súuvoľnené operačným systémom • Rodič môže ukončiť vykonávanie procesu potomka (abort) • Potomok (dieťa)prekročilo pridelené zdroje • Úloha pridelená potomkovi už viac nie je požadovaná • Ak rodič skončí • Niektoré operačné systémy nedovoľujú potomkovi pokračovať ak ich rodič je ukončený (skončil svoju činnosť) • Všetky deti (potomkovia) sú ukončené – kaskádové ukončenie
Komunikácia medzi procesmi • Procesy v systéme môžu byťnezávisléalebospolupracujúce (kooperujúce) • Spolupracujúci proces môže ovplyvniť alebo byťovplyvnený inými procesmi,zahrňujúc zdieľané dáta • Dôvody pre spolupracujúce procesy: • Zdieľanie informácií • Rýchlosť výpočtu • Modularita • Výhoda • Spolupracujúce procesypotrebujúinterprocess communication (IPC), t.j. medziprocesorovú komunikáciu • Dva modely IPC • Zdieľaná pamäť • Posielanie správMessage passing
Spolupracujúce Procesy • Nezávislý proces nemôže ovplyvniť alebo byť ovplyvnený inými procesmi vykonávanými v systéme • Spolupracujúci(kooperujúci) proces môže ovplyvniť alebo byť ovplyvnený inými procesmi vykonávanými v systéme • Výhody spolupráce procesov • Zdieľanie informácie • Zrýchlenie výpočtov • Modularita • Pohodlie
Producent-Konzument Problem • Paradigma pre spolupracujúce procesy, producent proces produkuje informáciu,ktorá je konzumovanáprocesom konzument • Neohraničený bufernemá žiadny limit na svoju veľkosť • Ohraničený bufer predpokladá fixnú veľkosť bufra
Ohraničený bufer – riešenie použitím zdieľanej pamäte • Zdieľané dáta #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; • Riešenie jesprávne, ale môže použiť len BUFFER_SIZE-1 prvkov
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; }
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; }
Medziprocesorová komunikácia • Mechanizmuspre procesy kvôli komunikácii a synchronizácii ich činností • Systém správ – procesy komunikujú navzájom medzi sebou bez použitia zdieľaných premenných • IPC možnosti poskytujúdve operácie: • send(správa) – veľkosť správy je fixná alebo premenlivá • receive(správa) • AkP a Qchcú komunikovať, potrebujú: • zriadiťkomunikačnúlinkumedzi sebou • vymeniť správy prostredníctvom send/receive • Implementáciakomunikačnej linky • fyzikálna (napr., zdieľaná pamäť, hardwerovázbernica • logická (napr., logické vlastnosti)
Implementačné otázky • Ako nadviazať spojenie? • Môžu sa k linke pripojiť viac ako dva procesy? • Koľko liniek môže existovať medzi každým párom komunikujúcich procesov? • Aká je kapacita linky? • Je dĺžka správy pevne daná (fixná) alebo premenlivá? • Je linka jednosmerná alebo obojsmerná?
Priamakomunikácia • Procesy sa musia navzájom explicitne pomenovať: • send (P, správa) – pošli procesu P správu • receive(Q, správa) – prijmi od procesu Q správu • Vlastnosti komunikačnej linky • Spojenie sa nadviaže automaticky • Spojenie je umožnené presne dvom procesom • Medzi každou dvojicou procesov existuje práve jedno spojenie • Linka môže byť jednosmerná, ale zvyčajne je obojsmerná
Nepriama komunikácia • Správy sú posielané a prijímané z poštových schránok - mailboxov (tiežnazývaných porty) • Každý mailbox má jedinečnú identifikáciuid • Procesymôžu komunikovať len ak zdieľajú mailbox • Vlastnosti komunikačnej linky • Spojenie je zavedené len ak procesyzdieľajú spoločný mailbox • Spojenie môže byť asociované s viacerými procesmi • Každá dvojica procesov môže zdieľať niekoľko komunikačných liniek • Linka môže byť jednosmerná alebo obojsmerná
Nepriamakomunikácia • Zdieľanie Mailboxu • P1, P2, a P3zdieľajú mailbox A • P1, posiela správu do A; P2a P3prijímajú z A • Ktorý proces prijme správu poslanú od A? • Riešenia • Dovoliť spojenie asociované s najviac dvoma procesmi • Dovoliť najviac jednému procesu v danom čase vykonávať operáciu receive • Dovoliť systému rozhodnúť, ktorý proces sa stane prijímateľom správy. Nebudú to oba procesy naraz.
Nepriama komunikácia • Činnosti • Vytvor nový mailbox • Pošli a príjmi správy cez mailbox • Odstráň mailbox • 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
Synchronizácia • Odovzdávanie správ môže byť buď blokované alebo neblokované • Blokovanieuvažované akosynchrónne • Blokovanie odosielania– posielajúci proces je zablokovaný pokiaľ nie je prijatá správa • Blokovanie prijímania– prijímateľ je blokovaný pokiaľ nie je správa k dispozícii • Neblokovanie jeuvažované ako asynchrónne • Neblokovanéposielanie – posielajúci proces pošle správu a pokračuje v činnosti • Neblokované prijímanie – prijímateľ prijme buď platnú správu alebo„nič“l
Bufrovanie • Front správ pripojených k linke, implementovaný je troma spôsobmi: 1.Nulová kapacita – 0 správ vo fronteOdosielateľ musí čakať na príjemcu správy (rendezvous) 2.Ohraničená kapacita – konečná dĺžkansprávOdosielateľ musí čakať ak je front plný 3.Neobmedzená kapacita – nekonečná dĺžkaOdosielateľ nikdy nečaká
Príklady IPC systémov POSIX • POSIX Zdieľaná pamäť • Proces najprv vytvorí segment zdieľanej pamäte segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); • Proces ak chce mať prístup k tejto zdieľanej pamäti, musí sa k nej pripojiť shared memory = (char *) shmat(id, NULL, 0); • Teraz môže proces zapisovať do zdieľanej pamäte sprintf(shared memory, "Writing to shared memory"); • Keď daný proces sa má oddeliť od zdieľanej pamäte, z jej adresného priestoru shmdt(shared memory);
Príklady IPC systému - Mach • Mach komunikácia je správa založená na • Každý systém volá všetky správy • Každá úloha dostane dva mailboxypri vytvorení - Kernel a oznámenie (Notify) • Iba tri systémové volania potrebné pre prenos správy msg_send(), msg_receive(), msg_rpc() • Mailboxypotrebné pre komunikáciu, vytvorené prostredníctvom port_allocate()
Príklady IPC systémov – Windows XP • Správa-možnosť prechodu cezlokálne volanie procedúry(LPC) • Pracuje len medzi procesmi v tom istom systéme • Užívateľské porty (ako mailboxy) na zriadenie a udržiavanie (podporovanie) komunikačných kanálov • Komunikácia pracuje nasledovne: • Klient otvoríprácu spojovacieho portu subsystému objektu • Klient posiela požiadavku na spojenie • Server vytvorí dva privátne komunikačné porty a vrátinarábanie (prácu) jednému z nich (ku klientovi) • Klient a server používajú zodpovedajúci port pre posielanie správ alebo spätné volania(volania naspäť) a „počúva“ odpovede
Komunikácievklient-server systéme • Sokety • Vzdialené volanie procedúr(Remote Procedure Calls) • Rúry (Pipes) • Vzdialené volanie metód (Java)
Sokety • Soket je definovaný ako koncový bod komunikácie • Je vytvorený z IP adresy zreťazenej s číslom portu • Soket 161.25.19.8:1625vzťahujúci sa na port 1625 na hostiteľovi161.25.19.8 • Dvojica procesov komunikuje cez sieť používajúc dvojicu soketov – jeden soket pre každý proces
Volanie vzdialenej procedúry • 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. • Stubs – „client-side proxy“pre aktuálnu procedúru na serveri • „client-side stub“ lokalizuje server a zoraďuje parametre • „server-side stub“prijme túto správu, rozbalí zoradené parametre a vykoná procedúruna serveri
Rúry - Pipes • Najstarší a najjednoduchší mechanizmus komunikácie medzi procesmi • Otázky • Je komunikácia jednosmerná alebo obojsmerná? • V prípadedvojsmernej (obojsmernej)komunikácieje to polovičný alebo plný duplex? • Musí tu existovať vzťah (t.j.rodič - potomok) medzi komunikujúcimi procesmi? • Môžu byť rúry použité v sieti?
Rúry • ObyčajnéRúrydovoľujúkomunikáciuštandardným spôsobomproducent-konzument • Producent zapisuje na jeden koniec (zapisovací koniecrúry) • Konzumentčítaz druhého konca (čítací koniec rúry) • Obyčajnérúry sú preto jednosmerné • Požadujú vzťah rodič – potomok medzi komunikujúcimi procesmi
Pomenované rúry - Named Pipes • Pomenované rúry sú výkonnejšie ako obyčajné rúry • Komunikácia je obojsmerná • Vzťah rodič – potomok (dieťa) nie je potrebný v procese komunikácie • Niekoľko procesovmôže použiť pomenované rúry pre komunikáciu • Poskytujú ich rovnako UNIX-ovské aj Windows-ovské systémy