1 / 34

Lukkiutuminen

Lukkiutuminen vikatilanne, joka saattaa syntyä usean prosessin toimiessa samanaikaisesti järjestelmässä johtaa mahdollisesti tietokoneen täydelliseen pysähtymiseen määritelmä:

nitza
Download Presentation

Lukkiutuminen

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. Lukkiutuminen • vikatilanne, joka saattaa syntyä usean prosessin toimiessa samanaikaisesti järjestelmässä • johtaa mahdollisesti tietokoneen täydelliseen pysähtymiseen • määritelmä: On olemassa epätyhjä joukko prosesseja, jotka eivät pysty jatkamaan suoritustaan, koska odottavat jonkin toisen samaan joukkoon kuuluvan prosessin vapauttavan resurssin, jota ei vapauteta, ellei toinen samaan joukkoon kuuluva odottava prosessi vapauta joitain resurssejaan. • Prosessi on lukkiutunut, jos se kuuluu joukkoon • Esim. puskurimuisti

  2. Lukkiutumisen ehdot Seuraavien asioiden täytyy olla voimassa, jotta lukkiutuminen voi tapahtua • poissulkemisehto: resurssia voi käyttää vain rajattu määrä (usein yksi) prosesseja kerrallaan • varaa-ja-odota –ehto: prosessi varaa resurssit odotuksen ajaksi • irrottamattomuusehto • rengasvarausehto

  3. Ratkaisumallit • Lukkiutumisen estäminen, • Lukkiutumisen välttäminen, • Lukkiutumistilanteen havaitseminen ja siitä toipuminen • Manuaalinen ratkaisu (prosessien tappaminen tai kylmästartti)

  4. Lukkiutumisen estäminen (ehkäisy) • onnistuu järjestämällä niin, että yksi ehdoista ei ole voimassa • poissulkemista ei voida poistaa, aina voimassa • varaa-ja-odota: nälkiintymisen mahdollisuus, käyttämättömiä resursseja, ennakoinnin tarve jatkuu…

  5. … jatkuu • irrottamattomuus: • varaava prosessi voidaan pakottaa luopumaan varaamistaan resursseista tehdessään pyyntöä varattuun resurssiin • prosessi voi viedä väkisin resurssin toiselta prosessilta (esim. jos se on prioriteetiltaan korkeammalla kuin menettävä prosessi) • prosessi voi peruuttaa varauksensa, saattaa johtaa livelock-tilanteeseen, jossa järjestelmä ei ole lukossa, mutta ei etenekään jatkuu…

  6. … jatkuu • Rengasvarausehto: vaaditaan, että resurssit varataan tietyssä järjestyksessä. Mikä on normaali järjestys, jota pitäisi seurata? Jos varannut jo jotain järjestyksessä alhaisempaa, miten se varaa ylempänä olevia? Kaikki tavat johtavat suorituskyvyn heikkenemiseen ja resurssien vajaakäyttöön

  7. Välttäminen • Välttämisen menetelmät ovat monimutkaisempia kuin ehkäisyn, mutta ovat myös tehokkaampia • jokaisen resurssipyynnön yhteydessä tehdään arvio mahdollisesta lukkiutumistilanteesta • ongelmana tarve tuntea tulevat tarpeet • karkea tapa: jos prosessi voi aiheuttaa lukkiutumisen, sen käynnistäminen estetään – aiheuttaa nälkiintymistä

  8. Pidetään kirjaa resursseista vektoreilla ja matriiseilla (m resurssia ja n prosessia): • Resurssit (R) sijoitetaan vektoriin, johon merkitään jokaisen resurssien kokonaismäärä järjestelmässä • Vapaana (V) olevat resurssit sijoitetaan omaan vektoriin • Varauspyynnöt (C, claim) sijoitetaan matriisiin, johon varataan jokaiselle prosessille oma rivi ja resursseille saraka • Osoitetut resurssit (A, allocation) C:tä vastaavaan matriisiin

  9. C-matriisiin on kirjattava kaikki mahdolliset pyynnöt ennen prosessin käynnistämistä Seuraavat yhtälöt pätevät:

  10. Dijkstran pankkiirialgoritmi • Perusmenetelmää joustavampi. • Suorituksessa olevien prosessien kokonaisresurssivaatimukset voivat ylittää kokonaisresurssitarjonnan. • käyttöjärjestelmä määrittelee prosesseille ’luottorajat’, jotka määrittelevät kuinka paljon prosessi voi saada resursseja. Prosessi ei palauta resursseja (yleensä) ennen kuin se on saanut varattua koko rajansa täyteen • pidettävä siis kirjaa siitä, että ainakin yksi prosessi voi saada jäljellä olevista resursseista riittävästi suorittaakseen itsensä loppuun • Järjestelmä on turvallisessa tilassa, jos on ainakin yksi järjestys, jonka mukaan kaikki suorituksessa olevat prosessit voidaan suorittaa loppuun. Muut mahdolliset tilat ovat ei-turvallisia. Käyttöjärjestelmä pyrkii siis jakamaan resursseja siten, että se ei joudu ei-turvalliseen tilaan

  11. http://www.uwasa.fi/~h79423/kj/pankkiiri.html • Prosessi pyytää resursseja, järjestelmä tarkistaa, että pyyntö pysyy prosessin varauksen rajoissa, jos se ei ole, syntyy virhe • Järjestelmä tarkistaa, onko resursseja riittävästi vapaana riittävästi, jos ei ole, prosessi joutuu odottamaan. • Järjestelmä tarkistaa seuraavan tilan turvallisuuden. Jos tila ei olisi enää turvallinen, prosessi pysäytetään ja alkuperäinen tila palautetaan. Muussa tapauksessa prosessi saa pyytämänsä resurssit

  12. Tilan turvallisuuden tarkastaminen tapahtuu simuloimalla: Etsitään aina prosessi, joka voitaisiin vapailla resursseilla suorittaa ja merkitään se sitten simulaatiossa suoritetuksi. Toistetaan operaatiota, kunnes kaikki prosessit on merkitty suoritetuiksi. Jos jossain vaiheessa ei löydy suoritettavaksi sopivaa prosessia, todetaan, että uutta prosessia ei voi lisätä suoritettaviin.

  13. Pankkiirialgoritmin rajoitukset • Enimmäisvaraukset pitää ilmoittaa ennakkoon • prosessit eivät saa olla toisistaan riippuvaisia • prosesseille osoitettavia resursseja on oltava muuttumaton määrä. • Yksikään prosessi ei voi lopettaa toimintaansa vapauttamatta kaikkia resurssejaan

  14. Havaitseminen ja purkaminen Lähestymistavan muutos: ehkäisyssä ja välttämisessä pyritään suunnittelulla estämään lukkiutuminen, purkamisessa annetaan järjestelmän toimia omillaan, kunnes lukkiutuminen havaitaan eli ajetaan jollain periaatteella ajoittain havaitsemisalgoritmi ja jos jotain havaitaan, tilanne yritetään jotenkin purkaa

  15. Miten havaitseminen suoritetaan? • Jos suoritetaan liian usein, syö resursseja, jos liian harvoin, resursseja jää käyttämättä • lukkiutuminen vaikea havaita tapahtumasta, koska mitään ei tapahdu • lukkiutuminen voidaan havaita tarkastamalla, että onko olemassa rengasvaraus • Otetaan käyttöön uusi matriisi Q (pyyntö)

  16. Lukkiutumisen havaitseva algoritmi toimii seuraavasti: • Merkitse jokainen rivi Osoitettu-matriisissa, jolla on pelkkiä nollia • Sijoita Vapaana-vektori tilapäiseen vektoriin W. • Etsi indeksi i siten että prosessia i ei ole merkitty ja Q:n i:s rivi on komponenteittain pienempi tai yhtä suuri kuin W. (Eli qik  Wk kaikille 1km). Ellei i:tä löydy, hyppää kohtaan 5. • Merkitse prosessi i ja lisää kyseinen Osoitettu-matriisin rivi komponenteittain vektoriin W. Palaa kohtaan 3. • Kaikki merkityt prosessit pystytään suorittamaan loppuun. Merkitsemättömät ovat lukkiutuneet. Ongelmana jälleen prosessien riippumattomuus ja resurssien kiinteä määrä

  17. Resurssit Määritelmä: mitä tahansa, mitä prosessi voi tarvita • uudelleenkäytettävät • prosessi saa käyttöönsä ja vapauttaa myöhemmin muiden käytettäväksi (prosessori, keskusmuisti, tiedostot, eri laitteiden käyttöoikeus), jako perustuu aikaan. • kertakäyttöiset • prosessi saa käyttöönsä, mutta ei vapauta niitä muiden käytettäväksi (syötteet, keskeytykset, viestit) Eri tyyppien käsittely poikkeaa toisistaan lukkiutumisen suhteen.

  18. Uudelleenkäytettävät resurssit • oletus: äärellinen määrä identtisiä yksiköitä resurssissa Rj • resurssin sisältämien yksiköiden määrä cj on vakio. • Jokainen Rjn yksikkö on joko saatavana tai osoitettu kerrallaan yhdelle ja vain yhdelle prosessille pi. • Rj:n yksikkö voidaan vapauttaa vain, jos se on aikaisemmin osoitettu prosessille.

  19. Tilaa kuvataan graafeilla, jossa käytetään seuraavanlaisia merkintöjä:

  20. Systeemin tilaa kuvaavan suunnatun graafin määrittely on seuraava: • Sen n+m kärkeä edustavat n:ää prosessia ja m:ää resurssia. • Sivut yhdistävät resursseja prosesseihin ja prosesseja resursseihin. • Jokaisen resussityypin Rj sisällä on määrä cj yksiköitä, joita kuvataan tyypillisesti pienillä pallukoilla laatikon Rj sisällä. • Määrä, joka resurssia Rj on osoitettu yksittäiselle prosessille pi ynnä määrä, jota kyseinen prosessi pyytää, ei voi ylittää määrää cj (miksi?).

  21. Tilassa tapahtuu muutos seuraavien tapahtumien myötä: • Jokin osoitettu resurssi vapautuu vapauttamisen, v, (deallocation) myötä • Uutta resurssia pyydetään pyyntö-tapahtumalla, p, (request). • Resurssi osoitetaan prosessille osoittamistapahtumalla, o, (allocation).

  22. Eräs laajaltikäytetty politiikka näiden soveltamisesta on esitetty seuraavassa: • Pyyntö. Olkoon järjestelmä tilassa sj. pi:n sallitaan pyytää mikä tahansa määrä q resurssia Rh, (q+pi:lle jo osoitetut yksiköt resurssia Rh ch) kunhan pi:llä ei ole ennestään odottamassa ainoatakaan pyyntöä minkään resurssin suhteen (koska silloin se olisi pysäytettynä – miksi?). Pyyntö aiheuttaa tilasiirtymän sj-> sk, jossa sk:n uudelleenkäytettäviä resursseja kuvaava graafi on johdettu sj:n vastaavasta kartasta lisäämällä siihen q kappaletta pyyntösivuja pi:stä Rh:hon. • Osoittaminen. Olkoon järjestelmä tilassa sj. pi:n sallitaan saada yksiköitä Rh jos ja vain jos sj:tä kuvaavassa uudelleenkäytettävien resurssien tilagraafissa on pyyntösivu pi:stä Rh:hon ja kaikki k.o. kartassa olevat vastaavat pyynnöt voidaan täyttää samalla kertaa. Osoittaminen aiheuttaa tilasiirtymän sj-> sk, jossa sk:n uudelleenkäytettäviä resursseja kuvaava kartta on johdettu sj:n vastaavasta kartasta muuttamalla jokainen pyyntösivu pi:stä Rh:hon osoitussivuksi. • Vapauttaminen. Olkoon järjestelmä tilassa sj. pi voi vapauttaa q yksikköä resurssia Rh jos ja vain jos on olemassa vähintään q osoitussivua pi:stä Rh:hon, eikä pi:stä lähde pyyntösivuja. Vapauttaminen aiheuttaa tilasiirtymän sj-> sk, jossa sk:n uudelleenkäytettäviä resursseja kuvaava tilagraafi on johdettu sj:n vastaavasta kartasta poistamalla siitä q kappaletta osoitussivuja Rh:sta pi:hin.

  23. Prosessi pi on pysäytetty, jos siitä on pyyntösivu resurssiin Rj, ja resurssiin Ri tulevien pyyntösivujen ep ja siitä lähtevien osoitussivujen eo summa ep+eocj. (eli resurssia Ri ei voida osoittaa sille kylliksi). Jos ei ole olemassa sellaista tilasiirtymien sarjaa, jonka seurauksena pi ei enää olisi pysäytetty, on prosessi pi lukkiutunut.

  24. Jotta saataisiin selville, onko prosessi pi lukkiutunut, voidaan graafia yksinkertaistaa redusoimalla siitä pois prosesseja, jotka voidaan resurssien puolesta suorittaa loppuun. Prosessi pi voidaan redusoida graafista, jos • Prosessi ei ole pysäytetty, • Prosessilla ei ole pyyntösivuja ja • Prosessiin tulee osoitussivuja. Jos redusoinnin jälkeen jää sivuja, järjestelmä on lukkiutunut. Lukkiutumista ei ilmeisesti voida päätellä mistään päällepäin näkyvästä graafin ominaisuudesta, esimerkiksi sykleistä. Määritelmän mukaan graafissa on sykli, jos järjestelmä on lukkiutunut, mutta graafissa oleva sykli ei tarkoita, että järjestelmä olisi lukkiutunut

  25. Kertakäyttöiset resurssit Kertakäyttöisellä resussilla Rj on potentiaalisesti rajaton määrä identtisiä yksiköitä siten, että seuraavat ehdot pätevät: • resurssien lukumäärä, wi, vaihtelee. • Resurssilla on yksi tai useampi tuottajaprosessi pt, jotka voivat kasvattaa wi:tä. • Kuluttajaprosessit pk vähentävät Rj: wi:tä.

  26. Kertakäyttöisten resurssien tilagraafi on suunnattu graafi, jossa seuraavat ominaisuudet pätevät: • Sen n+m kärkeä edustavat n:ää prosessia ja m:ää resurssia. • Sivut yhdistävät resursseja prosesseihin ja prosesseja resursseihin: • Suunnattu sivu prosessista pi resurssiin Rj on pyyntösivu, joka edustaa pi:n tekemää yhden yksikön pyyntöä resurssista Rj. • Suunnattu sivu resurssista Rj prosessiin pi on tuottajasivu, joka tarkoittaa, että prosessi pi. tuottaa resurssia Rj. Jokaisella resurssilla täytyy olla vähintään yksi tuottaja. • Jokaisen resurssityypin Rj sisällä on määrä wj yksiköitä, joita kuvataan tyypillisesti pienillä pallukoilla laatikon Rj sisällä.

  27. Pyyntö. Olkoon järjestelmä tilassa sj. pi:n sallitaan pyytää mikä tahansa määrä q resurssia Rh, kunhan pi:llä ei ole ennestään odottamassa ainoatakaan pyyntöä minkään resurssin suhteen. Pyyntö aiheuttaa tilasiirtymän sj-> sk, jossa sk:n kertakäytettöisiä resursseja kuvaava graafi on johdettu sj:n vastaavasta kartasta lisäämällä siihen q kappaletta pyyntösivuja pi:stä Rh:hon. • Osoittaminen. Olkoon järjestelmä tilassa sj. pi:n sallitaan saada yksiköitä Rh jos ja vain jos tilaa sj kuvaavassa uudelleenkäytettävien resurssien tilagraafissa on pyyntösivu pi:stä Rh:hon ja kaikki prosessin k.o. kartassa olevat vastaavat pyynnöt voidaan täyttää samalla kertaa. Osoittaminen aiheuttaa tilasiirtymän sj-> sk, jossa sk:n uudelleenkäytettäviä resursseja kuvaava kartta on johdettu sj:n vastaavasta kartasta poistamalla siitä kaikki pyyntösivut pi:stä Rh:hon ja vähentämällä wh:ta osoitettujen resurssien määrällä. • Vapauttaminen. Olkoon järjestelmä tilassa sj. pi voi tuottaa resurssia Rh jos ja vain jos on olemassa tuottajasivu pi:stä Rh:hon, eikä pi:stä lähde pyyntösivuja. Vapauttaminen aiheuttaa tilasiirtymän sj->sk, jossa sk:n kertakäyttöisiä resursseja kuvaava tilagraafi on johdettu sj:n vastaavasta graafista kasvattamalla wh:tä pj:n tuottamalla resurssimäärällä.

  28. Koska tämä graafi käyttäytyy eri tavalla kuin uudelleenkäytettävien resurssien vastaava graafi, se vaatii omanlaisensa analyysin. Periaatteet ovat kuitenkin samat kuin edellä. • Prosessi on pysäytetty, jos siitä lähtee pyyntösivu kertakäyttöiseen resurssiin Rh. Prosessi voi jatkaa vasta kun se saa resurssin Rh. Jos niitä ei ole sillä hetkellä saatavilla, on prosessin odotettava, kunnes niitä tuotetaan. Jos resurssin tuottaja on pysäytetty, voi odotuksesta tulla pitkä. Selvittääksemme, onko järjestelmä lukkiutunut, meidän on siis tutkittava tuottajien tiloja.

  29. Milloin järjestelmä sitten on lukkiutunut? Kuten kaikentyyppisillä resursseilla, prosessi on lukkiutunut tilassa s, jos se on pysäytetty tilassa ja kaikissa tiloissa, jotka on saavutettavissa tilasta s käsin. Tarkistaaksemme, onko kyseinen tila lukkiutumistila, voimme taas tarkastella mahdollisia tilasiirtymiä tilasta pois. Graafin redusointi tuottaa aina optimaalisia tuloksia, joten lähdemme siitä. Redusointi etenee seuraavin askelin: • Redusoidaan prosessi pj, jos se ei ole pysäytetty, eikä siitä lähde yhtäkään tuottajasivua. • Kaikkien resurssityyppien Rj, Rk … sisältämien vapaiden resurssien määriä wj, wk… vähennetään prosessista pi niihin tulleiden pyyntösivujen määrällä. K.o. pyyntösivut poistetaan graafista. • Jos jollakin prosessilla on tuottajasivuja, mutta ei pyyntösivuja, vapautetaan siitä määrätön määrä sen tuottamia resursseja ja poistetaan tuottajasivut. • Palataan kohtaan 1.

  30. Purkaminen • Käynnistetään kone uudestaan. • Käyttäjä tappaa prosesseja enemmän tai vähemmän satunnaisesti. • Tapetaan kaikki lukkiutuneet prosessit. Yksi käytetyimmistä – ellei käyteytyin – modernien käyttöjärjestelmien soveltama menetelmä • Rollback-mekanismia käyttäen palautetaan jäjestelmä johonkin aikaisempaan tilaansa. On olemassa vaara, että alkuperäinen tilanne toistuu, mutta rinnakkaisten prosessien epädeterminitisyyden takia tämä on epätodennäköistä. • Tapetaan lukkiutuneita prosesseja, kunnes lukkiutumista ei enää tapahdu. Valintaperuste ”armokuolemalle” pitäisi olla jonkinlainen minimikustannus. Jokaisen terminoinnin jälkeen on tarkastettava onko lukkiutuminen kadonnut. • Irrota prosesseilta resursseja kunnes lukkiutumista ei enää tapahdu. Kuten edellisessä kohdassa, valinta pitäisi tehdä joko jonkinlaisen minimikustannuksen perusteella ja lukkiutumisanalyysista saadun datan pohjalta. Jokaisen operaation jälkeen on tarkastettava lukkiutuminen. Prosessi, jolta irrotettiin resurssi on palautettava aikaisempaan tilaansa rollback-mekanismilla.

  31. Kohdissa 5 ja 6 altavastaavan prosessin valinta voisi perustua esimerkiksi seuraaviin kriteereihin: • Tähän mennessä vähiten käytettyä prosessoriaikaa • Tähän mennessä vähiten tuotettua tulostusta • Suurin arvioitu jäljellä oleva aika • Tähän mennessä vähiten osoitettuja resursseja • Alin prioriteetti

More Related