Операциялық жүйелер


Wait () және Signal ()командалары



бет4/12
Дата04.07.2018
өлшемі9,81 Mb.
#46864
1   2   3   4   5   6   7   8   9   ...   12

Wait () және Signal ()командалары.

Егерде маниторда бір процесс жүріп жатса, оған тағы бір процесске құрау жасасақ, онда манитор Wait күту режимін қосады. Манитор Wait командасы мен тоқтатса, онда маниторға бір шарт қойсақ, сонда бірақ жұмысқа кіріседі. Содан кейін Signal командасы маниторға жұмыс істеліп жатқан процесс босатылды деп хабарлайды.



Монитор , екілік семафорды орналастыру

Операцияның орындалуы Р және V бөлікте семафор S, манитордың көмегімен қарастырсақ. Мұндай алгоритм Хоара алгоритмі болып танылған.

Мониторда статикалық ақпараттық структураларымен бір немесе бірнеше параллельдік процедуралар орындалады. Мынаған қараған кезде манитор - пассивтік белгі болып табылады және манитор процесс берген кезде ғана жұмыс істейді, ал процесс енгізілмесе онда ол тыныштық күйін сақтайды.



Monitor Семафор;

S : integer;

S_POSITIVE: condition; {бұл процесс блокта тұрған кезде тоқтатпайды}
procedure P;

begin

if S<1 then Wait(S_POSITIVE);{орындалуды тосу үштінде}

S:=S-1

end;
procedure V;

begin

S:=S+1;

if S=1 then Signal(S_POSITIVE);{жұмыстың орындалғанын білдіретін дыбыс}

end;

begin

S:=1

end;
Монитордың көмегімен Хоара алгоритмін екі алгоритммен қосуға болатындығын. Мұнда манитор шақырғанда Р және V -ны манитор бұларды Семафор Р және Семафор V деп шақырады.

begin

Parbegin

Процесс_Х:



begin

While (true) do

begin

Call (Cемафор.Р);

{Критический участок Процесса_Х};

Call(Семафор.V);

{Оставшиеся операторы Процесса_Х}

end

end;
Процесс_Y;

begin

While (true) do

begin

Call (Cемафор.Р);

{Критический участок Процесс_Y};

Call(Семафор.V);

{Оставшиеся операторы Процесса_Y}

end

end

Parend

end.
Бақылау сұрақтары:

  1. Синхронизация түсінігі.

  2. Синхронизация тәсілдері

  3. Параллельді процесстер деген не?

  4. Деккер алгоритмінің принциптері.

  5. Семафорлық примитивтер түсінігі.

Дәріс № 6

Тақырыбы: Тұғырықтар.Тұғырықтардың пайда болу себептері. Олармен күресу.

Дәрістің сұрақтары:



  1. Тұғырықтар. Тұғырықтар пайда болу үшін қажетті шарттар.

  2. Тұғырықтарды болдырмау стратегиясы.

  3. Банкир алгоритмі.

  4. Тұғырыұтарды анықтау. Ресурстарды тарату графтары.

  5. Петри желілері.

  6. Тұғырық мәселесі үшін Холт моделі.

Тұғырықтар

Тұғырықтар және өмірлік қалған проблемалар – маңызды факторлар, ОЖ ескеретін факторлар.

Тұғырық (deadlock) – бұл мультипрограммалық жүйе ситуациясы, бұл жаңалық болады деп тосады бірақ олай болмайды.

Қарапайым тұғырыққа мысал келтірілетін болсақ ОЖ-гі тупикте ресурстардың байқалу процессі кезінде басқа процеспен кедергіге ұшырайтын жағдайлар да болады.

Спулинг жүйесі(кіріс-шығыс буферизациясымен) тупикке қатер әкеледі.

Негізгі тұғырық кезіндегі қажетті шарттар

Негізгі тупик кезіндегі қажетті шарттар:


  • Бірлестік шарты;

  • Ресурстарды күту шарты;

  • Дөңгелек күту шарты.

Негізгі тұғырықтардың пайда болуының шарттары. 1971 жылы Коффман, Элфик және Шошани тұйықтарды тудырудың төрт шартын қисынға келтірді:

  1. (Mutual exclusion) тұйықталулардың пайда болуының шарты. әрбір процес бір ғана лек үшін бөлінген нмесе енуге рұқсат етілген. Процестер өздеріне бөлінген қорларды монополиялық басқаруды қажет етеді.

  2. қорларды күту шарттары (Hold and wait). Процесстер өздеріне бөлінген қорларды ұстап тұрады және сол уақытта қосымша бөлінетін қорларды күтеді (басқа процесстердің әсерінен кідірген қорларды)

  3. Қайта таратпау шарттары (No preemtion). Алдын – ала берілген қор процестен мәжбүрлі түрде алынылмайды... оларды ұстап тұрған процес арқылы ғана босатылады.

  4. дөңгелек күту шарттары (Circular wait). Басқа процестер шынжырлы түрде талап ететін, әр – бір процесс бір немесе оданда көп қорларды ұстап тұруы мүмкін, сол жағыдайда процестердің сақиналы шынжыры болады.

Жазылған бағдарлама көмегімен тұғырықты шектеуге болады, лектердің өзара жылдамдығына байланысты тұйықталуларды болдырмаудың арнайы бағдарламасы жазылуы қажет.мысалы 4.7 суретте көрсетілген А және В лектерінің бірдей тәртіппен қорлдарды сұрады сұраса, онда тұйықталу тууы мүмкін емес еді. Тұйықталуды болдырмаудың едәуір тиімді жолы бар, ол ОЖ әрбір тапсырма жіжеру алдында олардың қорға қажеттілігі мен осы мултибағдарламалық қосапда туындайтын тұйықталуларды сараптайды. Солай болған жағыдайда жаңа тапсырманы енгізу уақытша шегеріледі. ОЖ сонымен қатар лекреге

Қорларды тағайындауда анықталған тәртіпті пайдалануы мүмкін, мысалы, қорлар операциялық жүйеде, анықталған тәртіппен барлық лектерге ортақ бөлінуі мүмкін.


Тұғырықтан кейінгі қалыптасу. Тұғырықты табу ол фактіні орнату, осы жағдайға қатыстырылған барлық процестер мен қорларды және тұйықталуларды анықтау. Тұйықталу жағдайының алғашқы үш шарты орындалғанда табу алгартитімдері пайдаланылады. Содан кейін дөңгелек күту режімі тексеріледі. Осы жағдайда еске түсірілген жолдардағы қорларды бөлу белсенді пайдаланылады.

Анықтау алгоритімі өзіне жүктелген міндеттерді толықтай орындап тұйықталуды табады делік. Содан әрі не болады. Тағы бір жолы қалпына келтіріліп жүйені арықарай жүмыс істетеді. Осы бөлімде біз тұйықталудан кейінгі қалпына келтірудің түрлі тәсілдерін қарастырамыз.

Тұйықталуда тұрған жүйені, оның қалыптасуының бір шартын бұзу арқылы тұйықталудан алып шығуға болады. Осыған байланысты атқарылған жұмыстардың бірнеше лектері толдық немесе бөлшекті қорытындысын жоғалтады.

Факторлармен бірге қалпына келтіру қиындықтары



  • көптеген жүйелерде процесті тоқтатудың тиісінше нәтижелілігі жоқ, оны жүйеден алып шығып және оны нәтижесіне сәйкес қайта қалыптастыру

  • егер ондай жүйе болған күнде де, ол көп шығын мен оператор назарын көп қажет етеді

  • күрделі тұйықталудан кейінгі қалпына келтіру көп жұмысты қажет етеді


Қорларды қайта бөлу арқылы қалпына келтіру. Қалпына келтірудің бір тәсілі – кейбір процестерді олардың қорларын пайдалануға байланысты жүйеден мәжбүрлі түрде алып шығу. Қандай процесті жүйеден алып шығуды анықтау опреатордың көп жұмыс істеуін қажет етеді. Кейбір жағыдайда қорды оның ағымдағы иесінен уақытша басқа процеске ала тұру мүмкін болады.

Мысалы, лазерлі принетерді процестен ажырату үшін, оператор басылып шығарылған беттерді жинап кішкене үйінді етіп жинауы жеткілікті. Содан кейін процесс тоқтатылып принтер басқа процеске беріледі. Оның жұмыысы аяқталғанан кейін қағаз қайта принетрге қатарылып бастапқы әрекет жаңартылады. Қорды процестен алу, оны басқа процеске беру, содан кейін зиян келтірілмеген күйі қайда қайтарылуы қорлар табиғатына байланысты. Осындай қалпына келтірулер жиі қиынырақ, егер ол мүмкін емес болмаған жағыдайда.


Кейін шегіну арқылы қалпына келтіру. Бұл барынша мүмкін, ең нәтижелі тоқтату және қайта құрудың тәсілі

Жүйе тізбегінде қорытынды нүкесі бар рестар құрамы (белгілі бір уақыт мөлшерінде жүйенің жағдайының сақталуы). Оларды қосалқы бағдарлама дайындаушылары әзірлеу керек. Егер жүйені жобалаушылар тұйықталу мүмкін екенін білсе, онда олар процесстер үшін қорытынды нүктесін дайындай алады.

Тұйықталу анықталғанда, онда қандай қорлар дөңгелек күту цикліне қатысқанын байқауға болады.

Бір процесті жою арқылы қалпына келтіру. Тұйықталуды шектеудің ең қарапайым, дөрекі тәсілі – бір немесе одван да кп процестерді жою. Мысалы циклдегі процесті жою. Онда қалған процестер сәтті орындалуы мүмкін. Егер бұл көмсектеспесе онда тағы бір процесті жоюға болады.

Басына қайта келтіру мүмкін болатын процесті жою мүмкіншілігі жақсы болар еді, мысалы компиляция. Екінші жағынан алғанда деректер базасынывң мазмұнын өзгертуге ықпал ететін процес қайта қалпына келтірілуі әрқашан мүмкін болмайды.



Қорларды бөлу арқылы тұйықталуларды шектеу. Процесс еркіне пайдалануға берілген қор бұл қауіпті еместігіне шешім қабылдауы қажет. Мұнадай сұрақ туады: тұйықталулардан қашатын және дұрыс шешім қабылдайтын алгоритім бар ма? Жауабы – бар, біз тұйықталулардан қаша аламыз, егер белгілі біа ақпарат алдын ала анықталуы мүмкін болса. Осы секцияда біз тұйықталудың алдын алу жұмыстарын қорларды түпкілікті бөлу арқылы жүргізуді қарастырамыз.

Тұйықталулардың алдын алу алгоритімдері қауіпсіз жағдайлар концепциясына негізделеді



Банкирлердің тұйықталулардың алдын алуы және алгоритімдері. Тұйықталулардаң қашуға болады егер қорларды рационалды түрде пайдаланып, белгілі бір тәртіпті ұстай отырып. Алгоритімдер арасында кеңінен танымалы ол – Дейкстрой ұсынған, банкирлік алгоритім.

Жүйедегі n құрылғы бар делік, мысалы лента. Алгоритім тәртібі төмендегідей:

10 құрылғы іске қосылған, ал 2 құрылғы қосалқы бар, 12 құрылғымен үш тұтынушы жұмыс істейтін жүйе сенімділігіне мысал келтірейік. Ағымдағы жүйе төмендегідей:




Ағымдағы саны

Максималдық қажеттілік

Бірінші тұтынушы

1

4

Екінші тұтынушы

4

6

Үүшінші тұтынушы

5

8

Дәл осы жағыдай сенімді. Жүйе ең алдымен екінші тұтынушына қанағаттандырады да өзінің 6 құрылғысыныың босағанына дейін күтеді. Содан кейін басқа тұтынушыларды қанағаттандыра алады.

Міндетті түрде тұйқталу болады деген термин сенімді жүйеде қолданылмайды. Ол тек қана сәтсіз жағыдайларда жүйе тұйықталуға түсіп қалуы мүмкіндігін ескертеді.

Банкир алгоритімінің жетіспеушілігі. Бағдарлама дайындаушысы тұйықталу мәселесін шешудің басқа тәсілдерін пайдалануға соқтыратын, банкир алгоритімінің жетіспеушіліктері төмендегідей:


  • Банкир алгоритімі бекітілген қорлар санына сәйкес орындалады

  • Он требует, чтобы число работающих пользователей оставалось постоянным

  • Осы алгоритім белгілі уақыт аралығында тапсырысты қанағаттандыруды талап едеді

  • Алгоритім тұтынушылар қорларды қайтаратындығына кеілдік беруін талап етеді.

  • Тұтынушылар алдан ала қорлар санын көрсетуін талап етеді. Қорлардың динамикалық бөлінуіне сәйкес тұтынушыларға қажетті қорлар сенын анықтау өте қиын.

Пайда болу шарттарын бұза отырып тұйықталуды шектеу.Берілген тапсырма туралы ақпаратсыз қандай жүйе тұйықталудың алдын ала алады? Бұл сұраққа жауап беру үшін тұйықталуды тудырудың үш шартына оралайық. Бөлінген уақыт соңында бір қызмет қанағаттандыра алмайтындай жүйе жұмысын қалыптастыра алсақ онда тұйықталу болуы мүмкін емес.

Өзара байланыс шарттарын бұзу. Егер жүйеде бөлінген қорлар болмаса тұйықталу болмайды. Егер де жалпылау қасиеті болса мысалы принтерге өзара хауз тудыра отырып екі процесті бір принтеде орындауға болады. Спулинг арқылы бірнеше процесті бір уақытта орындау мүмкін. Бұл жағдайда тұйықталу болмайды.

Өкінішке орай барлық құрылғыларда спулинг ұйымдастыру мүмкін емес, спул-буферінде дискілік кеңістікк потенциялды бәсеке туындап жағымсыз нәтиже туындайды.



Қосымша қорлардың күту тәртібінің шарттарының бұзылуы. 1968 жылы Хавендер төмендегі старатегияны ұсынды:

  • әрбір процес өзіне қажетті қорлардықолма қол талап етуі қажет және барлық қорлар мүмкін болғанға дейін жұмысты бастамау керек.

  • Егерпроцесс жұмыс істеу барысында қосымша қорды бөлу мүмкін болмаса онда ол бастапқы пайдаланған қорларды босатып, қосымша қор бөлінген соң әрекетін қайта бастауы керек.

Бұл дегеніміз барлық процестер орындау алдында барлық қажетті қорларды толықтыруына мүмкіндік берудіңбір тәсілі. Егер жүйе барлық процессқажеттілігін бере алса онда ол өз жұмысын аяқтағанға дейін әреке ете алады. Егер бір қор бос болмаса онда бүкіл процесс тосу режимінде болады.

Қайта бөлірмеу принціптерін бұзу. Хавендердің екінші тәсілі арқылы процесстер жұмысын аяқтағанан соң қажетті қорларды алу. Егер бұл әрқашан мүмкін болса тұйықталудың үшінші шартын орыгндама-ақ жұмысты аяқтауға болар еді. Егер процесс жұмыс істеп отырған қорды уақыт аяқталмай босатуға тура келсе, онда ол барлық атқарған жұмыстарын жоғалтады. можно отбирать ресурсы у удерживающих их процессов до завершения этих процессов.

Бұл сызбаның жетіспеушілігі оның жекелеген қорларында дикременация болуы, яғни қорларды жиі алып кету.



Дөңгелек күту режімін бұзу. Бір ғана шарт қалды. Циклдық күтуден аврылудың ешбір жолы жоқ.

Әр бір процес белігілі бір уақытта бір ғана қорды иелене алады, деген тәптіппен олардың бірі әрекет етеді. Егер екінші қор қажет болса біріншіні босат. Бірақ бұл тәртіп көптеген процестер үшін қолданылуы мүмкін еместігі айқын.

Немесе әрбір қорға нөмір берім процес кезінде өсу ретімен қорларды талап етді қалыптастыру. Сонда дөңгелек күту режімі туындауы мүмкін емес.

Бақылау сұрақтары:


  1. Бір процесс қатысқан тұғырық мысалысын келтіріңіз.

  2. Үш процесс және үш ресурс бар тұғырық мысалысын келтіріңіз.

  3. Тұғырық болудың негізгі төрт шарттары.

Дәріс №

Тақырыбы: Жадыны басқару. Жадты басқару стратегиясы.

Дәрістің сұрақтары:



  1. Жадтың иерархиясы.

  2. Жадыны ұйымдастыру түрлерінің эволюциясы.

  3. Жадыны парақтық және сегменттік ұйымдастырудың ерекшелңктері.

  4. Жадыны басқару стратегиялары.

Жадыны басқару. Жады дегеніміз оперативті сақтау құрылысы, қатқыл дискіге қарағанда, ішкі жады деп атайды. Оперативті жадыны сақтау үшін әрдайым электр тоғы қажет. Жады ішкі ресурс болып табылады, мультибағдарламалау кезінде жүйенің өту тәсілі көбейеді, бірақ бөлек жолды процесс бір бағдарламалық режимде орындалғаннан гөрі өзі ешқашан тез орындала алмайды. Жадының негізгі қызметі, процессор жұмысты жадыда сақтаған кезде ғана орындайды.

Мультибағдарламалық жүйедегі жадыны басқару оперативтік жүйенің функциялары:



  • Бос және толық жадыны тексеру;

  • Жадыны процесстерге бөлу және процесс біткенде жадыны тазарту;

  • Негізгі жадыға барлық процесстер симаған кезінде, оперативтік жадыдан дискіге процесстер шығару;

  • Оперативті жадыда орын босағанда, процесстерді сонда қайтару;

  • Физикалық жадының нақты аймағына бағдарлама мекен-жайын жөңдеу;

Жадыны басқарудың барлық әдістерін екі классқа бөлуге болады: оперативті жадымен диск арасында процесстерді алмастыру әдісі және бұл істі жасамайтын әдістер.

Оперативті жадыны басқарудың қарапайым түрі – ол белгіленген мөлшердегі бөліктер бөлу. Орындалатын келесі есеп, не жалпы кезектен, не бір бөліктегі кезектен тұрады.



Бұл жағдайда жадыны басқарушы бағыныңқы жүйе келесі жұмыстарды орындайды. Операциялық жүйемен жұмыс уақытында жаңа қызметтік ақпараттық құрылымдар құрады. Барлық жүйелік объектілер жадыны қажет етеді. Кейбір операциялық жүйелер ертерек керекті көлемін жадыдан алады. Осы жағдайда кез келген операциялық жүйелер өз кестесін, объектісін құрылымын т.б. ішкі жүйедегі жадыға сақтайды.

Мекенжай түрлері. А
йнымалы және команда идентификациясы үшін әр түрлі кезеңдерде бағдарламалардың өмірлік мерзімін символдық аттар, виртуалды мекен-жайлар және физикалық мекен-жай қолданылады


  • Символдық аттарды қолданушы бағдарламалық жасау барысында алгоритм тілдерді қолданылады.

  • Кейде математиклық немесе логикалық деп аталатын виртуалды мекен-жайлы транслятор өңдеп бағдарламаны машинаның тіліне аударады.

Трансляция кезінде жалпы жағдай белгісіз, бағдарламаны оперативті жады қандай орынға жүктейтіні, транслятор айнымалы және виртуалды мекен-жайлы командаларды қабылдап, әдетте олар өздігінен орындалады, бағдарламаның бастапқы мекен-жайы болып табылады.

Айнымалылар және командалар орнында физикалық мекен-жай ұяшықтың оперативтік жадының номерімен сәйкес болады. Виртуалдық мекен-жайдың жиынтығы виртуалды мекен-жайдың кеңістігі деп аталады. Процесстердің виртуалдық мекен-жайдың кеңістік аралығы бірдей болады.



Әр түрлі процесстердің командасы мен айнымалылар виртуалды мекен-жайлардың тура келуі қақтығысқа әкелмейді, өйткені жадыда бір уақытта айнымалы болса, онда оперативтік жүйе әр түрлі физикалық мекен-жайда көрсетіледі. Егерде бірнеше процесстер жалпы деректерді немесе шартты белгілер жүйесін бөлу қажет болса, онда оперативтік жүйесі сол процесстердің виртуалды мекен-жай кеңістігіндегі тиісті бөлігін физикалық жадының сол бір бөлігінде көрсетеді.

Ә
р түрлі оперативтік жүйеде виртуалды мекен-жай кеңістігі құрылысының амалы қолданылады. Кейбір оперативтік жүйеде виртуалдық мекен-жай физикалық жады сияқты ұздіксіз сызықтық жүйелікте беріледі. Сонымен қоса виртуалды мекен-жай біршама ығысу (әдетте бұл 000 ……………000) – жекеше бір сан виртуалды мекен-жай болады. Мекен-жайдың мұндай түрін сызықтық виртуалды мекен-жай дейді. 5.2.сурет


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   12




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет