Skirtumas tarp aklavietės ir badavimo OS

Autorius: Laura McKinney
Kūrybos Data: 3 Balandis 2021
Atnaujinimo Data: 23 Balandis 2024
Anonim
Deadlocks vs Livelocks - Java Concurrency - Java Brains
Video.: Deadlocks vs Livelocks - Java Concurrency - Java Brains

Turinys


Aklavietė ir badas yra sąlygos, kai ištekliai reikalaujantys procesai ilgą laiką buvo atidėti. Nors aklavietė ir badas abu skiriasi viena nuo kitos daugeliu aspektų. Aklavietė yra sąlyga, kai joks procesas nevykdomas vykdyti, o kiekvienas laukia išteklių, kuriuos įgijo kiti procesai. Kita vertus, į Badavimas, procesas su aukštais prioritetais nuolat naudoja išteklius, užkertančius kelią žemo prioriteto procesui ištekliams įsigyti. Toliau pateiktoje palyginimo diagramoje aptarsime dar keletą aklavietės ir bado skirtumų.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasAklavietėBadavimas
PagrindinisAklavietė nėra ta, kurioje procesas nevyksta, ir užsiblokuokite.Badavimas yra vieta, kur blokuojami žemo prioriteto procesai, o vyksta aukšto prioriteto procesas.
Kylanti sąlygaTarpusavio atskirtis, „palaikykite ir palaukite“, „be išimties“ ir „apskritas laukimas“ tuo pačiu metu.Prioritetų vykdymas, nekontroliuojamas išteklių valdymas.
Kitas vardasApskritimas laukti.„Lifelock“.
ŠaltiniaiEsant aklavietėje, kiti procesai blokuoja prašomus išteklius.Badaujant, prašomi ištekliai yra nuolat naudojami aukšto prioriteto procesuose.
PrevencijaVenkite abipusės atskirties, palaikykite ir laukite, taip pat laukite apskrito būdo ir suteikite pirmenybę. Senėjimas.


Aklavietės apibrėžimas

Aklavietė yra situacija, kai keli procesoriaus procesai konkuruoja dėl riboto skaičiaus išteklių, galimų CPU. Čia kiekvienas procesas laiko išteklius ir laukite, kol gausite išteklių, kuriuos laiko kitas procesas. Visi procesai ištisai laukia išteklių. Žemiau esančiame paveikslėlyje galite pamatyti, kad procesas P1 įgijo išteklius R2, kurių reikalauja procesas P2, o procesas P1 prašo išteklių R1, kuriuos vėl laiko R2. Taigi procesas P1 ir P2 sudaro aklavietę.

Aklavietė yra dažna operacinių sistemų, paskirstytų sistemų, taip pat lygiagrečių skaičiavimo sistemų problema. Yra keturios sąlygos, kurios turi atsirasti tuo pačiu metu, kad būtų pakeista aklavietė. Tai yra abipusis atskirtis, sulaikymas ir laukimas, be pasirinkimo ir cirkuliarinis laukimas.

  • Tarpusavio atskirtis: Išteklį gali naudoti tik vienas procesas vienu metu, jei kitas procesas reikalauja to paties ištekliaus, jis turi palaukti, kol procesą naudojantys ištekliai jį išleis.
  • Laikykite ir palaukite: Procesas turi būti išteklių kaupimas ir laukimas, kol bus įgytas kitas resursas, kurį laiko kitas procesas.
  • Nėra išimties: Negalima atsisakyti proceso, kuriame saugomi ištekliai. Ištekliaus laikymo procesas turi išlaisvinti išteklius savanoriškai, kai jis atliks savo užduotį.
  • Apskritasis laukimas: Proceso metu reikia laukti išteklių apykaitos būdu. Tarkime, kad turime tris procesus {P0, P1, P2}. P0 turi laukti išteklių, kuriuos laiko P1; P1 turi laukti, kol gaus resursą, kurį laiko procesas P2, ir P2 turi laukti, kol gaus procesą, kurį laiko P0.

Nors yra keletas programų, kurios gali aptikti programas, kurios gali atsidurti aklavietėje. Bet operacinė sistema niekada nėra atsakinga už aklavietės prevenciją. Programuotojai yra atsakingi už laisvųjų programų kūrimą. Tai galima padaryti vengiant aukščiau išvardytų sąlygų, būtinų aklavietės atsiradimui


Badavimo apibrėžimas

Badavimas gali būti apibrėžtas kaip tada, kai proceso užklausa dėl resurso ir tas resursas buvo nuolat naudojamas kituose procesuose, tada prašantis procesas susiduria su badu. Badaujant, procesas, paruoštas vykdyti, laukia, kol procesorius paskirs resursą. Tačiau procesas turi laukti neribotą laiką, nes kiti procesai nuolat blokuoja prašomus išteklius.

Badavimo problema dažniausiai iškyla prioritetų planavimo algoritmas. Taikant prioritetų planavimo algoritmą, procesas su didesniu prioritetu visada yra skiriamas ištekliui, neleidžiant žemesnio prioriteto procesui gauti prašomo šaltinio.

Senėjimas gali išspręsti bado problemą. Senėjimas pamažu didina proceso, kuriam ilgai laukta išteklių, prioritetą. Senėjimas neleidžia mažo prioriteto procesui neribotą laiką laukti išteklių.

  1. Aklavietėje nė vienas procesas nevykdomas vykdyti, kiekvienas procesas užsiblokuoja ir laukia kito proceso įgytų išteklių. Kita vertus, badavimas yra sąlyga, kai aukštesnio prioriteto procesams leidžiama nuolat įsigyti išteklių, užkertant kelią žemo prioriteto procesams įsigyti išteklių, dėl kurių neribotai blokuojami žemo prioriteto procesai.
  2. Aklavietė atsiranda, kai yra keturios sąlygos Tarpusavio atskirtis, palaikykite ir palaukite, be išimties ir cirkuliarus laukimas atsiranda vienu metu. Tačiau badas atsiranda proceso metu prioritetai buvo įgyvendinti paskirstant išteklius arba sistemoje yra nekontroliuojamas išteklių valdymas.
  3. Aklavietė dažnai vadinama vardu apskrito laukimo kadangi badas vadinamas Gyveno užraktas.
  4. Aklavietėje resursus blokuoja procesas, tuo tarpu badaujant procesus nuolatos naudojami procesai, turintys aukštus prioritetus.
  5. Aklavietės galima išvengti vengiant tokių sąlygų kaip abipusis atskirtis, palaikymas ir laukimas bei apskritas laukimas ir leidžiantis užkirsti kelią procesams, kurie ilgą laiką kaupia išteklius. Kita vertus, badavimui galima užkirsti kelią senėjimas.

Išvada:

Tiek aklavietė, tiek badas atidėlioja proceso vykdymą, blokuodami. Viena vertus, dėl aklavietės procesai gali badauti, kita vertus, badavimas gali ištraukti procesus iš aklavietės.