1 / 29

Synchronizácia I/O

Synchronizácia I/O. 4. prednáška VRVS. Synchronizácia. Chceme zabrániť časovo závislým chybám Keď je výpočet závislý na výsledku iných úloh V lepšom prípade sa na výsledky čaká V horšom prípade sa pracuje so starými dátami. Ochrana zariadení.

jeanne
Download Presentation

Synchronizácia I/O

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Synchronizácia I/O 4. prednáška VRVS

  2. Synchronizácia • Chceme zabrániť časovo závislým chybám • Keď je výpočet závislý na výsledku iných úloh • V lepšom prípade sa na výsledky čaká • V horšom prípade sa pracuje so starými dátami

  3. Ochrana zariadení • Ak by dva procesy naraz tlačili na tlačiareň, tak by boli výsledky premiešané • alebo ak by dva procesy zapisovali do súboru, výsledok by bol taktiež mix: • Jeden píše Milan • Druhý píše Schmotzer • Výsledok MScilahmontzer

  4. Riešenie • Pripustiť k tlačiarni jediný proces (napríklad démon lpd v Unixe) • Ostatné programy tlačia do súboru • Keď je súbor hotový, oznámia to lpd • Všeobecnejšie povedané zariadenie obsluhuje jediný (dopredu definovaný) proces

  5. Iná možnosť • Proces požiada o zariadenie • OS mu pridelí exkluzívny prístup k zariadeniu • Po ukončení procesu je prostriedok (zariadenie) uvoľnený

  6. Komunikácia medzi procesmi • Zdieľajú spoločnú dátovú štruktúru(kus pamäte, súbor apod.) • Ako synchronizovať komunikáciu? • Najjednoduchší je binárny semafor BS • Je dvojhodnotový. • 0 = voľno, 1 = obsadené zariadenie

  7. BS – proces musí • zistiť hodnotu semaforu (0 alebo 1) pre žiadaný prostriedok/zariadenie, • nastaviť semafor na 1, • použiť prostriedok ovládaný semaforom, • nastaviť semafor na 0 (po uvoľnení prostriedku/zariadenia).

  8. TS • Na test i nastavenie sa používa procesorová inštrukcia TS – test and set • Nemôže byť prerušená v prospech iného procesu • Takto nedôjde k havárii dvoch procesov (kedy jeden otestuje BS=0 aj druhý, ale uprostred testu druhý nastaví BS:=1 a semafor by nefungoval správne)

  9. Problém a jeho riešenie • Proces čakajúci na uvoľnenie zariadenia nespí, ale v cykle volá príkaz TS • To zaťažuje počítač. Preto sa používa stratégia zvaná WAIT a SIGNAL • Žiadateľ o prostriedok s prideleným semaforom X volá funkciu LOCK(X) • Ak funkcia zistí, že prostriedok je obsadený, volá funkciu jadra WAIT(X)

  10. WAIT a SIGNAL • Dispečer prepne volajúci proces do stavu čakajúci – proces tak nespotrebúva CPU • Ak niektorý proces uvoľňuje zariadenie, volá funkciu UNLOCK(X) • Dispečer zavolá funkciu SIGNAL(X), ktorá prehľadá tabuľku procesov, či niektorý nečaká na uvoľnenie semaforu X • Ak áno, taký proces bude prebudený

  11. Zovšeobecnené semafory • Operácia P(S) vykoná S:=S-1 • Ak S<0, volá funkciu WAIT(S) • Operácia V(S) vykoná S:=S+1 • Ak S≤0, volá funkciu SIGNAL(S) • Ak S iba nastavujeme na 1 alebo 0, ide o obyčajné funkcie LOCK(S) a UNLOCK(S)

  12. Príklad: Producent a konzument • Konzument nemá čítať prázdne dáta • Producent nemá preplniť zásobník • Do dátovej štruktúry sa zmestí n položiek • Použijeme dva semafory s počiatočným nastavením • S1=n • S2=0

  13. Algoritmus producenta Pp • Vyskúšajte si pre S1=2 a S2=0: • Vytvor položku, • P(S1), • ulož položku do vyrovnávacej pamäte, • V(S2), • opakuj algoritmus od bodu 1.

  14. Algoritmus konzumenta Pc • P(S2), • odober položku z vyrovnávacej pamäte, • V(S1), • spotrebuj položku, • opakuj algoritmus od bodu 1.

  15. Komunikácia • Všeobecne môže byť priama • SEND(PR, M) pošli správu M procesu PR • RECEIVE(PS,M)príjmi správu Mod procesu PS • Nepriama komunikácia používa schránku: • WRITE(SCHRANKAX, MESSAGE) • READ(SCHRANKAX, MESSAGE)

  16. Otázky • Môže do schránky (my hovoríme na port) písať správy viacero programov? • Odpoveď: ehe • Môže obsah schránky správ čítať viacero programov? • Odpoveď: e-e(dá sa, ale skomplikujeme si život)

  17. Otázky na skúšku • Otázka: Kto prideľuje porty? • Odpoveď: Operačný systém • Otázka: Aha, a tá komunikácia je na lokálnom počítači alebo cez sieť? • Odpoveď: To je jedno, pretože toto je len všeobecný princíp

  18. Uviaznutie • Zablokujú sa nám dva prostriedky pomocou dvoch procesov takto: • Proces A chce zariadenie Z1 • Proces B chce zariadenie Z2 • Proces A chce aj zariadenie Z2 ale ma ho rezervovane proces B ! Musí teda čakať • Ak teraz proces B chce zariadenie Z1, je to celé v keli – čakať sa bude do nekonečna

  19. Riešenie blokácie • Zablokovanie (uviaznutie) je anglicky deadly embrance resp. deadlock • Najjednoduchšie riešenie je úplné počiatočné pridelenie – program pred spustením nesie v hlavičke oznam, ktoré zariadenia potrebuje

  20. Úplné počiatočné pridelenie • Pridelia sa mu všetky zariadenie alebo sa vôbec nespustí, ak je niektoré zariadenie používané iným • Nevýhoda – blokuje zariadenia, ktoré možno ani nepoužije.

  21. Dynamické prideľovanie • Riadené prideľovanie prostriedkov: • Program na začiatku oznámi, ktoré zariadenia potrebuje • Operačný systém odhadne možnosť zablokovania a ak nie je pravdepodobná, spustí program • Ak dôjde k zablokovaniu, pokračuje len prvý proces a ostatné sú dočasne uspaté

  22. Dynamické prideľovanie 2 • Hierarchické prideľovanie prostriedkov • Prostriedky označí číslami (tlačiareň 1, páska 2) • Proces smie žiadať o (momentálne voľný) prostriedok v rastúcej číselnej postupnosti • Zaručuje nezablokovanie, ale vynútená postupnosť rezervácie zariadení nevyhovuje

  23. Dynamické prideľovanie 3 • Detekcia uviaznutia a zotavenie sa z neho • Pripúšťa také zablokovanie, z ktorého sa vie operačný systém zotaviť • Každý prostriedok dostane svoje číslo • Procesy si rezervujú prostriedky volaním funkcií rezervuj(X) a uvoľni(X) • RATBL (Resource Assignment Table) – tabuľka pridelenia prostriedkov

  24. PWTBL (Process Wait Table) – tabuľka procesov čakajúcich na pridelenie prostriedkov • Riadok tabuľky RATBL obsahuje číslo prostriedku a číslo procesu, ktorému je prostriedok pridelený • Položka tabuľky PWTBL obsahuje číslo procesu a potom číslo prostriedku, na ktorý proces čaká

  25. Akonáhle si proces rezervuje alebo uvoľní prostriedok, jadro operačného systému správnym spôsobom pozmení príslušné tabuľky • Akonáhle je požadovaný uzamknutý prostriedok (už si ho rezervoval iný proces), aplikuje sa algoritmus detekcie zablokovania

  26. Algoritmus detekcie zablokovania • Striedavo používa druhú položku jednotlivých tabuliek (pretože tá je stále indexom do tej druhej tabuľky) na detekciu procesov, ktoré navzájom na seba čakajú. Ak sa medzi nimi vyskytne proces, ktorého požiadavka detekciu zablokovania spustila, k zablokovaniu došlo.

  27. Príklad blokády • Proces 1 si žiada prostriedok 2. V RATBL zistíme, že ho má pridelený proces 4. V tabuľke PWTBL sa pozrieme na 4. riadok a zistíme, že proces s číslom 4 čaká na prostriedok 1. Z 1. riadku RATBL zistíme, že prostriedok 1 je používaný procesom 2. Z PWTBL zistíme, že proces 2 čaká na uvoľnenie prostriedku 3. Z RATBL zistíme, že prostriedok 3 už používa náš proces 1

  28. Tabuľky z príkladu • PWTBL RATBL(čakajú) (majú)1 – 2 1 – 22 – 3 2 – 43 – 0 (nečaká) 4 – 1 3 – 1

  29. Zotavenie sa z uviaznutia • Vážny problém • zložitý algoritmus pre návrat vo výpočte až k bodu, kedy bol prostriedok pridelený procesu • Alebo technika kontrolných bodov, ktorá vždy pri pridelení prostriedku ukladá obsahy registrov a celý stav procesu

More Related