Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УММ_ОС_КАЗ.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.44 Mб
Скачать

4.4. Сурет сыный секцияға ену және шығуда өзара байланысты орнатуда қолданылатын жүйелік фнукцияларды дамыту

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

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

  1. Тапсырмалар жоспарлаушысы аралық деңгейлер жоспарлаушысы және диспетчердің араларындағы айырмашылықтары туралы айтып беріңіз.

  2. Жоспарлаудың негізгі мақсаттары.

  3. Қарастырылған жоспарлау алгоритмдер арасындағы айырмашалықтарды белгілеңіз.

Дәріс № 5

Тақырыбы:Параллельді процесстердің синхронизациясын орындау.

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

  1. Параллельді өңдеу.

  2. Критикалық аумақтардың мәселелері.

  3. Төменгі деңгейдегі параллельді процесстерді синхрондау.

  4. Жадыны блоктау.

  5. Деккер алгоритмі.

  6. Семафорлар.

Процесс- ол орындалу режимінде болатын программа. Әр бір процесспен оның адрестік кеңістігі байланысады,одан ол оқи алады және онда ол мәліметтерді жаза алады.

Адрестiк кеңiстiк құрамында :

  • Программаның өзін

  • программаға мәлiметтер

  • программның стегі

Әрбiр процесспен регистрлердiң жиыны байланыстырылады, мысалы:

  • Командалар есептеуішi(процессорда ) -ол кезек тұрған ,орындалатын команданың адресі бар регистр. Жадыдан команда таңдалған соң, командалар есептеуiшi өзгертіледі және нұсқағыш келесi командаға өтедi,

  • стектiң нұсқағышы;

  • және т.б.

Көптеген операциялық жүйелерде әрбiр процесс туралы мәлімет , қосымша iшiндегi оның меншiктi адрестi кеңiстiгiне, операциялық жүйенiң процесстерiнiң кестесiнде сақталады :

Процесспен басқару

Жадымен басқару

Файлдармен басқару

Регистрлер

Команда есептеуіш Стектiң нұсқағышы

Процесстің күйі

Приоритет

Жоспарлау параметрлері

Процесстің идентификаторы

Ата-аналық процесс

Процесс группасы

Процесстің басталу уақыты

Қолданған процессірлік уақыт

Текстік сегменттің нұсқағышы

Мәліметтер сегментінің нұсқағышы

Стек сегментінің нұсқағышы

Түпкі каталог

Жұмыс істейтін каталог

Файл дескрипторлары

Қолданушы идентификаторы

Топ идентификаторы

ОЖ мультипрограммалауды қолдау үшін, процессор мен компьютердің басқа да ресурстарын бөліп тұратын жұмыстың iшкi бiрлiктерiн өзi үшiн анықтап ресiмдеуi керек. Қазіргі кезде операциялық жүйелердің көпшiлiгiнде жұмыс бiрлiктерiнiң екi түрi анықталған. Үлкенірек жұмыс бiрлiгi, әдетте процесс немесе есеп атын иеленеді,өзі орындауындалуы үшін бiрнеше майдарақ жұмыстарды талап етедi,оларды анықтау үшін <<ағын>> немесе <<желi>> терминдердiн қолданады.

Бұл терминдерді пайдаланғанда көп кезде қиындықтар туындайды . Бұл бірнеше себептерден болады. Бiрiншiден, - ОЖ әр түрлі спецификасынан мә магынасы жағынан бірдей бірақ аттары басқа,мысалы OS/2, OS/360 –дағы (task) амалы және UNIX, Windows NT, NetWare –дегі просесс. Екiншiден, жүйелiк программалаудың дамытуы кезінде және есептеу ұйымның әдiстерi бойынша бұл терминнің кейбiрі жаңа мағына алды, <<ағын>> жаңа ұғымының көптеген қасиеттерiне жол берген ,әсiресе бұл <<процесс>> терминіне байланысты . Үшiншiден, терминологиялық күрделiлiктер ағылшын тiлі терминінің орыс тiлi аудармасында бiрнеше варианттарының бар болуынан туады.Мысалға, «thread»термині «желі», «ағын», «оңайланған процесс», «шағын амал» және т.б. деп аударылады.Сосын ОЖ-нің бірлік жұмыстары ретінде «процесс» және«ағын» терминдері қолданылады.

Бұл ұғымдар арасында айырмашылық маңызды рөл атқармайтын жағдайда , олар қосалқы «амал»терминіне бiрiгедi.

Есептеуiш жүйенiң кез келген жұмысы кейбiр программаның орындауында болатыны анық. Сондықтан процесспен де, ағынмен де белгілі бір программалық код байланысты, бұл мақсат үшiн қолданылатын модуль түрiнде безендіріледі. Бұл программалық код орындалуы үшiн, оны жедел жадыға жүктеу керек, мәлiметтi сақтауға арналған дисктегi кейбiр орынды ерекшелеп, енгiзу-шығару құрылғыларына рұқсат беру, мысалғамодемге Портудың қосылған осығандарға мәлiмет бойыншаларын алуына бiртiндеп Портуға мысалы,файлдарға, TCP/UPD портарына, семафораларға. Программаның оған берілген процессірлік уақытынсыз орындалуы мүмкін емес,яғни бұл процессордға берілген программаның кодын орындауға арналған уақыт.

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

Ең қарапайым түрде процесс бiр ағыннан тұрады,бұндай ұғым80-шi жылдардың ортасына дейiн айтылған(мысалы,UNIX-тің ерте версияларында) сол күйнде кейбір ОЖ-де де сақталған.Бұндай жүйелерде <<Ағын>>ұғымы <<процесс>> ұғымында түбегейлі жұтылады, демек жұмыс және қорларды тұтындың бір ғана бірлігі қалады-ол процесс.Мұндай ОЖ-де мультипрограммалау процесстер деңгейінде орындалады.

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

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

Процесстің виртуалды адрестік кеңістігі –бұл процесстiң ,программалық модульі манипуляция жасай алатын, мекенжайлардың жиынтығы.Операциялық жүйе процесстің белгілі бір физикалық жадының виртуалды адрестік кеңістігін көрсетеді.

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

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

Ондай қажеттіліктер тууы мумкун. Шындығында да, жүйенің мультипрограммалау кезінде өткiзу қабiлеттілігі жоғарылайды, бiрақ бірпрограммалық режимге қарағанда, жеке процесс ешқашан тез орындала алмайды. Дегенмен бiр процесс шеңберiнде атқарылатын программа iшкi параллельдікке ие бола алады, негiзiнен оның шешiмiн үдетуге мүмкiндiк беретiн еді . Мысалы, егер программада сыртқы құрылғыға үндеу ескерiлсе, онда бұл операцияның уақытына бүкіл процесстi жабу керек емес , программаның басқа тармағы бойынша есептеудi жалғастырған жөн. Бiр өздiгiнен программа шеңберiнделерiнiң бiрнеше жұмыстарының параллель орындауы қолданушының жұмысының тиiмдiлiгiн жоғарылатады. Мәтiндiк редактормен жұмыс iстегенде жаңадан теретін текст пен уақыты бойынша ұзақ операцияларды байланыстыра білу керек,текстің көп бөлігін форматтау,локальдік немесе ұзатылған дикте құжатты басып шығару немесе оны сақтау. Қиғаштаудың қажеттiлiгінің тағы бiр мысалы болатын деректер базасының желелік серверi болып табылады.Параллельдеу деректер базасының сұраныстарына қызмет көрсетуге,базаның біруақытта бірнеше жазбаларын көрудің жеке сұраныстың тезірек орындалуы үшін керек.

Операциялық жүйелерде ағындар есептеулердi қиғаштаудың құралы ретінде пайда болды.

Әрине, бiр программа шегінде есептеулердi қиғаштауды есеп дәстүрлi әдiстермен де шешiле алады.

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

Екіншіден, шешiмі болып әр бір параллельді жұмыстардың бір программа үшін бiрнеше процесс жасау болып табылады. Дегенмен, ОЖ-дің үйреншiктi құралдардың процесстерiнiң жасау үшiн қолдану сол айғақты ескеруге мүмкiндiк бермейдi, процесстер бiртұтас есептердi шешедi, демек , олардың өзараларында көп құсастық бар –олар бірдей мәлiметтермен жұмыс iстей алады, бірдей кодтық сегментті пайдаланады , есептеуiш жүйенiң қорларына бірдей құқықтарына иеленген.Сервердің мәліметтер базасының мысалында желіден келіп түсетін ,әрбір сұраныс үшін жеке процесстер жасаса ,онда барлық процесстер бірдей программалық код орындайды және жазбаларда іздестіру жүргізеді,барлық мәлмет файлдарының процесстеріне бірдей. Мұндай кезде операциялық жүйе бұл процесстерді басқа процесстермен бірге қарастырады және әмбебап механизмдармен бір бірінен изоляцисын қамтамасыз етеді.Бұл жағдайда мына барлық үлкен механизмдерді тағайындалуы бойынша қолданбайды,ол керексіз және зиян жұмысты атқарады және ол программалар арасында мәліметтермен алмасуды қиындатады.Бұдан басқа,ОЖ-нің әрбір процессін жасауда белгілі қорды жұмсайды, осы жағдайда керексiз қайталанады- әрбiр процесске меншiктi виртуалды адрестi кеңiстiк, физикалық жады, енгiзу-шығару құрылғылары бекітіледі және тағы сол сияқтылар.

Барлығы жоғарыда айтылғандай, бір программаның есептеу тармағының жеке байланыстарын ескеретін, операциялық жұйеге процесстермен қатар есептеу қиғаштауының басқа механизмі керек. Қазiргi мақсаттар үшін операциялық жүйелер көпағынды өңдеу (multithreading ) механизмін ұсынады.Сонымен бiрге,жаңадан жұмыс бірлігі енгізіледі- орындау ағыны, ал «процесс» ұғымы мағынасын өзгертедi. «Ағын » ұғымына процессордың программаның бiр командадан басқаға бір командаға өтуі сәйкес келеді. ОЖ ағындардың,арасындағы процессорлық уақытты үлестiредi. ОЖ процесске барлық оның ағындарымен қолданылатын, адрестік кеңістік және қорлардың жиынын тағайындайды.

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

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

Ағындар қолдануы параллельді есептеулерi арқасында ж үйенiң өнiмдiлiгiн жоғарылату ғана емес, ол оқылатынырақ, қисынды программаларды жасау мақсатымен.Орындалудың бірнеше агымдарды енгизу программалауды онайлатады.Мысалы, «жазушы-оқырман» амалдарында бір ағын буферге жазуды,ал келесісі одан оқиды. Ағындарды қолданудың басқа мысалы- сигналдармен басқару ,(del немесе break ) клавиатураданды үзілулерімен. Бiр ағынның үзілу сигналының өңдеулерi орынына сигналдың түсуiнiң тұрақты күтуiне белгiленедi.Сонымен, ағындарды қолдану қолданбалы деңгей үзулерiндегi қажеттiлiк қысқарта алады.Бұл мысалдарда параллель орындаудан қарағанда, программаның анықтығы маңызды.

Процесстер мен ағындарды жасау. Процессті жасау-бұл ең алдыменмен процесс суреттемесiн жасауын бiлдiреді, бiр немесе бiрнеше ақпараттық құрылымдар ретiнде шығады, , басқаруға арналған басқару жүйесiне қажеттi, процесс туралы барлық мәлiметтері бар.Мысалы, мұндай мәлiметтердiң санына атқарылатын модулдың жадындағы орналастырылуы туралы процесстiң идентификаторы, мәлiметтер кiре алады, тағы сол сияқтыларды (басымдылық және қол жеткiзу құқығы ) процесстiң жеңiлдiкпен пайдаланушылығының дәрежесi. Процесстiң суреттемелерiнiң мысалдарымен OS/360 ішінде (Task Control Block ) тапсырманы басқару блок болып табылады, OS/2 ішінде (Рсв -Process Control Block Рсв ) процессi басқарушы блок, UNIX ішіндегі процесс дескрипторы, процесс – объектісі Windows NT ішінде, (object-process ).

Процесстiң суреттемесiнiң жасау, есептеуiш қорларға жүйедегi тағы бiр талапкердiң пайда болуын өзiменмен белгiлейдi. Осы моменттен бастап ОЖ ресурстарды бөлуде, жаңа процесстiң қажеттiгiнiң есептеуi тиiс.

Процесстi жасауда берілген процесстiң дискісінен жедел жадысына орындалатын программаның кодтар және мәлiметтерін жүктеуiн талап етеді . Бұл үшін дисктегi мұндай программаның тұрған орынын бiлдiруi, жедел жадты қайта үлестiруi және жаңа процесстiң орындалатын программасына жады бөлуі керек. Содан соң оған берілген жадтың бөлiмшелерiнің программасын санау керек және, жадыда орналасуына байланысты программаның параметрлерін өзгерту,мүмкіндігі бар.Виртуалды жадысы бар жүйелерде бастапқыда процесстiң кодтар және мәлiметтерің тек қана бөлiгi жүктеле алады, қалған «қосымша жүктеулер» керек болғанда.Кейбір жүйелерде процесті жасау барысында кодтар мен мәліметтерді жедел жадыға жүктеуді керек етпейді,бұның орнына атқарылатын модуль бастапқыда орналасқан файлдық жүйе каталгынан көшіріледі ,жүктелу облысына-процестердің кодтары мен мәліметтерін сқтауға арналған дисктегі арнайы облыс.Бұл барлық әрекеттердің орындалуы барысында процестермен басқарудың шағын жүйесі жады және файлдық жүйемен басқарудың шағын жүйесі тығыз әрекеттеседі.

Көпағынды жүйеде процесс құруда,ОЖ әр процесс үшін орындалу бір ағынын жасайды. Осылай ағынның жасауында, сонымен қатар процесстiң жасауында, операциялық жүйе арнайы информациялық структураны белгілейді –ағынның суреттеуіші, ол ағынның идентификаторын құрайды, қол жеткiзу құқығы және басымдылық туралы арнайы ақпаратты, ағынның күйi туралы мәлiметті және тағы басқаларды мәлiметтердi құрайды . Ағын бастапқы күйінде тоқтаттырылған күйде болады.Ағынды таңдау моментінде орындалуы берілген жүйеде қабылданған ережеге сай қазіргі уақытта бар ағындар мен процесстерге процессорлық уақыттың берілуімен орындалады. Егер процестің кодтары және мәлiметтерi жүктелу облысында болса, процесстiң ағынының активизациясының керектi шарты оның атқарылатын модулының жүктеуге арналған жедел жадтағы орынының бар болуы болып табылады.

Процесстi жасау. Процесстердi жасауға алып келетін үш негiзгi оқиғалар(fork немесе CreateProcess шақыруы ) :

  • Жүйенің жүгінуі

  • Істеп тұрған процесс процесті жасау үшін жүйелік шақыру жасайды

  • Процесті жасау үшін қолданушының сұранысы

Барлық жағдайларда, белсендi ағымдағы процесс жаңа процесстiң жасауына жүйелiк шақыруды жiбередi. UNIX-та әрбiр процесске (PID - Process IDentifier ) процесстiң идентификаторы тағайындалады.

Процесстi аяқтау. Процесстiң тоқтауына алып келетін төрт оқиға(exit немесе ExitProcess шақыруы ) :

  • Жоспарлы аяқталу (орындауды аяқтау )

  • Белгiлi қате бойынша жоспарлы шығу (мысалы, файлдың жоқтығы)

  • Түзелмейтiн қателiк бойынша шығу (программадағы қателiк )

  • Басқа процесспен жою

Уақыша тоқтатылған процесс жадтың түрі деп аталатын(core image ) меншiктi адрестi кеңiстiгiнен тұрады, және (компоненттердiң санында және оның регистрлерi ) процесстердiң кестесiнiң компоненттерi.

Процесстердiң иерархиясы. UNIX жүйелердегi процесстердiң қатты иерархиясы салған. Fork жүйелiк шақыруымен жасалған әрбiр жаңа процесс,алдыңғы процесске тәуелдi болады. Аналықтан тәуелді процеске ауыспалылар,регистрлар және т.б. тиді. Fork шақыруынан кейін,аналық мәліметтер көшіріліп алынғаннан кейін ақ , бiр процесстердегi келесi өзгерiстерi басқаға ықпал етпейдi, бiрақ процесстер қайсысы аналық екенін есте сақтайды. Олай болса UNIX –те барлық процесстердiң ата-анасы болып – init процессi табылады.

3.1. сурет UNIX жүйесі үшін процесстер ағашы

Windows –та процесстердiң иерархиясы деген ұғым жоқ. Ішкi процессті тексеруге мүмкiндiк беретiн, аналық процесске арнайы таңбалағышты беруге болады.

Процесстердiң күйi. Процесстiң үш негiзгi күйлерi болады:

  • Орындау (процессорда орналасады )

  • Дайындық (процесс басқа процесске орындалуға мүмкiндiк беру үшiн уақытша тоқтаттырылған )

  • Күту (процесс iшкi себептерге байланысты iске қосыла алмайды,мысалы, енгізу/шығару операцияларын күтуде )

Сурет. 3.2. Күйлердiң арасындағы өткелдер болу мүмкiндігі.

1. Кiру мәлiметтерiн күте, процесс қоршауға алынады

2. Жоспарлауышы басқа процесстi таңдайды

3. Жоспарлауышы бұл процесстi таңдайды

4. Кiру мәлiметтері келіп түстi

2 және 3 өткелдер операциялық жүйесiнiң процесстерiнiң жоспарлауышысымен шақырылады, сондықтан бұл өткелдер туралы процесстер білмейді де,процесстердің көз қарасы бойынша екi күйi бар екен олар орындау және күту.

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

Монитор (monitor)-ақпараттар структурасы мен процедуралар жиынтығы және де әр кезде бір ғана процесс қолдануы мүмкін. Маниторды біз бір бөлме сияқты елестетсек, онда ол бөлменің кілті болады, ол кілтпен кезек -кезек процесстерді орналастырады.

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

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.сурет