Йкестендіру ұстанымы. 3 страница

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

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

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

Уақытты бөлу жүйелеріндегі мультибағдарламалау

Қолданушының жұмысының тиімділігі мен қолайлылығын арттырудағы мультибағдарламалаудың тағы бір әдісі – уақытты бөлу. Уақытты бөлу жүйелерінде қолданушыларға (немесе жалғыз қолданушыға) бірнеше бағдарламалармен интерактивті жұмыс істеу мүмкіндігі беріледі. Бұл үшін әр бағдарлама ауық-ауық қолданушымен «сұхбаттасып» отыруға мүмкіндік алуы керек. Пакеттік өңдеу жүйелерінде бағдарлама мен қолданушылар арасында «сұхбат» жүргізу мүмкіндігі мүлде шектеулі екендігі белгілі.

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

Үрдістер мен ағындарды жоспарлау

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

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

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

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

«Үрдіс» пен «ағын» ұғымдары

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

Сонымен, «үрдіс» пен «ағын» ұғымдарының нақты айырмашылықтары неде?

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

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

Қарапайым жағдайда үрдіс тек бір ағыннан ғана тұрады. Мұндай кезде «ағын» ұығымы «үрдіс» ұғымымен толық жұтылады, яғни тек бір ғана жұмыс бірлігі – «үрдіс» ұғымы ғана болады.

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

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

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

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

Үрдістер мен ағындарды құру

Үрдісті құру – бұл бәрінен бұрын үрдісті сипаттаушыны, яғни операциялық жүйеге үрдісті басқару үшін керек мәліметтерді қамтитын бір немесе бірнеше ақпарраттық құрылымдарды құру дегенді білдіреді. Мұндай мәліметтер қатарына процессордың идентификаторы, орындаушы модульдың жадыда орнласуы туралы деректер, т.б. жатады. Үрдістерді сипаттаушылар мысалына, есептерді басқару блогын (OS/360), процесс блогын басқарушыны (OS/2), процесс скрипторын (UNIX), объект-үрдісті (Windows NT) келтіруге болады.

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

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

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

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

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

Көп процессорлық жүйеде процесс кеңесі үш негізгі жағдайдың бірінде болуы мүмкін:

  1. орындау – үрдістің активті жағдайы;
  2. күту – үрдістің пасивті жағдайы процеске тиым салынған қандай да бір ішкі себебке байланысты орындала алмайды. Кей жағдайдың орындалуын күтеді.

Мысалы: Енгізу-шығару – операциясының аяқталуының басқа үрдістің хабарлама алуын қажет ресурстарының босатылуын.

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

MS DOS мынадай бөліктерден тұрады:

1. жүйені алғашқы жүктеу блогы (дискінің алғашқы секторы),

2. BIOS-пен арақатынас модулі (IO.SYS файлы),

3. үзілімтермен ( прерывания) жұмыс модулі ( MSDOS.SYS файлы),

4. командалар процессоры ( COMMAND.COM файлы),

5. сыртқы командалар ( бағдарламалық файлдар),

6. құрылғылар драйверлері,

7. CONFIG.SYS файлы,

8. AUTOEXET.BAT файлы.

Бірінші, екінші және үшінші пунктер MS DOS- тың ядросын құрайды.

Алғашқы жүктеу блогы

Жүйелік дискінің түпкі бумасының алғашқы екі файлы IO.SYS пен MSDOS.SYS екенін тексеріп, оларды дискіден оқып жадқа жүктейді, сосын басқаруды MS DOS- қа береді.

IO.SYS

Бұл резидентті ( әрқашан компьютер жадында отыратын) модуль машинаның BIOS- мен байланыс орнатып, сол арқылы құрылғыларды басқарып отырады.

MSDOS.SYS

Бұл да резидентті модуль. Ол файлдық жүйені басқарып, басқа бағдарламалардың файлдық жүйемен жұмыс жасауын ұйымдастырды.

Командалар процессоры (COMMAND.COM)

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

Физикалық ұйымдастыру мен файлдың мекен-жайы

Файлдың физикалық ұйымдастырылуы файлдың сыртқы жады құрылғысында орнығу ережелерін сипаттайды. Файл физикалық жазба -блоктардан құралады. Блок - сыртқы құрылғы оперативті жадымен алмасатын деректердің кішігірім бірлігі. Үздіксіз орнықтыру - физикалық ұйымдастырудың қарапайым дерлік нұсқасы (сурет 2), бұл ретте файлға дискілі жадтың бүтін жалпылама учаскесін қалыптастыратын диск блоктарының реттілігі ұсынылады. Файлға мекен-жай белгілеу үшін тек бастапқы блоктың нөмірін нұсқау жеткілікті. Екінші басымдылығы - қарапайымдылық. Дегенмен екі кемшілігі де баршылық. Біріншіден файлды жаау кезінде оның ұзақтығы, яғни қаншалақты жадыны қарастыру қажеттілігі де белгісіз, екіншіден, мұндай реттілікпен орнықтыруда бөлшектену орындалып, дискідегі кеңістік нәтижесіз, еш пайдасыз қолданылады, себебі кіші көлемнің жекелеген учаскелері (минималды 1 блок) қолданусыз қалуы мүмкін.

Физикалық ұйымдастырудың келесі тәсілі - диск жадының байланысқан блоктар тізімі ретінде орнықтыру. Мұндай тәсілде әрбір блоктың басында келесі блокқа нұсқаулық болады. Бұл жағдайда файл мекен-жайы бір санмен - алғашқы блок нөмірімен белгілене алады. Алдыңғы тәсілмен салыстырғанда әрбір блок қандай да бір файл шынжырына бекінуі мүмкін, бұл ретте бөлшектену болмайды. Файл блоктар санын ұлғайтып, өзгерістерге ұшырайды. Кемшілігі - файлдың еркін орнына қол жеткізуді орындаудың күрделілігі: файлдың реттілік бойынша бесінші блогын оқу үшін алғашқы төрт блокты оқып шығауымыз қажет. Одан өзге, бір блоктағы файл деректерінің саны екілік деңгейге тең келмейді (бір сөз екінші блок нөміріне шығындалған), ал біршама бағдарламалар көлемі екілік деңгейге сәйкес деректер блогын оқиды.

Сурет 2.Файлды физикалық ұйымдастыру а - үздіксіз орнықтыру; б - байланысқан блоктар тізімі; в - байланысқан индекстер тізімі; г -блок нөмірлерінің тізімдемесі

MS-DOS операциялық жүйесінің FAT файлдық жүйесінде қолданылатын танымал тәсіл - индекстердің байланысқан тізімін қолдану болып табылады. Әрбір блокпен - индекс бөлшегі байланыс жасайды. Индекстер дискінің жекелеген облысына орнығады ( MS-DOS-та бұл FATкестесі). Егер де блок файлға бөлістірілген болса, онда аталған блоктың индексі файлдың келесі блогінің нөмірін сақтайды. Мұндай физикалық ұйымдастырылуда алдыңғы тәсілдің бүкіл дерлік жағымды қасиеттері сақталады, бірақ екі белгіленген кемшілік назардан жойылады: біріншіден, файлдың еркін орнына қол жеткізу мақсатында индекстер блогімен танысу, шынжыр бойынша файл блоктарының қажетті санын есептеп, қажетті блок нөміріп анықтау жеткілікті, екіншіден, файл деректері блокты түгелімен қамтып алады, ал бұл дегеніміз екілік дәрежесіне сәйкес көлемді иемденеді деген сөз.

Қорытынды бөлімде, файлдың физикалық орнығуын аталған файлмен алынатын блок нөмірлерінің қарапайым сараптамасы арқылы қарастырамыз. UNIX ОЖ файл көлеміне тәуелсіз мекен-жайдың фиксирленген ұзақтығын қамтамасыз ететін аталған тәсілдің нұсқасын қолданылады. Файлдың мекенжайын сақтау үшін 13 тізбек бөлінеді. Егер файл көлемі аз не 10 блокқа тең болса, онда аталған блоктардың нөмірлері мекен-жайдың он тізбегіне тікелей орын алмастырады. Егер файл көлемі 10 блоктан кем болса, онда келесі 11 тізбек файлдың келесі блокатарының 128 нөмірлерінің мекен-жайларын орнықтырады. Файл 10+128 блоктан көп болса, 128 нөмір блоктары орныққан 12 тізбек қолданысқа енеді. Және де файл 0+128+128 көп боған жағдайда 10+ 128 + 128(128 + 128(128(128 максимум көлемі бар файлмекен-жайын белгілеуге мүмкіндік беретін 13 тізбек үштік жанама мекен-жайландыру мақсатында қолданылады.

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

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

Бағдарламалық код орындалу үшін оған ОЖ үрдісін құру керек. Үрдіс құру дегеніміз –

1. үрдісті сипаттайтын ақпараттық құрылым құру, яғни прлоцесстің контексті және дескрипторын құру;

2. жаңа үрдістің дескрипторын дайын үрдістерін кезегіне қосу;

3. үрдістің кодтық сегментін оперативті жадқа немесе свопинг аймағына жүктеу.

Үрдістерді жоспарлау алгоритмдері

Үрдістерді жоспарлау келесі есептер шешімінен тұрады:

  1. орындалып жатқан үрдісті ауыстыру үшін уақыт моментін анықтау
  2. дайын прооцесстер кезенінен орындалатын үрдісті таңдау
  3. «ескі» және «жаңа» үрдістің контекстік ауыстыру.

Үрдісті жоспарлау үшін алгоритмнің екі тобын қолданады:

А) кванттауға негізделген алгоритмдер

Б) үстемділікке негізделген алгоритмдер.

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

  1. үрдіс аяқтау
  2. қате пайда болуы
  3. үрдіс күту жағдайларына көшу
  4. осы үрдіске берілген процессорлар уақыт кванты бітіріледі.

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

Дайын процессор кезегі әртүрлі тәсілмен ұйымдастырылады: циклдік, кезек, стек бойынша.

Кезек – «бірінші кеиді бірінші орындалды»»fifo

Стек –«бірінші кеиді соңғы кетті» lifo

« соңғы кеиді бірінші орындады.» lifo

Үстемділік –бұл сан Үстемдідікке негізгі алгаритмдер деп процесс привигиясына сүйенеді.

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

  1. салыстырмалы үстемділік
  2. абсолютті үстемділік қолданылған (үстемділік) үрдісінің үстемділігі маңыздылығына байланысты жүйенің администраторы тағайындалған жағдайында немесе ОЖ белгілі ережелер бойвнша өзі есептейді. Үстемділік процесс жүзінде тұрақты немесе кейбір заңға өзгеруі де мүмкін. Үрдістерді жоспарлау екі түрге бөлінеді: 1) ығыстыратын; 2) ығыстырмайтын.

Үрдістің өзара әрекеттестігі және синхронизациялау құралдары

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

Мысалы: файлдарды қағазға басу процессін қарастырайық

Бұл үрдісті жүзеге асыратын бағдарлама арнайы заказдар файлға басқа бағдарламалар жазатын фаилдар атауларын ың тізімі бойыша фаилды , қағазға басады. Next айнымасына жазу үшін дайын бірінші фаилының аталуын сақтайды. Сигмент үрдісте осы айнымасына оқып тапсырыс файлдық сәйкес позициясына өз фаилының атауын жазады.Next айнымасының мәнін бірге арттырады. Айталық кейбір уақыт моментінде R үрдісі Next кейбір уақыт моментінде айнымалысының мәнін оқып тапсырар файлына өз файлының атауын орнатып үлгерген жоқ. Next = 4 дейік R процессі 4 деген мәнді оқиды. Уақыт кванты жетпеген себептен екі процессі керекті әрекетті орындап үлгермеді, S үрдісі кезекті Next айнымалысының мәнің оқыды. Next = 4 және тапсырыс файлға өз файлының атауын орналастырып Next айнымалысының мәнін бірге арттыру. Екінші үрдісіне басқару берілгенде өз файлының атауын төрт позицияға жазады. S үрдісін файлы еш қашан қағазға басылып шығарылмайды. Үрдістерді синхронизациялау проблемасының күрделігі пайда болатын жағдайларының бір келкі еместігінде. Бір уақытта екі немесе бірнеше үрдістер бөлінетін берілгендерді (олар ортақ берілгенді) өңдегенде және соңғы нәтиже осы үрдістің жылдамдықтығының қатынасына тәуелді болса мұндай жағжайлар гонка деп аталады. Үрдістерді синхронизациялау негізгі түсінігі критикалық сексия. Критикалық сексия бұл бөлінетін берілгендерге қатынастыру жүргізілетін бағдарламаның бөлігі кейбір ресурске жарыс эффектісін болдырмау үшін осы ресурспен байланысқан критикалық секцияда әрбір уақыт мезгілінде тек біо үрдіс болуын қамтамасыз ету қажет. Бұл тәсіл өзара (взаимная исключения) болдырмау қамтамасыз етудің қарапайым тәсілі критикалық сексиядағы үрдіске үзулерді болдырмауды рұқсат ету. Келесі әдіс – тиым салу айнымалысын қолдану. Әрбір бөлінетін ресурспен екілік айнымалы байланысы рның мәні бірге тең, егер ресурс бос болса мәні 0-ге тең ресурс басқа процессін қолданса синхронизациялауда matn бір проблема бар бұл өзара тиым салу (важные блокировки) немесе (pet clock) диалогтар (deadlockes)

Наши рекомендации