Kas ir strupceļš operētājsistēmā: nosacījumi un noteikšanas algoritms

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Operētājsistēmas galvenais mērķis ir nodrošināt pareizu saziņu starp aparatūras un programmatūras resursiem, kā arī sniegt programmām kopīgus pakalpojumus. Kad operētājsistēmas process vēlas piekļūt jebkuram resursam, tas vispirms nosūta pieprasījumu konkrētajam resursam, kuram vēlas piekļūt, pēc tam tas izmanto resursu un beidzot atbrīvo resursu pēc tā izmantošanas. Pieņemsim, ka daudzi procesi mēģina piekļūt vienam resursam vienlaikus, kļūst grūti nodrošināt vienu resursu visiem procesiem vienlaikus šādā situācijā, kad rodas jēdziens, kas nosaukts strupceļā. Tāpēc šajā rakstā ir aprakstīts, kā notiek strupceļš un kā pārvarēt šo strupceļu.

Kas ir strupceļš operētājsistēmā?

Definīcija: Strupceļš ir situācija, kad divi vai vairāki procesori gaida, kad notiks kāds notikums, taču šādi notikumi, kas nenotiek, ir strupceļš, un tiek uzskatīts, ka procesori atrodas strupceļā. Piemēram, pieņemsim reāllaika scenāriju, kur ir divas automašīnas A un B, kuras brauc divi atsevišķi braucēji pa vienvirziena ceļu. Tagad rodas situācija, kad automašīnas A vadītājs saka, ka virzās uz ziemeļiem ir pareizs virziens, savukārt automašīnas B vadītājs apgalvo, ka virzās uz dienvidiem ir pareizi. Bet neviens no tiem nepārvietojas atpakaļ, lai ļautu citai automašīnai virzīties uz priekšu, šo stāvokli sauc par strupceļu.




Automašīna-piemērs

auto-piemērs

Labākai izpratnei ņemsim vērā vēl vienu piemēru, kur ir divi resursi R1, R2 un divi procesi P1 un P2, kur R1 ir piešķirts P1 un R2 ir piešķirts P2. Ja P1 vēlas piekļūt R2, kā mēs jau zinām, R2 pieder P2, un tagad P2 vēlas piekļūt R1, kas ir P1 izpilda tikai tad, kad tam piekļūst R2, arī P2 izpilda tikai tad, kad piekļūst R1 šai situācijai ir strupceļš.



Procesora-piemērs

procesora piemērs

Drošības slēdzenes apstākļi

Tālāk ir norādīti četri svarīgi strupceļa apstākļi, kas rodas, ja visi apstākļi notiek vienlaicīgi, un pastāv zināmas iespējas, lai iestātos strupceļš.

Savstarpēja izslēgšana

Tas nozīmē, ka jebkurš resurss, ko mēs to izmantojam, ir jāizmanto savstarpēji izslēdzošā veidā. Ja tikai viens process vienlaikus izmanto tikai vienu resursu. Piemēram, notiek drukāšanas process, un pēkšņi cits process mēģina pārtraukt drukāšanas procesu. Tātad šeit savstarpējas izslēgšanas situācijā tikai pēc drukas uzdevuma izpildes tiek apstrādāts tikai nākamais uzdevums. Savstarpēju atstumtību var novērst, vienlaikus izmantojot resursus, kas praktiski nav iespējams.

Savstarpēja izslēgšana

savstarpēja izslēgšana

Nav pirmpirkuma

Pēc preventīvs balstīti algoritmi, ja ir prioritārs uzdevums, kas mēģina pārtraukt pašreizējo uzdevumu. Iepriekšējs algoritms, kas satur pašreizējo uzdevumu, vispirms izpilda prioritāro uzdevumu un atgriežas pie sava pirmā uzdevuma. Situācija, kas izskaidrota saskaņā ar iepriekš minēto piemēru, kur process tur resursu tik ilgi, kamēr tas tiek izpildīts, tas ir, P1 var atbrīvot R1 tikai pēc izpildes, tāpat P2 izlaidums R2 tikai pēc izpildes. Ja nav pirmpirkuma, var iestāties strupceļš.


No-Preemptement-Example

bezpriekšlikuma piemērs

Turiet un pagaidiet

Process satur dažus resursus un gaida papildu resursus, bet tos iegūst kāds cits process. No iepriekš minētā piemēra P1 tur R1 un gaida R2, kur R2 iegūst P2, un P2 tur R2 un gaida R1, kur R1 iegūst P1 ir aizture un sistēmā var rasties strupceļš.

Aizturēšanas un gaidīšanas piemērs

turiet un gaidiet piemēru

Apļveida gaidīšana

Tiek uzskatīts, ka procesu kopa ir strupceļā, ja viens process gaida resursu, kas tiek piešķirts citam procesam, un šis process gaida resursu, tas ir līdzīgs iepriekš paskaidrotajam piemēram, kur tas ir cilpas formā. Ja P1 gaida R2 un R2 ir piešķirts P2, un P2 gaida R1 un R1, kas piešķirts P1, kas ir apļveida gaidīšanas forma, ja šis nosacījums apmierina strupceļu.

Apkārtraksts-gaidīšana-piemērs

apļveida gaidīšanas piemērs

Slēdzenes noteikšanas algoritms

Gadījumos, kad mēs piešķiram resursus procesiem un operētājsistēma pārbauda, ​​vai sistēmā ir iestājies strupceļš vai nē, izmantojot 2 galvenos strupceļa noteikšanas algoritmus, tie tiek

  • Viena instance
  • Vairāki resursa veida gadījumi

Viena instance

Viens gadījums ir situācija, kad sistēmai ir vienoti visu resursu gadījumi. Tas ir arī pazīstams kā gaidīšanas grafika algoritms vai resursu piešķiršanas grafiks. Resursu sadales grafiku veido procesu kopums un resursu kopums, kas attēloti kā divas dažādas virsotnes. Resursu piešķiršanas diagrammā esošie resursi ir modificēti un tiek attēloti kā grafika gaidīšanas forma. Ja grafika formas gaidīšanai ir tikai procesi, kas attēloti kā virsotnes, kā parādīts zemāk, kur

  • Resursu piešķiršanas grafiks: Procesi P1, P2, P3 un resursi R1, R2, R3 ir attēloti resursu sadales grafikā.
  • Gaidīt grafiku: Gaidot grafiku, tiek pieminēti tikai procesi P1, P2, P3.
  • Ja pastāv cikla nosacījums, tas nozīmē, ka, ja process notiek nepārtraukti vienā virzienā, tas nozīmē, ka cikla stāvoklis iziet un jāgaida, kamēr grafiks atrodas strupceļā.

1. piemērs: Zemāk sniegtajā piemērā parādīts, ka nav strupceļa, jo nav gaidāma nepārtraukta plūsma, gaidot grafiku.

Vienas instances piemērs

vienas instances piemērs

2. piemērs: Strupceļš ir radies tāpēc, ka notiek nepārtraukta cikla plūsma no P1 līdz P4.

Vienas instances - piemērs2

vienas instances piemērs

Ja strupceļš sistēmā notiek ļoti bieži, noteikšanas algoritms tiek izmantots bieži. Ja tiek vairāk izmantots noteikšanas algoritms, būs vairāk pieskaitāmo un vairāk aprēķina laika. Tāpēc, lai to pārvarētu, mēs izmantojam algoritmu pēc tam, piešķirot vienādu laika daudzumu, šādi tiek izmantots grafika svars, lai noteiktu strupceļu.

Vairāki resursa veida gadījumi

Vairāki resursu veida gadījumi ir situācija, kad sistēmai ir vairāki visu resursu gadījumi, to sauc arī par Bankers algoritmu. Saskaņā ar Bankers algoritmu, tiklīdz process iegūst visus nepieciešamos resursus, tas atbrīvo savus resursus.

Apskatīsim šo piemēru, pieņemot, ka ir 3 procesi P0, P1, P2 un resursu tips A, B, C, kur A var būt Procesors , B var būt printeris un C var būt tastatūra. Cipari “0” kolonnā norāda resursu pieejamību.

Lieta i): Pieņemsim, ja mēs pieņemam, ka nosacījuma pieprasījums ir “000” nosacījums, kas ir P0 un P2, mums jāpārbauda, ​​kurš pieprasījums ir izpildīts, procesi P0 atbrīvo procesus pēc tam, kad tiek piešķirti, pēc tam nākamie P2 procesi tiek atbrīvoti pēc tam, kad tiek piešķirti. Šādi secīgi pa vienam process secīgi izdala P0, P2, P3, P1, P4. Visbeidzot, mēs iegūstam pieejamos resursus kā P7, P2, P6. Pieejamā secība ir stāvoklis, kad nav strupceļa.

Baņķieri-algoritms-piemērs

baņķieri-algoritms-piemērs1

Mājas (ii): Pieņemsim, ja P2 ir 001, nevis 000, tagad izmantojiet baņķiera algoritmu, lai pārbaudītu strupceļa stāvokli, kur vienīgais P0 tiek izpildīts starp visiem 5 procesiem. Tādējādi P1, P2, P3, P4 ir strupceļā, izņemot P0.

Bankers-Example2

baņķieri-piemērs2

Strupceļa lietojumi

Strupceļa pielietojumu var izskaidrot ar reāllaika eksāmenu tiešsaistes rezultātu piemēru, kur vairāki studenti mēģina piekļūt savas universitātes vietnei atbrīvošanas laikā. Var novērot, ka reizēm tīmekļa vietne vienlaikus netiek ielādēta vairākiem lietotājiem, tas ir strupceļš. To var pārvarēt, izmantojot jebkuru no algoritmiem.

Priekšrocības

Strupceļa priekšrocības ir

  • Izvairīšanās no strupceļa netiek novērota
  • Nav kavēšanās procesā

Trūkumi

Strupceļa trūkums ir

  • Izmantojamais resurss ir jāzina iepriekš
  • Procesa bloķēšana uz ilgu laiku
  • Pirmpirkuma zaudējumi tiek mantoti.

Šajā rakstā ir sniegts pārskats par strupceļa iestāšanos, ja ir divi vai vairāki procesi, un trim apstākļiem, kas ir strupceļa cēlonis, un par diviem algoritmu veidiem, proti, resursu koplietošanas algoritmu, kas atklāj, ka pastāv strupceļa stāvoklis un baņķieru algoritms, kas ir strupceļa novēršanas algoritms. Šeit ir jautājums “Kas notiek, ja strupceļu ignorē?”.