Salīdzinājuma diagramma
Salīdzinājuma pamats | Deadlock | Bads |
---|---|---|
Pamata | Deadlock ir vieta, kur process nenotiek un tiek bloķēts. | Bads ir tas, kur zemas prioritātes procesi tiek bloķēti, un augsto prioritāšu process turpinās. |
Paaugstināts stāvoklis | Savstarpējas izslēgšanas rašanās, turiet un gaidiet, bez iepriekšēja pasūtījuma un apļveida gaidīšanas vienlaicīgi. | Prioritāšu izpilde, nekontrolēta resursu pārvaldība. |
Cits nosaukums | Cirkulārā gaidīšana. | Lifelock. |
Resursi | Bezkontakta gadījumā pieprasītie resursi tiek bloķēti ar citiem procesiem. | Bada laikā pieprasītie resursi tiek nepārtraukti izmantoti augsta prioritātes procesos. |
Profilakse | Izvairīšanās no savstarpējas atstumtības, turiet un gaidiet, un apļveida gaidīšana un atļauja. | Novecošana. |
Deadlock definīcija
Deadlock ir situācija, kad vairāki procesi CPU konkurē par ierobežotu skaitu CPU pieejamo resursu. Šeit katram procesam ir resurss un jāgaida, lai iegūtu kādu resursu, ko tur kāds cits process. Visi procesi gaida resursus apļveida veidā. Tālāk redzamajā attēlā redzams, ka process P1 ir ieguvis resursus R2, kuru pieprasa process P2, un process P1 pieprasa resursus R1, kuru atkal tur R2. Tātad process P1 un P2 veido strupceļu.
- Savstarpēja izslēgšana: tikai viens process vienlaicīgi var izmantot resursus, ja cits process pieprasa to pašu resursu, tam jāgaida, līdz process, izmantojot resursus, to atbrīvo.
- Turiet un gaidiet: procesam ir jābūt resursiem un jāgaida, lai iegūtu citu resursu, kas atrodas kādā citā procesā.
- Nr Preemption: Process, kas tur resursus nevar iepriekš. Procesam, kas tur resursus, brīvprātīgi jāatbrīvo resurss, kad tas ir pabeidzis savu uzdevumu.
- Cirkulārā gaidīšana: procesam jāgaida apkārtraksts. Pieņemsim, ka mums ir trīs procesi {P0, P1, P2}. P0 jāgaida P1 turētais resurss; P1 ir jāgaida, lai iegūtu P2 procesa resursus, un P2 jāgaida, lai iegūtu P0 turēto procesu.
Lai gan ir dažas lietojumprogrammas, kas var atklāt programmas, kas var nokļūt strupceļā. Taču operētājsistēma nekad nav atbildīga par aizsprostojumu novēršanu. Programmētāju pienākums ir izstrādāt bezstrāvas programmas. To var izdarīt, izvairoties no iepriekš minētajiem apstākļiem, kas nepieciešami strupceļā
Badošanās definīcija
Badu var definēt kā tad, ja procesu pieprasījums resursam un šim resursam ir nepārtraukti izmantots citos procesos, tad pieprasošais process saskaras ar badu. Bada laikā process, kas gatavs izpildīt, gaida, lai CPU piešķirtu resursus. Taču procesam ir jāgaida uz nenoteiktu laiku, jo citi procesi nepārtraukti bloķē pieprasītos resursus.
Bada problēmas parasti rodas prioritāšu plānošanas algoritmā . Prioritātes plānošanas algoritmā process ar augstāku prioritāti vienmēr tiek piešķirts resursam, novēršot zemākas prioritātes procesu no pieprasītā resursa saņemšanas.
Novecošana var atrisināt badu. Novecošanās pakāpeniski palielina prioritāti procesam, kas ilgi gaidīja resursus. Novecošana neļauj procesam ar zemu prioritāti gaidīt uz nenoteiktu laiku resursam.
Galvenās atšķirības starp Deadlock un badu OS
- Strupceļā neviens no procesiem nenotiek izpildei, katrs process tiek bloķēts, gaidot resursus, ko iegūst otrs process. No otras puses, bads ir stāvoklis, kad procesiem, kuriem ir augstāka prioritāte, ir atļauts nepārtraukti iegūt resursus, novēršot zemas prioritātes procesus, lai iegūtu resursus, kas noved pie nenoteiktu zemas prioritātes procesu bloķēšanas.
- Deadlock rodas tad, kad vienlaikus notiek četri apstākļi Savstarpēja izslēgšana, aizturēšana un gaidīšana, bez iepriekšēja pasūtījuma un apļveida gaidīšana . Tomēr bads rodas tad, kad resursu piešķiršanas procesā tiek īstenotas procesa prioritātes vai sistēmā ir nekontrolēta resursu pārvaldība.
- Deadlock bieži tiek saukts ar nosaukumu apļveida gaidīšana, bet badu sauc par dzīvo slēdzeni .
- Deadlock resursus bloķē process, bet bada laikā procesi nepārtraukti tiek izmantoti ar augstām prioritātēm.
- Deadlock var novērst, izvairoties no tādiem apstākļiem kā savstarpēja atstumtība, turēt un gaidīt, kā arī apļveida gaidīšana un ļaujot priekšlaicīgu procesu, kas ilgstoši glabā resursus. No otras puses, badu var novērst ar novecošanu .
Secinājums:
Gan Deadlock, gan Starvation aizkavē procesa izpildi, bloķējot to. No vienas puses, ja strupceļš var izraisīt procesus badoties, un no otras puses, bads var iegūt procesus no strupceļa.