Lukkiutuminen

Tässä artikkelissa tarkastellaan perusteellisesti Lukkiutuminen:tä ja sen vaikutuksia nyky-yhteiskuntaan. Ilmestymisestään lähtien Lukkiutuminen on synnyttänyt loputtomasti mielipiteitä ja keskusteluja, ja siitä on tullut toistuva keskustelunaihe. Viime vuosina Lukkiutuminen on saavuttanut entistä suuremman merkityksen ja vaikuttanut niinkin monimuotoisiin näkökohtiin kuin politiikka, talous, kulttuuri ja teknologia. Näillä sivuilla tutkimme eri näkökulmia, joista Lukkiutuminen:tä voidaan lähestyä, ja tutkimme sen vaikutuksia ja haasteita nykymaailmassa. Epäilemättä Lukkiutuminen on edelleen pohdinnan ja analyysin aihe, ja tämä artikkeli pyrkii valaisemaan sen merkitystä ja merkitystä.

Lukkiutuminen (engl. deadlock) on tilanne, jossa kaksi tai useampia prosessia ei pääse etenemään, koska ne odottavat toisiaan. Tilanne syntyy helposti ohjelmointivirheen tuloksena, kun yritetään ratkaista rinnakkaisuuden mukanaan tuomia ongelmia.

Lukkiutumisella on neljä välttämätöntä ja samalla riittävää ehtoa. Tämä tarkoittaa sitä, että lukkiutuminen on mahdotonta, elleivät kaikki ehdot ole tosia, ja toisaalta sitä, että lukkiutuminen ennen pitkää tapahtuu, jos kaikki ehdot ovat tosia. Ehdot ovat:

  1. Poissulkemisehto. Tämä tarkoittaa sitä, että prosessi (tai säie) varaa jonkin resurssin vain omaan käyttöönsä. Resurssi voi olla esimerkiksi muistia, oheislaite tai tiedosto.
  2. Irrottamattomuusehto. Tämä tarkoittaa sitä, että vain prosessi itse voi vapauttaa varaamansa resurssin.
  3. Varaus-odotusehto. Tämä tarkoittaa sitä, että prosessi ei vapauta resurssejaan odottaessaan lisäresurssien vapautumista.
  4. Silmukkaodotusehto. Tämä tarkoittaa sitä, että prosessit odottavat toisiaan silmukassa, eli prosessi A odottaa prosessin B varaamaa resurssia ja päinvastoin.

Koska yhdenkin ehdon rikkominen riittää estämään lukkiutumiset, ei kaikkia ehtoja tarvitse estää. Esimerkiksi virtuaalimuistijärjestelmä rikkoo irrottamattomuusehtoa: käyttöjärjestelmä voi vapauttaa keskusmuistia ilman prosessin myötävaikutusta. Näin keskusmuistin loppuminen kesken ei voi aiheuttaa järjestelmän lukkiutumista. Sovelluksissa on tyypillistä varata resurssit aina samassa järjestyksessä, jolloin silmukkaodotusehto ei voi toteutua. Varjopuolena on se, että osa varauksista joudutaan tällöin tekemään liian aikaisin.

Lukkiutumista muistuttavia ongelmia ovat nälkiintyminen (engl. starvation) ja livelock.[1]

Katso myös

Lähteet

  • Ilkka Haikala ja Hannu-Matti Järvinen: Käyttöjärjestelmät (luku 3). Talentum 2003. ISBN 951-762-837-4

Viitteet

  1. Starvation and Livelock docs.oracle.com. Viitattu 23.11.2019. (englanniksi)