Strupceļš pret badu
Galvenā atšķirība starp strupceļu un badu ir cēloņu un seku attiecība starp tām; badā ir strupceļš. Vēl viena interesanta atšķirība starp strupceļu un badu ir tā, ka strupceļš ir problēma, bet bads dažreiz var palīdzēt izkļūt no strupceļa. Datoru pasaulē, rakstot datorprogrammu, būs vairāki procesi / pavedieni, kas vienlaikus darbosies viens pēc otra, lai izpildītu nepieciešamo programmas pakalpojumu. Tāpēc, lai būtu taisnīga sistēma, programmētājam būtu jānodrošina, lai visi procesi / pavedieni saņemtu vai iegūtu pietiekamu piekļuvi tiem nepieciešamajiem resursiem. Ja nē, būs strupceļš, un tas vēlāk novedīs pie bada. Parasti taisnīga sistēma nesatur strupceļus vai badu. Strupceļi un badošanās notiks galvenokārt tad, kad daudzi pavedieni sacenšas par ierobežotiem resursiem.
Kas ir strupceļš?
Strupceļš ir stāvoklis, kas rodas, kad divi pavedieni vai procesi gaida, līdz viens otrs izpilda uzdevumu. Viņi tikai noliks klausuli, bet nekad neapstāsies un nepabeigs savu uzdevumu. Datorzinātnēs strupceļus var redzēt visur. Darījumu datubāzē, kad divi procesi katrs savā darījumā atjaunina tās pašas divas informācijas rindas, bet pretējā secībā, radīs strupceļu. Vienlaicīgā programmēšanā var iestāties strupceļš, kad divas konkurējošas darbības gaidīs, kamēr viena otra iet uz priekšu. Telekomunikāciju sistēmās strupceļš var notikt signālu zuduma vai bojājuma dēļ.
Pašlaik strupceļš ir viena no galvenajām daudzprocesoru sistēmu un paralēlās skaitļošanas problēmām. Kā risinājumu programmatūrai, kā arī aparatūrai tiek ieviesta bloķēšanas sistēma, ko sauc par procesa sinhronizāciju.
Kas ir bads?
Medicīnas zinātnes vārdnīcā bada cēlonis ir smags vai pilnīgs uzturvielu trūkums, kas nepieciešams dzīvības uzturēšanai. Līdzīgi datorzinātnēs bads ir problēma, ar kuru saskaras, kad vairāki pavedieni vai procesi gaida vienu un to pašu resursu, ko sauc par strupceļu.
Lai izkļūtu no strupceļa, vienam no procesiem vai pavedieniem ir jāatsakās vai jāatgriežas, lai otrs pavediens vai process varētu izmantot resursu. Ja tas notiek nepārtraukti, un vienam un tam pašam procesam vai pavedienam katru reizi ir jāatsakās vai jāatgriežas, ļaujot citiem procesiem vai pavedieniem izmantot resursu, tad izvēlētais process vai pavediens, kas atgriezās atpakaļ, nonāks situācijā, ko sauc par badu. Tāpēc, lai izkļūtu no strupceļa, bads ir viens no risinājumiem. Tāpēc dažreiz badu sauc par sava veida iztiku. Ja ir daudz augstas prioritātes procesu vai pavedienu, zemākas prioritātes process vai pavediens vienmēr badā nonāk strupceļā.
Bada var būt daudz, piemēram, resursu badošanās un CPU badošanās. Bada gadījumā ir daudz izplatītu piemēru. Viņi ir lasītāju-rakstnieku problēma un ēdināšanas filozofu problēma, kas ir slavenāka. Pie apaļa galda sēž pieci klusi filozofi ar spageti traukiem. Dakšas ir novietotas starp katru blakus esošo filozofu pāri. Katram filozofam pārmaiņus jādomā un jāēd. Tomēr filozofs spageti var ēst tikai tad, kad viņam ir gan kreisā, gan labā dakša.
“Ēdošie filozofi”
Kāda ir atšķirība starp strupceļu un badu?
• Process:
• Strupceļā abi pavedieni vai procesi gaidīs viens otru un abi neturpinās uz priekšu.
• Bada laikā, kad divi vai vairāki pavedieni vai procesi gaida vienu un to pašu resursu, viens atgriezīsies un ļaus pārējiem vispirms izmantot resursu, un pēc tam badā esošais pavediens vai process mēģinās vēlreiz. Tāpēc visi pavedieni vai procesi tik un tā turpināsies.
• Atgriešanās:
• Strupceļā abi augstas prioritātes pavedieni / procesi, kā arī zemas prioritātes pavedieni / procesi bezgalīgi gaidīs viens otru. Tas nekad nebeidzas.
• Bet bada gadījumā zemas prioritātes pārstāvji gaidīs vai atgriezīsies, bet augstākās prioritātes turpināsies.
• Gaida vai bloķē:
• Strupceļš ir apļveida gaidīšana.
• Bads ir sava veida iztika un dažreiz palīdz izkļūt no strupceļa.
• strupceļš un bads:
• Strupceļš izraisa badu, bet bads neizraisa strupceļu.
• cēloņi:
• Strupceļš iestāsies savstarpējas atstumtības, aizturēšanas un gaidīšanas, nepieņemšanas vai apļveida gaidīšanas dēļ.
• Bads rodas resursu nepietiekamības, nekontrolētas resursu pārvaldības un procesa prioritāšu dēļ.
Kopsavilkums:
Strupceļš pret badu
Strupceļš un badošanās ir dažas no problēmām, kas rodas datu sacensību un sacensību apstākļu dēļ, kas rodas programmēšanas laikā, kā arī aparatūras ieviešanas laikā. Strupceļā divi pavedieni bezgalīgi gaidīs viens otru, neizpildot, kamēr badā viens pavediens atritīsies un ļaus otram pavedienam izmantot resursus. Strupceļš izraisīs badu, savukārt badošanās palīdzēs pavedienam izkļūt no strupceļa.
Attēli Pieklājība:
- Stīva Jurvetsona dators no Menlo parka, ASV (CC BY 2.0)
- Bdešama “Dining Philosophers” (CC BY-SA 3.0)