ОЖ-нің аппаратты қолдауының құралдары. Басқару жүйесi туралы осыған дейiндер айтылған программалардың кешенi сияқты , бiрақ жалпы айтылғандар, ОЖ-дің функцияларының бөлiгi аппаратты құралдармен де орындала алады. Сондықтан программалық және аппаратты құрал, не жиынтық қалай басқару жүйесiнiң анықтауымды кейде кездестiруге болады. 3.8. суреттегі табиғи, басқару жүйелер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нде қабатта. Windows NTтiң басқару жүйесiнiң HAL ж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ң жүйеге қолданушыларының рұқсатты басқару функциясы және оның жеке объекттер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 әсерлердiң жүзеге асырулары үшiн функцияларға көмегi үшiндермен қорлардың менеджерлерi қабаттай әдетте айналады, және де бiрнеше мұндай үндеулердi қажет ете алды бiр жүйелiк шақыруды орындауға.
2.8-шi сурет. ОЖ ядросының көп қабатты құрылымы
О Ж ядросының келтiрiлген бөлiктеуi қабатта болып табылады және шарты жеткiлiктi. Олардың арасындағы жiктердiң санын нақты жүйеде және функциялардың үлестiрiлуi бола алады. Мысалы, машина - тәуелдi модулдардың жiгi NetWare-шы ОЖ аппаратты платформалардың тұрпаттастары үшiн қолайлы жүйеде негiздi тетiктердiң жiгiмен қосыла алады және әдетте жартылай,қорлардың менеджерлерiнiң жiгiмен ажыраймайды. Әрдайым қолданусыз қорларды жоспарлай қоймай, одан да басқа өз жоспарларын өз алдына жүзеге асырады, қорлардың менеджерлерi осы жағдайдағы негiздi тетiктерi жеке
2.9-шы сурет. 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с болып табылады : қабат аралық өзара әрекеттесуге нәсiлдердiң қосымша тiркеме қағаздарының арқасында ядроның жұмысының кейбiр бәсеңдiгiне бағыттал жiктердiң санының үлкеюi, жiктердiң санының кiшiрейтуi жүйенiң кеңейтiлiмдiк және қисындылығын нашарлатады. Мысалы, UNIX-тiң көп болжамдары эволюциялық дамытуды ұзақ жол өткен басқару жүйелерi әдетте айқын ерекшеленген жiктердiң ептеген саны бар реттелген емес ядроларын алады, салыстырмалы жаңадан көрiнген басқару жүйелерiнде, Windows NT-н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 жиындарын алады :
1. ерекше құқықты режимнiң қолдауының құралдары;
2.мекенжайларды хабар жүргiзудiң құралдары;
3. процесстердiң ауыстырып қосуының құралдары;
4. үзулердi жүйе;
5. жүйелiк таймер;
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нде, (ядро ) немесе төрт ядро - орындау платформада VAX немесе 0-1-2-3 процессорларда Intel x86/Pentium ) ек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р программадан басқаға жүру. Үзулерд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 IBM-шi Intel немесе мэйнфреймдердегi SVCтың процессорларындағы intт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гiн қолдаса, онда жадтың облыстарының қорғау құралы тетiк бұлар икемделедi. Жадты қорғау бойынша аппаратураның функциялары процессордың ағымдағы коды және үндеу өндiрiп алатын жадтың сегментiнiң артықшылықтарының деңгейлерiнiң салыстыруларында әдетте тұрады.
Бақылау сұрақтары:
Келесі терминдерге анықтамалар беріңіз: бағдарлама, процедура, процесс, процессор.
Процесстің төрт негізгі қалыптары туралы айтып беріңіз.
Үзілулердің негізгі типтерін белгілеңіз және әр типке мәселе көрсетіңіз.
ОЖ яросының анықтамасы және негізгі фкнкциялары туралы айтып беріңіз.
Linux ядросының структурасын анықтаңыз.
Файлдық жүйенің міндеті неде?
Дәріс № 4
Тақырыбы:Процесстерді жобалау және диспетчеризациясын орындау.
Дәрістің сұрақтары:
Жоспарлау сатылары. Жоспарлау мақсаттары.
Жоспарлау кезінде ескерілетін факторлар. Приоритеттер.
Жоспарлау алгоритмі. FIFO (first-in-first-out) принципі бойынша жоспарлау.
Циклдік жоспарлау.
Көпқабаттық кезектер.
Синхронизация мақсаты мен қажеттілігі
Лектердің синхронизациясына қажеттілік тек мультипрограммалық операциялық жүйеде және есептеуіш жүйеде ақпараттық, информациялық қорларды бірге пайдалануға байланысты туады. Лек аралық мәлімет алмасу, мәліметтерді бөлу, процессорға ену және енгізу-шығару құрылғылары кезінде тұйықтауларды жою мақсатында синхронизациялау қажет болады.
Көптеген ОЖ-де бұл құралдар процесс аралық қарым- қатынас –Inter process communications (IPC) , деп аталады, яғни «процесс» ұғымы «лек» ұғымымен түпкі тарихы мазмұндас екені анықталады.
Лекті мультипрограммалық ортада орындау барысында асихрондық мінезге ие болады. Белгілі бір уақытта бұл процестің орындалу кезеңін дөп басып айту қиын. Тіпті бір бағдарламалық режимде тапсырманың торындалу уақытын дәл есептеу мүмкін бола бермейді. Бұл уақытта көптеген жағдайда циклдер санына, енгізу-шығару операцияларын орындау уақытына ықпал ететін, шығыс мәліметтерінің мазмұнына және т.б байланысты болады.
Мультипрограммалық жүйеде бағдарламаны орындау уақыты анықталынбайды. Лектердің үзілу уақыты, олардың қорлық бөліну кезегінде болуы, лектерді орындауға жіберуді таңдау тәртібі – мұның бәрі көптеген жағдайлардың өту қорытындысы болып табылады және кездейсоқ интерпретивті болуы мүмкін. Сәтті жағдайларда есептегіш бағдарламаның ашықталуы мүмкін мінездерін бағалауға болады, мысалы, берілген уақыт аралығында аяқталуы ықтимал.
Сол себепті, лектер жалпы жағдайда (егер програмист оларды синхронизациялауға қажетті шаралар қолданбаса) тәуелсіз түрде асинхронды бір-біріне қарсы бағытталады. Бұлай болуы бір бағдарламаның, жалпы бағдарламалар кодының қызметін атқаруы немесе бірнеше бағдарламалар легі, әр-қайсысы өз міндетін атқаруы тәрізді. Келесі бір жағдайға дейін және оның кезекті активизатциялауына дейін лекті тоқтату арқылы жылдамдығын мақұлдаумен бекітілді. Кез келген процестер мен лектердің әрекеттестігі олардың синхронизациясына байланысты. Синхронизациялау мақсаты кез- келген лектің әрекеттестігіне негізделеді де, қорлады бөлу немесе мәлімет алмасуға байланысты бола алмайды. Мысалы: алушы легі мәліметтерді тек қана лек жіберуші оларды буферге орналастырғаннан кейін ғана ала алады. Егер алушы легі мәліметтер буферге түспей жатып әрекет ететін болса , онда ол әрекет тоқтатылады.
Аппараттық қорларды бірлестіре пайдалану барысында да синхронизациялау қажет. Мысалы: ( белсенді лекке жүйелі портқа ену қажеттілігі туған кезде) күту режимінде тұрған монополиялық тәртіпке белгілі бір лек жұмыс жасап жатқанда, белсенді лекке жүйелі портқа ену қажеттілігі туған жағдайда, ЖС белсенді лекті уақытша тоқтатады және оны өзіне қажетті порт босағанға дейін активизациялайды. Есептеуіш жүйеде де синхронизациялау қажеттілігі жиі туындайды, мысалы; Ctrl+ C пернелерін басу реакциясы. Қорларды бөлу және босатуға байланысты секунд сайын жүздеген жағдайлар болып тұрады, осы кезде лектерді синхронизациялауға мүмкіндік бере алатын сенімді әрі өнімділігі жоғары ЖС құрамдары болуы керек.
Операциялық жүйе сияқты қосалқы бағдарламалар легін синхронизациялауда програмист өзіндік құралы ретінде пайдалана алады. Мысалы: қосалқы процестің екі бірдей легі өзіндік жұмысын бірнеше оқиғаларды орындау арқылы біреу ғана орнатылатын басты-қисынды өзгерткіш арқылы үлестіруге бағыттай алады.
Бірақ көптеген жағдайларда едәуір нәтижелі немесе бірден –бір мүмкіндіктердің бірі синхронизациялау құралдарының бірі операциялық жүйеде, жүйелі шақырту үлесінде болуы мүмкін. Міне осылай әртүрлі процеске тән лектер бір – бірінің жұмысына қандайда бір жолмен әсер ете алмайды. Олар операциялық далансыз бір –бірін тоқтата алмайды немесе болған оқиға туралы хабарландыра алмайды. Операциялық жүйеде синхронизациялау құрамы тек қосалқы процестерді синхронизациялап қана қоймай, сонымен қатар ішкі қажеттіліктері үшін де пайдаланылады.
Әдетте операциялық жүйені өңдеушілер програмистерге қолданбалы және және жүйелі спектрлі синхронизациялау құралдарын пайдалануға мүмкіндік береді. Бұл құралдар фунционалдық арнайы жабдықтау әрі мейлінше қарапайым құралдарды едәуір күрделі ұүралдар орнын басуға тырысқанда лерархия құра алады, мысалы, бір процестік синхронизациялау легі мен түрлі процестер синхронизациялау легі арасында мәлімет алмасу барысындажәне т.б. синхронизацияның түрлі жүйелік шақыртуларының фунционалдық жиі тосқауланады, бұл жағдайда бір тапсырманы шешу барысында програмист өз қалауына сәйкес бірнеше шақыртуларды пайдалана алады.
Процеспен әрекеттесу қажеттілігі туатын жағдайлар:
бір процестен екінші процеске ақпарат берілуі;
процестің ықпал етуін бақылау ( мысалы, олар бір қап үшін таласқан кезде);
процестік әрекеттердің келісілуі(мысалы, бір процесс мәліметтерді қойса, екіншісі оларды баспаға жібереді).
Бұл жағдайда келісімділік болмаса, екінші процесс мәлімет түспей тұрып, баспаға жіберуі мүмкін.
Екі жағдайда лектерге байланысты. Бірінші жағдайда лектерде мәселе туындамайды, себебі олар жалпы адрестік кеңістікте қолданады.
Мәлімет алмасу бірнеше тәсілдермен жүзеге асырылады:
бөлінуші жад;
бір процесс жазатын, ал екіншісі оқу қызметін атқаратын псевдофайл каналы.
Бір компьютердегі сияқты бүкіл желіде ортаның ерекшелігі жасыратын және процесстерге бірлесіп әрекет қылуға біркелкі мүмкіндік беретін, яро мен механизмді сүйемелдейтін құралы сокеты деп аталады.
Пошталық жәшіктер (Windows-та ғана), біржаққа бағытталған, кең хабарлама жіберу мүмкіндіктері:
өшірілген процедураны қалпына келтіру, немесе А процесі В процесінде процедураны шақыру мүмкіншілігі және мәліметтерді қайтадан алу.
Синхронизациялау қажеттілігі. Синхронизациялау сұрақтарына немқұрайлылық комплекті жүйеде тапсырманы дұрыс шешуге немесе жүйенің күйреуіне әкеліп соқтырады. Мысалы: (4.1.1.суреттегідей) кейбір кәсіпорындарда тұтынушылардың мәліметтік қорын енгізу тапсырмасы.
Деректер базасындағы көптеген жолдардың ішінде төлем және тапсырыс жолы бар, әрбір тұтынушға жеке жазба жұмыстары жүргізіледі. Деректер базасын орындайтын бағдарлама бірнеше лектен тұратын; соның ішінде А легі деректер базасында тұтынушылардан келіп түскен тапсырыс беру туралы ақпарат енгізсе, В легі деректер базасында тұтынушыларға есептеме төленді, ұсынушы біріңғай процес ретінде құралды. Үш қадамдық әрекеттерді іске қосатын біртиптік алгоритмді пайдаланып. Бұл екі лекте деректер базасының жалпы файлына бірлесе әрекет етеді.
Деректер базаснда тұтынушы туралы тапсырылған теңестірілуімен буферге жазуды есептеу.
Тапсырыс (А легі үшін) немесе Төлем (В легі үшін) жолдарын жаңа мағына беру.
Деректер базасына модификацияланған жазба енгізу.
М әліметтерді бөлуге ену барысы. А легі үшін А1,А2 және А3, В легі үшін В1,В2 және В3 қадамдарына сәйкес лектерін белгілейміз, N тұтынушы туралы тапсырыс жазбасын А легі қажет болған жағдайда жаңарта алу үшін. Бұл үшін ол өзі буферінде (А1 қадам) жазба енгізу, Тапсырыс (А2 қадамы) мазмұнын модификациялайды, ал деректер базасында (А3 қадамы) жазба енгізуге үлгермейді, себебі оның орындалуы тоқтатылады, мысалы уақыт квантының аяқталуы. В легінде N тұтынушысына сәйкес мәлімет енгізу қажеттілігі туды деп есептейік. В легінің кезегі келгенде, ал өз буферінде (В1) жазбасын енгізіп үлгереді және төлем (В қадамы) жолын жаңартуды орындайды. Содан кейін тоқтатылады. Бұдан В легінде N тұтынушысы туралы жазба енгізілген, ал тапсырыс жолы бастапқы қалпында мағынасы өзгертілгендігін байқаймыз.
Егер А легіне кезекті түрде басқару берілген кезде, ол өз жұмысын жалғастыра отырып, N тұтынушысы туралы деректер базасына тапсырыс (А3 қадамы) жолының модификацияланған жазбасын енгізеді. А легін тоқтатып, В легін активизацияланғаннан соң, N тұтынушысы туралы деректер базасындағы төлем жолының соңғы жаңартылған өз нұсқасын енгізеді. Бұл жағдайда деректер базасында N тұтынушысының жүргізген төлемі туралы ақпарат сақталады да, тапсырыс туралы ақпарат жойылады. (Н.2,а-суреті) Синхронизациялау мәселесінің қиындықтары пайда болатын жағдайлардың ретсіздігіне байланысты жоғарыда көрсетілген мысалдағы оқиға желісін басқалай дамытуға болады: тапсырыс туралы ақпараттың жойылуы. (Н.2,б-суреті) немесе керісінше барлық түзетулер сәтті енгізіледі. (Н.2,в-суреті) Бұның барлығы лектердің жылдамдығымен тоқтатылу уақытына сәйкес анықталады. Сондықтан лек аралық қарым-қатынас күрдеіл қатынас болып табылады. Жоғарыда көрсетілгендей немесе одан да көп лектер белгілі бір бөлімдерді өңдеуі және қорытында нәтиже лектердің жылдамдығына сәйкес болуы лектер жарысы деп аталады.
4.2. сурет Тапсырманың орындалу қорытындысына ықпал ететін лектердің жылдамдығы
Сыный секция. Лектерді синхронизациялауда бағдарламаның сыный секция ұғымы маңызды орын алады.Сыный секция-дегеніміз бағдарламаның бір бөлігі, орындау нәтижесі оқылған сыймайтындай өзгеруі мүмкін, белгілі бір бөліктің орындалу уақыты аяқталмаған басқа лектермен ауысып, сыный секция әрқашан да сыный мәліметтер арқылы анықталады; Алдыңғы келтірілген мысалды сыный лсекция- деректер базасы болып тұр.
Барлық сыный мәліметтермен жұмыс жүргізетін лектерде сыный секциялары анықталынуы тиіс. Бұдан байқағандығымыздағыдай, түрлі лектердегі сыный секциялар түрлі нәтижелі каманда жүйелерінен түзілуі тиіс.
Лектерді синхронизациялау құралы. Қоршаушы өзгергіштер. Бір процессті лектерді синхронизациялауда қосалқы бағдарлмашы басты өзгергітікті бекітуді пайдалана алады. Бұл өзгерткіштік процесстің барлық лектеріне де тікелей қатынасы бар, бағдарламашы ОС жүйелік шақыруларына назар аудармай жұмыс жасай алады.
4 .3.сурет. Өзгергіш бекітулерді пайдалана отырып сыный секцияларды дамыту
Екілік өзгерткіштікке сәйкес әр бір сыный мәліметтер жинағына келесідегідей қойылады: лек 0 мағынаға ие болғанда, сыный секцияға енгенде және одан шықанда мағынасы 1. 4.3. суретте F(D) бекіту өзгерткіштігіне D сыный мәліметтеріне сәтті қосылуды дамыту мақсатында пайдалынатын лектердің алгоритімдік фрогменті көрсетілген. Сыный секцияға шығар алдында, D мәліметтерімен қандайда бір лек жұмыс істеп тұрмағандығын тексереді. Егер өзгерткіштік F(D) 0 қасиетте орнатылған болса, онда берілген тапсырма мен циклдық тексеру қайталанады. Сегер жинтық мәліметтер (F(D) = 1) болса, онда өзгерткіштік мағынасы F(D) 0 қасиетте орналасады да лек сыный секцияға шығады. О мәліметтерімен лек толық жұмысын аяқтаған соң, F(D) өзгергніштігі қайтадан 1 қасиетпен теңеседі.
Бекіту өзгерткіштігі тек қана бөлінетіе мәліметтерге ғана қолданылмайды сонымен қатар бөлінетін қорлардың әр түрлеріне де пайдаланылады.
Егер барлық есептер жоғарыда көрсетілген тәртіппен орындалса онда лектердің сәтті қосылуларына кепілдік беріледі. Солай болғанмен де кез – келген уақытта, кез – келген жерде соның ішінде сыный секцияда да операциялық жүйе ықпалымен үзілуі мүмкін.
Сонда да бір нәрсені ескеруіміз қажет, үзілісті шектеудің бір тәсілі бар екендігін. Бекіту өзгерткіштігін орнату және тексеру операциясының орындалуы барысында үзуге болмайды. Мысалы: тексеру барысында қордың бос екендігі анықталысымен, 0 өзгерткіштікті орнатып үлгермей лек үзіледі. Оның тоқтатылуы кезінде басқа лек қормен жұмысын жалғастырады, сыный секцияға кіріп ол да бөлінген қормен өз жұмысын аяқтамастан үзіледі. Бірінші безекке баақару мүмкіндігі берілісен, ол қорды бос екен деп қабылдап, өзіндік сыный секциясының жұмысын бастайды. Осылайша өзара қатынас принціптері бұзылады да, потециалды түрде нашар қорытындыға әкеліп соқтыртады. Осындайжағыдайларды болдырмаудың алдын алу үшін көптеген компьютерлердің жүйелік командаларында біріңғай, бөлінбейтін сараптау мен логикалық өзгерткіштік қасиет беру командалары қарасырылған (мысалы: ВТС, BTR және ВТ5 командалары мен Pentium процессі). Процессорда осындай командалар болмаған жағыдайда, текесеру және орнату опреациясын орындау барысында үзілісті болдырмаудың арнайы жүйелік 1 негізі қалыптастырылуы керек.
Жоғарыда көрсетілген өзара байланыстың дамытылуының тәсілі мынадай жетіспеушілктерден тұрады: бір лек сыный секцияда тұрғанн уақытта, осы қор қажет келесі бір лек процессорға ену құғығын алысымен өзіне қажетті бекіту өзгерткіштігін қайта – қайта сұрауы мүмкін, ал бұл дегеніміз басқа бір лекті орындауда пайдаланылатынпроцессор уақытын текке кетіру деген сөз. Осы жетіспеушіліктерді толықтыру үшін көптеген ОЖ арнайы сыный жүйедегі жүйелік шақыртулар қарасытырылуда.
4.4. суретте Windows NT операциялық жүйеде жоғарыда көрсетілген функциялардың көмегімен өзара байланыс орнатылған. Сыный мәліметтерді өзгертудің алдында лек EnterCriticalSection жүйелік шақыртуын орындайды. Осы шақырту шеңберінде алдыңғы жағыдайдағыдай алдымен, сыный қордың жағыдайын көрсететін бекіту өзгерткіштіктің тексерілуі орындалады. Егер жүйелік шақырту (F(D) - 0) қорының бос еместігін анықтағаннан кейін, алдыңғы көрсетілген жағыдайдағыдай емес, циклдық сұраныс жасамай, лекті D) күту режиміне ауыстырады және осы лек сәйкесінше қор босағаннан кейін активациялануына белгі жасайды. Осы уақытта қорды пайдаланып жатқан лек сыный секциядан шығысымен LeaveCriticalSection жүйелік фнукциясын орындауы қажет, осының нәтижесінде бекіту өзгерткіштік мағынаға ие болады да, (F(D) - 1) қоры босайды, ал операциялық жүйе осы қорды күту режимінде тұрған лектерді қарастырып, бірінші кезекте тұрған лекті дайындық жағыдайына жібереді.
4.4. сурет сыный секцияға ену және шығуда өзара байланысты орнатуда қолданылатын жүйелік фнукцияларды дамыту
Осылайша бос емес қорды босатудың циклдық тексерілуіне кететін өнімсіз процессор уақытын жоюға болады. Бірақта сыный секцияның жұмыс көлемі аз болып, бөлінген қорға ену уақыты жылдам берілетін болса, онда бұл жағыдайда бекіту өзгерткіштік жүйесін пайдаланған дұрыс. Шынында да бұл жағыдайда ОЖ сыный секцияға ену және шығуда өзара байланысты орнатуда қолданылатын жүйелік фнукцияларды дамыту күтке үнемділікті керісінше жоғарлатуы мүмкін.
Бақылау сұрақтары:
Тапсырмалар жоспарлаушысы аралық деңгейлер жоспарлаушысы және диспетчердің араларындағы айырмашылықтары туралы айтып беріңіз.
Жоспарлаудың негізгі мақсаттары.
Қарастырылған жоспарлау алгоритмдер арасындағы айырмашалықтарды белгілеңіз.
Дәріс № 5
Тақырыбы:Параллельді процесстердің синхронизациясын орындау.
Дәрістің сұрақтары:
Параллельді өңдеу.
Критикалық аумақтардың мәселелері.
Төменгі деңгейдегі параллельді процесстерді синхрондау.
Жадыны блоктау.
Деккер алгоритмі.
Семафорлар.
Процесс- ол орындалу режимінде болатын программа. Әр бір процесспен оның адрестік кеңістігі байланысады,одан ол оқи алады және онда ол мәліметтерді жаза алады.
Адрест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)-ақпараттар структурасы мен процедуралар жиынтығы және де әр кезде бір ғана процесс қолдануы мүмкін. Маниторды біз бір бөлме сияқты елестетсек, онда ол бөлменің кілті болады, ол кілтпен кезек -кезек процесстерді орналастырады.
Мониторға ену нақты бақылауда –әр уақытта бір ғана процесске енуге мүмкіндік бар. Монитордың бір процесспен жұмыс істеуі кезінде келесі бір процессті жіберсек, онда манитор оған тасу режимін қосады.
Достарыңызбен бөлісу: |