Aklavietė vs badas
Pagrindinis skirtumas tarp aklavietės ir bado yra priežasties ir pasekmės ryšys tarp jų; badas sukelia aklavietę. Kitas įdomus skirtumas tarp aklavietės ir bado yra tas, kad aklavietė yra problema, o badas kartais gali padėti išeiti iš aklavietės. Kompiuterių pasaulyje rašant kompiuterio programą bus daugiau nei vienas procesas / gija, kurie vienu metu veiks vienas po kito, kad įvykdytų reikiamą programos paslaugą. Todėl, norėdamas turėti sąžiningą sistemą, programuotojas turėtų užtikrinti, kad visi procesai / gijos gaus arba gaus pakankamai prieigos prie jiems reikalingų išteklių. Jei ne, bus aklavietė, ir tai vėliau sukels badą. Paprastai teisingoje sistemoje nėra jokių aklaviečių ar bado. Aklavietės ir badas atsiras daugiausia tada, kai daugelis siūlų varžysis dėl ribotų išteklių.
Kas yra aklavietė?
Aklavietė yra sąlyga, atsirandanti, kai dvi gijos ar procesai laukia, kol vienas kitas atliks užduotį. Jie tik pakabins ragelį, bet niekada nesustabdys ir neatliks savo užduoties. Informatikos srityje aklavietes galima pamatyti visur. Operacijų duomenų bazėje, kai du procesai, atlikdami savo operaciją, atnaujins tas pačias dvi informacijos eilutes, bet priešinga tvarka, sukels aklavietę. Kartu programuojant, aklavietė gali įvykti, kai du konkuruojantys veiksmai lauks, kol vienas kitas eis į priekį. Telekomunikacijų sistemose aklavietė gali įvykti dėl signalų praradimo ar sugadinimo.
Šiuo metu aklavietė yra viena iš pagrindinių daugiaprocesinių sistemų ir lygiagretaus skaičiavimo problemų. Kaip sprendimas, programinei ir aparatinei įrangai įdiegta fiksavimo sistema, vadinama procesų sinchronizavimu.
Kas yra badas?
Remiantis medicinos mokslo žodynu, badas yra didelis ar visiškas maistinių medžiagų, reikalingų gyvybei palaikyti, trūkumas. Panašiai ir informatikos srityje badas yra problema, su kuria susiduriama, kai kelios gijos ar procesai laukia to paties ištekliaus, kuris vadinamas aklaviete.
Norėdami išeiti iš aklavietės, vienas iš procesų ar gijų turėtų atsisakyti arba grįžti atgal, kad kita gija ar procesas galėtų naudoti šaltinį. Jei tai vyksta nuolat ir tas pats procesas ar gija kiekvieną kartą turi atsisakyti arba grįžti atgal, leisdami kitiems procesams ar gijoms naudoti šaltinį, tada pasirinktam procesui ar gijai, kuri grįžo atgal, iškils situacija, vadinama badu. Todėl, norint išbristi iš aklavietės, badas yra vienas iš sprendimų. Todėl kartais badavimas vadinamas tam tikru pragyvenimo šaltiniu. Kai yra daug aukšto prioriteto procesų ar gijų, žemesnio prioriteto procesas ar gija visada badauja aklavietėje.
Badauti gali būti daug, pavyzdžiui, badas dėl išteklių ir badavimas procesoriaus. Yra daug paplitusių badavimo pavyzdžių. Tai yra skaitytojų ir rašytojų problema ir valgomųjų filosofų problema, kuri yra žymesnė. Prie apvalaus stalo su spagečių dubenėliais sėdi penki tylūs filosofai. Šakės dedamos tarp kiekvienos gretimų filosofų poros. Kiekvienas filosofas turi pakaitomis mąstyti ir valgyti. Tačiau filosofas gali valgyti spagečius tik turėdamas kairę ir dešinę šakutes.
„Valgantys filosofai“
Kuo skiriasi aklavietė ir badas?
• Procesas:
• Esant aklavietei, dvi gijos ar procesai lauks vienas kito ir abu nebus pirmyn.
• Badaujant, kai du ar daugiau gijų ar procesų laukia to paties ištekliaus, vienas atsitrauks ir leis kitiems pirmiausia naudoti šaltinį, o kitas badaujantis siūlas ar procesas bandys dar kartą. Todėl visos gijos ar procesai vis tiek vyks į priekį.
• Grįžimas atgal:
• Aklavietėje tiek aukšto prioriteto gijos / procesai, tiek žemo prioriteto gijos / procesai lauks vienas kito be galo. Tai niekada nesibaigia.
• Bet badaujant, žemo prioriteto asmenys lauks arba grįš atgal, bet aukšto prioriteto asmenys tęsis.
• Laukimas arba užraktas:
• aklavietė yra žiedinis laukimas.
• Badavimas yra tam tikras pragyvenimo šaltinis ir kartais padeda išeiti iš aklavietės.
• aklavietė ir badas:
• aklavietė sukelia badą, tačiau badavimas nesukelia aklavietės.
• Priežastys:
• aklavietė įvyks dėl abipusės atskirties, sulaikymo ir laukimo, jokios išankstinės apsaugos ar žiedinio laukimo
• Badauja dėl išteklių stygiaus, nekontroliuojamo išteklių valdymo ir proceso prioritetų.
Santrauka:
Aklavietė prieš badą
Aklavietė ir badas yra keletas problemų, kurios kyla dėl duomenų lenktynių ir varžybų sąlygų, kurios atsiranda programuojant, taip pat įgyvendinant aparatinę įrangą. Aklavietėje dvi gijos be galo lauks viena kitos, nevykdydamos, o bado metu viena gija atsitrauks ir leis kitai gijai panaudoti išteklius. Aklavietė sukels badą, o badas padės ištrūkti iš aklavietės.
Vaizdai mandagūs:
- Steve'o Jurvetsono kompiuteris iš Menlo parko, JAV (CC BY 2.0)
- Bdeshamo „Valgomieji filosofai“(CC BY-SA 3.0)