Umpikuja sisään Operating System: Mikä on, kiertokirje (esimerkkejä)

⚡ Älykäs yhteenveto

Käyttöjärjestelmässä lukkiutuminen tapahtuu, kun joukko prosesseja estetään, koska jokainen niistä pitää hallussaan resurssia ja odottaa toista, jota toinen prosessi pitää hallussaan. Tämä luo kehämäisen ketjun, jossa mikään prosessi ei voi edetä.

  • 🔒 Määritelmä: Lukkiutumistila jäädyttää prosessit, joilla kullakin on resurssi odottaessaan toisiaan.
  • 🧩 Neljä ehtoa: Keskinäisen poissulkemisen, odotusajan, ei etuoikeutta ja kehäodotuksen on kaikki pädettävä yhdessä.
  • 🔁 Pyöreä odotus: Prosessit muodostavat suljetun ketjun, jossa jokainen odottaa seuraavan hallussa olevaa resurssia.
  • 🛡️ ennaltaehkäisy: Minkä tahansa neljästä ehdosta rikkoutuminen estää umpikujan muodostumisen.
  • 🏦 Välttäminen: Pankkiirin algoritmi tarkistaa resurssipyynnöt pitääkseen järjestelmän turvallisessa tilassa.
  • 🤖 Tekoälyn kulma: Koneoppiminen tunnistaa lukkiutumiskuvioita, ja Copilot auttaa lukituskoodin kirjoittamisessa ja tarkistamisessa.

Umpikuja sisään Operating System

Mikä on umpikuja?

umpikuja on tilanne, joka syntyy käyttöjärjestelmän kun prosessi siirtyy odotustilaan, koska toinen odottava prosessi pitää hallussaan vaadittua resurssia. Lukkiutuminen on yleinen ongelma moniajoprosessoinnissa, jossa useat prosessit jakavat tietyn tyyppisen toisensa poissulkevan resurssin, joka tunnetaan nimellä pehmeä lukko tai ohjelmistolukko.

Kun lukkiutumistilanne tapahtuu, mikään prosessi ei voi jatkua, joten kyseinen työ pysähtyy, kunnes käyttöjärjestelmä puuttuu asiaan.

Esimerkki umpikujasta

  • Todellinen esimerkki olisi liikenne, joka kulkee vain yhteen suuntaan.
  • Tässä siltaa pidetään resurssina.
  • Joten kun umpikuja tapahtuu, se voidaan ratkaista, jos yksi auto peruuttaa (resurssien varaaminen ja peruuttaminen).
  • Useita autoja voidaan joutua peruuttamaan, jos lukkiutumista tapahtuu.
  • Joten nälkäkuolema on mahdollinen.

Esimerkki umpikujasta

Esimerkki umpikujasta

Mikä on Circular odottaa?

Yksi prosessi odottaa toisen prosessin hallussa olevaa resurssia, joka puolestaan ​​odottaa kolmannen prosessin hallussa olevaa resurssia ja niin edelleen. Tämä jatkuu, kunnes viimeinen prosessi odottaa ensimmäisen prosessin hallussa olevaa resurssia. Tämä luo ympyränmuotoisen ketjun.

Esimerkiksi prosessille A allokoidaan resurssi B, kun se pyytää resurssia A. Samalla tavalla prosessille B allokoidaan resurssi A, kun se pyytää resurssia B. Tämä luo ympyränmuotoisen odotussilmukan.

Esimerkki pyöreästä odotuksesta

Esimerkiksi tietokoneessa on kolme USB-asemaa ja kolme prosessia. Jokaisella kolmesta prosessista on yksi USB-asema. Joten kun jokainen prosessi pyytää toista asemaa, kolme prosessia ajautuvat umpikujaan, koska jokainen odottaa USB-aseman vapautumista sen ollessa vielä käytössä. Tämä johtaa ympyränmuotoiseen ketjuun.

Esimerkki pyöreästä odotuksesta

Esimerkki pyöreästä odotuksesta

Lukkiutuman tunnistus käyttöjärjestelmässä

Resurssien ajoitus voi havaita lukkiutumistilanteen. Resurssien ajoitus auttaa käyttöjärjestelmää pitämään track kaikista eri prosesseille allokoiduista resursseista. Kun lukkiutumistilanne havaitaan, se voidaan ratkaista varaamalla resursseja, peruuttamalla prosessia tai lopettamalla yksi tai useampi lukkiutunut prosessi.

Lukkiutuman esto käyttöjärjestelmässä

On tärkeää estää lukkiutuminen ennen sen syntymistä. Järjestelmä tarkistaa jokaisen tapahtuman ennen sen suorittamista varmistaakseen, ettei se johda lukkiutumiseen. Edes pientä operaatiota, joka voisi aiheuttaa lukkiutumisen tulevaisuudessa, ei koskaan sallita suorittaa.

Lukkiutumisen estäminen on joukko menetelmiä, joilla varmistetaan, ettei ainakin yksi neljästä välttämättömästä ehdosta voi täyttyä.

Ei ennakkoluuloja

Resurssin voi vapauttaa vain sitä hallussaan pitävä prosessi vapaaehtoisesti sen jälkeen, kun prosessi on suorittanut tehtävänsä.

  • Jos prosessi, jolla on resursseja hallussaan, pyytää toista resurssia, jota ei voida välittömästi allokoida sille, kaikki sen resurssit vapautetaan.
  • Varatut resurssit lisätään niiden resurssien luetteloon, joita prosessi odottaa.
  • Prosessi käynnistetään uudelleen vasta, kun se voi saada takaisin vanhat resurssinsa sekä pyytämänsä uudet.

Yhteinen poissulkeminen

Mutual Exclusion on Mutual Exclusionin täydellinen muoto. Se on erityinen binäärimuoto. viestittää jota käytetään jaetun resurssin käytön hallintaan. Se sisältää prioriteetin periytymismekanismin, joka välttää pitkittyneet prioriteetin inversio-ongelmat ja pitää korkeamman prioriteetin tehtävät estettyinä mahdollisimman lyhyen aikaa.

Jaetut resurssit, kuten vain luku -tiedostot, eivät koskaan johda umpikujaan, mutta resurssit, kuten tulostimet ja nauha-asemat, tarvitsevat yhden prosessin yksinomaisen käyttöoikeuden.

Pidä ja odota

Tässä tilassa prosessit on pysäytettävä pitämästä hallussaan yhtä tai useampaa resurssia samalla, kun ne odottavat yhtä tai useampaa muuta resurssia.

Pyöreä odotus

Tämä menetelmä edellyttää kaikkien resurssityyppien täydellistä järjestystä. Ympyräodotuksen estäminen edellyttää myös, että jokainen prosessi pyytää resursseja nousevassa luettelojärjestyksessä.

Umpitilanteen välttäminen Algorithms

On parempi välttää lukkiutumista kuin ryhtyä toimiin lukkiutumisen jälkeen. Välttäminen tarvitsee lisätietoja, kuten miten resursseja käytetään. Lukkiutumisen välttäminen on hyödyllinen malli, jossa jokainen prosessi ilmoittaa tarvitsemansa resurssien enimmäismäärän kutakin tyyppiä.

Välttäminen Algorithms

Lukkiutumisen välttämisalgoritmi arvioi resurssien allokointitilan dynaamisesti, jotta kehämäistä odotustilannetta ei voi koskaan syntyä.

Yksittäisen resurssityypin esiintymä:

  • Käytä resurssien allokointikaaviota.
  • Graafissa oleva sykli on välttämätön ja riittävä umpikujaan johtamiselle.

Useille resurssityypin esiintymille:

Ero nälkään ja umpikujaan

Tässä on joitakin tärkeitä eroja umpikujan ja nälänhädän välillä:

umpikuja nälkiintyminen
Lukkiutumistilanne syntyy, kun jokin prosesseista estyy. Nälkä on tilanne, jossa kaikki matalan prioriteetin prosessit estetään, kun taas korkean prioriteetin prosessit suoritetaan.
Umpikuja on ääretön prosessi. Nälkäkuolema on pitkä odotus, mutta ei loputon prosessi.
Jokaisessa umpikujassa on aina nälkäkuolema. Jokainen nälkäkuolema ei välttämättä johda umpikujaan.
Lukkiutuminen tapahtuu keskinäisen poissulkemisen, odotustilan, etuoikeuden puuttumisen ja kehämäisen odotuksen samanaikaisen esiintymisen vuoksi. Se tapahtuu hallitsemattoman priorisoinnin ja huonon resurssienhallinnan vuoksi.

Deadlockin edut

Tässä ovat lukkiutumisten käsittelymenetelmän käytön edut:

  • Tämä tilanne toimii hyvin prosesseille, jotka suorittavat yhden aktiviteettipurskeen.
  • Lukkiutumiseen ei tarvita ennakko-oikeutta.
  • Se on kätevä menetelmä, kun sitä sovelletaan resursseihin, joiden tila voidaan tallentaa ja palauttaa helposti.
  • Se on mahdollista valvoa käännösaikaisten tarkistusten avulla.
  • Se ei vaadi ajonaikaista laskentaa, koska ongelma on ratkaistu järjestelmän suunnittelussa.

Deadlockin haitat

Tässä ovat lukkiutumisten käsittelymenetelmän haitat:

  • Se viivästyttää prosessin käynnistymistä.
  • Prosessien on tiedettävä tulevat resurssitarpeensa etukäteen.
  • Se ennakoi useammin kuin on tarpeen.
  • Se estää lisäresurssipyynnöt.
  • Sillä on luontaisia ​​​​ennenosto-oikeudellisia tappioita.

UKK

Lukkiutumistilanteen on oltava voimassa neljä Coffmanin ehtoa: keskinäinen poissulkeminen, odotustila, ei etuoikeutta ja kehäodotus. Yhdenkin näistä ehdoista poistaminen estää lukkiutumisen muodostumisen.

Esto poistaa yhden neljästä ehdosta etukäteen, joten lukkiutumista ei voi koskaan muodostua. Välttämismenetelmä sallii ehdot, mutta käyttää ajonaikaisia ​​tarkistuksia, kuten Pankkiirin algoritmi, pitääkseen järjestelmän turvallisessa tilassa.

Lukkiutumistilassa estetyt prosessit pysähtyvät kokonaan eivätkä koskaan muuta tilaansa. livelockProsessit vaihtavat tilaansa ja käyttävät suoritinta jatkuvasti, mutta eivät silti edisty. Livelock on resurssien puutteen erikoistapaus.

Useimmat yleiskäyttöiset järjestelmät, mukaan lukien Windows ja Linuxissa käytetään strutsialgoritmia ja yksinkertaisesti jätetään harvinaiset lukkiutumat huomiotta, koska niiden ennaltaehkäisy on kallista. Tietokannat ja reaaliaikaiset järjestelmät sen sijaan suorittavat aktiivisia tunnistus- ja palautusrutiineja.

Resurssien allokointigraafi kuvaa prosessit ja resurssit solmuina, jotka on yhdistetty pyyntö- ja määritysreunoilla. Graafiin merkitty sykli merkitsee mahdollista umpikujaa; yksittäisten instanssien resurssien tapauksessa sykli tarkoittaa aina umpikujaa.

Ei. Todellinen lukkiutumistilanne on pysyvä, koska estetyt prosessit eivät koskaan vapauta resurssejaan itse. Käyttöjärjestelmän on murrettava se varaamalla resurssi, peruuttamalla prosessi tai lopettamalla jokin prosesseista.

Koneoppimismallit oppivat resurssipyyntöjen kaavoja ennustaakseen ja merkitäkseen lukkiutumia ennen niiden syntymistä. Tekoälyajoittajat voivat järjestellä pyyntöjä uudelleen tai säätää lukituskäytäntöjä, mikä on hyödyllistä tietokannoissa, pilvialustoilla ja hajautetuissa järjestelmissä.

Kyllä. GitHub Copilot pystyy havaitsemaan riskialttiita lukitusjärjestyksiä, ehdottamaan johdonmukaista lukituksen hankkimista ja luomaan testejä, jotka paljastavat lukkiutumia. Voit käsitellä sen tulosta ensimmäisen kierroksen testinä ja silti tarkistaa samanaikaisuuslogiikan asianmukaisilla analyysityökaluilla.

Tiivistä tämä viesti seuraavasti: