Rekomenduojama, 2021

Redaktoriaus Pasirinkimas

Skirtumas tarp „Deadlock“ ir „badas“ operacinėje sistemoje

Deadlock ir Starvation abu yra sąlygos, kai procesai, reikalaujantys išteklių, buvo atidėti ilgai. Nors ir aklavietė, ir badas daugeliu aspektų skiriasi vienas nuo kito. „Deadlock“ - tai sąlyga, kai procesas nepradeda vykdyti, ir kiekvienas laukia kitų procesų įsigytų išteklių. Kita vertus, badaujant procesas, kurio prioritetai yra dideli, nuolat naudoja išteklius, užkertančius kelią žemo prioriteto procesui gauti išteklius. Aptarkime daugiau skirtumų tarp aklavietės ir bado, naudojant žemiau pateiktą palyginimo lentelę.

Palyginimo diagrama

Palyginimo pagrindasDeadlockBadas
PagrindinisDeadlock yra vieta, kur procesas nepradedamas ir užblokuojamas.Nusivylimas yra tai, kai užblokuojami žemo prioriteto procesai, o didelio prioriteto procesas vyksta.
Atsiranda sąlygaAbipusio atskyrimo atsiradimas, palaikymas ir laukimas, be išankstinio mokėjimo ir aplinkraščio laukimo vienu metu.Prioritetų vykdymas, nekontroliuojamas išteklių valdymas.
Kitas vardasApvalus laukimas.Lifelock.
IštekliaiIšblokuotuose šaltiniuose kiti procesai blokuoja prašomus išteklius.Badaujant prašomi ištekliai nuolat naudojami aukšto prioriteto procesuose.
PrevencijaVenkite abipusės atskirties, palaikykite ir palaukite, ir apvalią laukti ir leisti iš anksto.Senėjimas.

Deadlock apibrėžimas

Deadlock yra situacija, kai keletas procesorių procesoriuje konkuruoja dėl riboto CPU turimų išteklių skaičiaus. Čia kiekvienas procesas turi išteklių ir laukia, kol įsigyja išteklių, kurį turi kitas procesas. Visi procesai laukia išteklių apvaliu būdu. Žemiau esančiame paveikslėlyje galite matyti, kad procesas P1 įgijo išteklį R2, kurio reikalauja P2 procesas, o procesas P1 prašo ištekliaus R1, kuris vėl yra laikomas R2. Taigi procesas P1 ir P2 sudaro aklavietę.

Deadlock yra dažna problema daugiaprocesinėse operacinėse sistemose, paskirstytose sistemose ir lygiagrečiose kompiuterių sistemose. Yra keturios sąlygos, kurios turi įvykti tuo pačiu metu, kad būtų iškelta aklavietės sąlyga, kuri yra abipusė atskirtis, palaikymas ir laukimas, be išimties ir apvalios laukimo.

  • Abipusė atskirtis: tik vienas procesas vienu metu gali naudoti išteklius, jei kitas procesas reikalauja to paties šaltinio, jis turi palaukti, kol procesas, naudojant išteklius, jį išleis.
  • Laikyti ir palaukti: procesas turi turėti išteklių ir laukti, kol įsigyja kitą šaltinį, kurį turi kitas procesas.
  • Nėra išpirkimo: procesas, kuriuo laikomi ištekliai, negali būti iš anksto atimtas. Procesas, laikantis ištekliaus, turi savanoriškai išlaisvinti išteklius, kai baigia savo užduotį.
  • Apvalus laukimas: procesas turi laukti išteklių apvaliu būdu. Tarkime, mes turime tris procesus {P0, P1, P2}. P0 turi palaukti, kol bus saugomas P1; P1 turi laukti, kol įsigyja procesą P2, ir P2 turi laukti, kad įsigytų P0 valdomą procesą.

Nors yra keletas programų, kurios gali aptikti programas, kurios gali būti užblokuotos. Tačiau operacinė sistema niekada neatsako už užsikimšimų prevenciją. Programuotojų pareiga - kurti programas be aklavietės. Tai gali būti padaryta vengiant pirmiau minėtų sąlygų, kurios yra būtinos aklavietei

Badaujo apibrėžimas

Nusivylimas gali būti apibrėžiamas taip, kaip kai procesas ir išteklių reikalavimas yra nuolat naudojamas kitiems procesams, o prašančiojo proceso metu susiduriama su badu. Badaujant procesas, pasiruošęs vykdyti, laukia, kol CPU paskirstys išteklius. Tačiau procesas turi laukti neribotą laiką, nes kiti procesai nuolat blokuoja prašomus išteklius.

Bado problema dažniausiai atsiranda prioritetų planavimo algoritme . Prioritetinio tvarkaraščių sudarymo algoritme procesas, kuriam taikomas didesnis prioritetas, visada skiriamas ištekliui, užkertant kelią žemesnio prioriteto procesui gauti prašomą išteklių.

Senėjimas gali išspręsti bado problemą. Senėjimas palaipsniui didina proceso, kuris ilgai laukė išteklių, prioritetą. Senėjimas neleidžia procesui su mažu prioritetu laukti neribotą laiką.

Pagrindiniai skirtumai tarp „Deadlock“ ir „badas“ OS

  1. Aklavietėje nė vienas iš procesų nepradeda vykdyti, kiekvienas procesas užblokuotas, kol laukia kito proceso gautų išteklių. Kita vertus, badas yra sąlyga, kai procesai, turintys aukštesnį prioritetą, gali nuolat išteklius įsigyti, užkertant kelią žemo prioriteto procesams gauti išteklių, dėl kurių neribotai blokuojami žemo prioriteto procesai.
  2. Deadlock atsiranda tada, kai tuo pačiu metu įvyksta keturios sąlygos Abipusė atskirtis, Hold and wait, No preemption ir Circular wait . Tačiau badas atsiranda tada, kai skirstant išteklius vykdomi proceso prioritetai arba sistemoje yra nekontroliuojamas išteklių valdymas.
  3. Deadlock dažnai vadinamas apskritojo laukimo pavadinimu, o badaujantis vadinamas „ gyva spyna“ .
  4. „Deadlock“ išteklius blokuoja procesas, o badaujant procesai yra nuolat naudojami procesams, turintiems aukštus prioritetus.
  5. Deadlock gali užkirsti kelią tokioms sąlygoms, kaip abipusė atskirtis, „Hold and wait“ ir „circular wait“ bei leidžiant iš anksto užsitikrinti procesus, kurie laiko išteklius ilgą laiką. Kita vertus, senėjimas gali užkirsti kelią badui.

Išvada:

Tiek „Deadlock“, tiek „badas“ užblokuoja proceso vykdymą. Viena vertus, kai aklavietė gali nulemti procesus, o kita vertus, badas gali išeiti iš aklavietės.

Top