Түйін ағындарында пайдаланушы ағындарының мультиплексациялануы
Түйін ағыны бірнеше пайдаланушы ағындарынан тұруы мүмкін.
Windows орындауларының ерекшеліктері
Төрт ұғым қолданылады:
Тапсырма - жалпы квоталары және лимиттары бар үрдістер жиынтығы
Үрдіс - қорлардың контейнері ( жад ...), минимум бір ағыннан тұруы мүмкін.
Ағын - түйінмен жоспарланушы, нақ орындалатын бөлім.
Талшық - пайдаланушы кеңістігінде толық басқарылатын, жеңілдетілген ағын. Бір ағын бірнеше талшықтан тұруы мүмкін.
Ағындар пайдаланушы тәртібінде жұмыс істейді, бірақ жүйелік шақырулар жанында түйін тәртібіне ауыстырылып қосылады. Түйін тәртібіне ауыстырып қосу және одан кері ауыстырып қосудан жүйе жұмысы өте бәсеңдейді. Талшық ұғымы сондықтан енгізілген болатын. Әрбір ағында бірнеше талшық болуы мүмкін.
Үрдісті басқару және ұйымдастыру. Үрдіс және ядро ұғымы. Үрдістің виртуальдық мекен-жайлық кеңістігін сегментациялау. Үрдіс мәнмәтінің құрылымы.
Әр бір операциялық жүйе кейбір мәліметтермен жұмыс жасайды, олар басқару әдістері мен бірігіп олардың қасиетін сипаттайды.
Үрдіс - бұл барлық ОЖ де болатын программа. Үрдіс - бұл қорларды меншіктеуге құқығы бар программа.
Үрдістерді басқару:
Орталық процессордың уақытын қолдану арқылы басқару.
Енгізу буфері және аударыстыру арқылы басқару.
Бөлінетін қорлар арқылы басқару.
Үрдісті басқарудың негізгі мәселелері. Біріншіден - орталық санашықтың (ОС) уақытын қолдану арқылы басқару немесе бұл мәселені ОС жобалау деп атайды, яғни қандай уақытта қай есеп немесе қай үрдіс ОС басқарады (қандай үрдісте ОС жұмыс істейді).
Екіншіден - Енгізу буфері және аударыстыру арқылы басқару. Мысалы бірнеше адам, бір курс студенттері компьютердің алдында отыр және барлығы бір уақытта бір есепті үрдіс түрінде іске қосты делік. Жүйеде көп есеп пайда болады (жүзден аса). Ал барлық есептеу жүйесі жүз есеппен мультипрограммалық режимде жұмыс істеу қабылдай алмайды, ол өте ауыр. Бұл жағдайда есепті енгізу буфері, яғни үрдістер буферде санашық арқылы өзінің өңделіп босатылуын күтетін үрдістер түзеледі. Осы буферде өңдеуді бастау үшін үрдістердің орындалу кезегін таңдау мәселесі туындайды. Бұл мәселе буфердің жоспарлануы болып табылады.
Енді жоспарлау аударыстыру есебін қарастырамыз. Санашық арқылы бірнеше үрдістер өңделеді және бізге нақты жедел жадыны басқада есептер үшін босату мәселесі туындайды. Бұл жағдайда өңделген есептердің кейбірін ішкі есте сақтау құрылғысына жіберу қажеттілігі туындайты. Қандай алгоритм арқылы бұл есептерді жібере аламыз? Жіберудің бағыт бағдары қандай болады? Мысалы әр жұп есептерді жіберуге болады. Үрдістерді жіберуді ұйымдастырудың қайсысы тиімді - бұл негізгі мәселе.
Үшіншіден - бөлінетін қорларды басқару. Қорлар жиынына қатынау белгілі бір уақытта әртүрлі үрдістер атынан ұйымдастырылады. Бұл баспа құрылғысының коллизиясы сияқты. Функциялар көбінде ОЖнің қасиеттерін анықтайды, бұл функция үрдістердің қарым\қатынасын ұйымдастыруды және ортақ қорларды қолдануды қастамассыз етеді. Мысалдағы баспа құрылғысының мәселесі тез шешіледі, ал егер екі программаның жедел жадыда ортақ фрагменті болса, онда бөлінетін қорларды басқару - күрделі есеп.
Енді ОЖ құрылымын қарастырайық. Тәжірибе жүзінде кез келген ОЖ ядро ұғымына ие. ОЖ ядросы - оның резидентті бөлігі болып табылады, ал жіберу үрдісіне қатыспайды (үнемі жедел жадыда болады) және ОЖ режимінде жұмыс жасайды немесе супервизор режимінде. ОЖ-де негезінен ядро құрамына басқарудың базалық құралы еңгізілген және бірнеше физикалық құралдарды басқаруды қамтамасыз ететін программалар жиынтығы енуі мүмкін. Ядроның негізгі қызметіне көбінесе үзуді өңдеу кіреді. Біз программаларды кейде қорларды басқарушы, құрылғылар драйверлері (физикалық және логикалық) деп атаймыз. Мысалға, ОЖ ядросында жедел есте сақтау құрылғысының драйвері болуы қажет.
Сонан соң есептеу жүйесінің қорларын басқару программалары ядроның айналасында жетілдіріледі. Бірінші деңгей негізінен физикалық құрылғылардың драйверлерінен тұрады. Келесі деңгей логикалық құрылғыларды басқару. Осындай деңгейлер көп болуы мүмкін. Мысалы біздің сұлбада файлдарды басқару драйверлері пайда болуы мүмкін, олар логикалық дискті басқару драйверлерімен байланысты, ал басқалары өз кезегінде нақты физикалық құрылғылар драйверімен байланысты, т.с.с. ОЖнің барлық компоненттері супервизор режимінде және операциялық жүйе режимінле жұмыс істеуі міндетті емес. Ядродан логикалық қашық орналасқан компоненттердің көпшілігі қарапайым қолданбалы режимде жұмыс істей алады. Сол сияқты ОЖ-нің барлық компоненттері резидентті режимде жұмыс істеуі міндетті емес. Функциялардың көпшілігіне бұл талап етілмейді.
Программалық модульдердің құрылымдық ұйымдастыру түрлері.
Құрылымды барлық программалық есеп кодтары орындалуға арналғанда келесі көрсетілген құрылымдардың бір варианты ретінде қарастыруға болады:
Қарапайым программалық құрылымдар. Бұл құрылымда барлық операторлар бөлінбейтін модуль ретінде жасалынады, орындалу алдында жадыға толық жүктеледі және іске қосылған соң басқа программалық модульдерге қатынамайды.
Оверлейлік құрылым. Бұл жағдайда программалық блок белгіленген модульдерге бөлінеді. Негізгілері түпкі деп аталады және қабысу модульдерін шақыру координациясын орындайды. Қабысу модульдері бір адресте орналасады және бір уақытта жадыда бір модульден артық модуль орналаспайды. Бұл құрылым сілтеме кестесі арқылы сипатталады. Онда рұқсат етілетін және ескерілмейтін сілтемелері анықталады. Ескерілмейтін сілтемелерде негізгі шақыруға болатын модульдер көрсетіледі, ал айыруда шақыруға болатын модульдер көрсетіледі. Түпкі модуль тұрақты жадыда орналасады және ол арқылы барлық жүктелетін модульдер орындалады. Бұл құрылым жады бойынша үнемді, бірақ егер ұйымдастыру дұрыс болмаса, онда шақырылған модульдердің жүктелуіне көп уақыт кетеді.
Динамикалы тізбекті құрылымының ұйымдастырылуы.
Link және Load операторлары арқылы жүзеге асырылады. Бұл операторлар арқылы шақырылған модуль жадыда орналасқаны анықталады. Егер модуль жадыда орналасса, онда Link командасы басқаруды оған береді, ал егер командасы болса, онда модульге қатынау күтілуде. Бұл операторлардан басқа Sare және Return командалары қолданылады.
Sare - шақырылған модульді тізбекті бастайды, ал return - модульді аяқтайды.
Sare командасы арқылы үзу нүктесі сақталады, ал return сол нүктеге қайтуды ұйымдастырады.
Кемшілігі: Басқа модуль бір модульді шақыру кезінде жүктеуді күтуге уақыт кетеді. Бұл кемшілікті жою үшін динамикалы параллель құрылымы қолданылады, ол бағыныңқы есеп механизмі арқылы орындалады.
Бұнда нақты үрдіс арнайы команда арқылы ағындарды немесе бағыныңқы сеептерді құрады, олар фондық орындалуға арналған.
Фон ретінде түсініктеме ол нақты үрдістің параллельді басқа бір берілген үрдіспен орындалуы.
Бұл жағдайда арнайы синхрондау операторлары қолданылады, олар құрылған ағынның үрдіспен әрекеттеу ережелерін анықтайды, мысалы, операторлары. Одан басқа үрдістері басқаруға программалық модульдерге қатынасу приницптері әсер етеді. Олар бірнеше типті болуы мүмкін.
қайта-атқаратын программалық модуль
қайта-жүктелетін модуль
Программалық модельдердің ұйымдастыруының рентабельдік принципі.
Бұдан бір модуль әрқашан басқа модульдармен іске қосылуға дайын.
Үрдістің өмір кезеңінің бірінші қадамы болып үрдісті құру және жүйелік кезекке үрдіс туралы мәліметтің орналастырылуы. Үрдісті көрсету кезінде ол туралы негізгі мәліметтер дерекқоры құрылады. Бұл деректер кесте түрінде толтырылады, оның кейде үрдісті басқару блогі деп те атайды. Құрудың бірінші қадамы болып алғашқы мекені бар үрдісті басқару блогінің бөлінуі және осы блокты барлық үрдістер кезегі болып табылады. Содан соң үрдісті бейнелейтін қажетты мәліметтер анықталады. Оларда стандартталған және олардың ішінде кейбіреулері екілік разрядқа дейін тереңдетіле пішімделген. Үрдіс туралы барлық санаттарды келесі мәліметтер жиынтығынан көруге болады:
базалық;
енгізу-шығару сұратулар аймағы;
құрылғыларға сұрату аймағы;
жазбаларды басқару аймағы;
жүйелік қызметке сұрату және оверлейлерге сұрату аймағы.
Базалық аймақ. Құрады:
бұл аймақтың алғашқы мекені болып келетін үрдісті басқарудың блок мекені;
келесі басқару блогіна көрсеткіш (ағымдағы және келесі кезектерде)
ағымды пұрсаттылық;
ағымды кезектің идентификаторы;
үрдісті туындайтын идентификатор;
қосарлана туындалатын жағдай коды;
ағымдағы жағдай статусы;
жағдай мәніне арналған уақытша буфер;
мәліметтер үрдісіне арналған жұмыс аймағы;
мәліметтерді басқарудың блок мекені (жұмыс кестесі)
қорлар жәйлі мәліметтерге арналған уақытша буфер;
жүйелік қызметке қатынау кезінде қайтарылатын мәніне арналған уақытша буфер.
Енгізу-шығару сұратулар аймағы. Құрылғы үрдісіне бергіленген және бекітілген сонымен қатар программаны орындау кезіндегі оларға туындайтын сұратулар жәйлі мәліметтер негізінде құрылады және енгізіледі.
Құрамы:
арнайы басқарудың блок мекені
файлды басқарудың блок мекені
берілген сұратуға жіберілетін сөздер немесе қайдан берілетін жады мекені
енгізу-шығаруға арналған буфер мекені:
мәліметтердің қайда немесе қайдан берілетін файл мекені
жазба түріне көрсеткіш
Құрылғыға сұрату аймағы. Жинақтағыш тегергіштерге сұратуға қызмет көрсету үшін қажетті деректер жазылады.
Құрамы
файлдың аты бойынша енгізу-шағару программасы арқылы есептелінетін мәліметтердің физикалық мекені
осы мекен мен байланысты жады мекені
соңғы операцияның орындауы бойынша мәлімет
Жазбаларды басқару аймағы. Бұғаттау ережесі және жазбалар бойынша блоктардың мекендетілуін бейнелейді, сонымен қатар бір жазбаға бірнеше рет қатынау кезіндегі үрдістерді бұғаттау ережесін алдын ала жазу.
Жүйелік қызметке сұрату аймағы. Құрамы.
үрдісті орналастыру жадысының картасы
енгізу-шығару құрылғылары және үрдіс мәліметтерінің блогі арасындағы тура беру үшін арналған жады картасы
оверлейлік аймақтар үшін арналған жұмыс кестесі.
Жады картасы ұғымына бөлектеніп берілген ұрдіске байланысты жадының логикалық аймағы кіреді.
Үрдіс мәліметінінің құылымы. Үрдіс мәнмәтіні мәтін арқылы анықталған күй мен, пайдаланушының ауқымды айнымалылар мәнін және ақпараттық құрылымдары мен, қолданылатын машиналық регистр мәні мен, есептің мекендік кеңістігінде және үрдістер есеп және ядро стектерінің құрамы болып табылады. Жүйенің операциялық мәтіні және оның ауқымды ақпараттық құрылымдары барлық үрдістер мен бірге қолданылады, бірақ үрдістің мәнмәтінінің құрамдас бөлігі болып табылмайды.
Үрдістің пайдаланушы мәнмәтіні деп үрдістің адрестік кеңістігінде орналасқан кодты және мәліметтерді түсінуге болады. Динамикалық бөлінген жадыда орналасқан (мысалы константалар), инициализацияланатын және өзгеретін мәліметтер (компилляция кезінде бастапқы мәндері меншіктелмеген барлық статикалық айнымалылар), қолданушы стегі және мәліметтерге бөлінеді.
Орындалмайтын код және инициализацияланатын мәліметтер программалар файлы құрамын құрайды, олар үрдістің мәнмәтінінде орындалады. Пайдаланушылар стегі қолданбалық режимдегі (user-mode) үрдістің жұмысы кезінде қолданылады.
Ядро мәнмәтіні түсінігінде біріккен регистрлік мәнмәтін және жүйелік мәнмәтін түсінігі берілген. Үрдіс іске қосылған жағдайда жүйе үрдіс кентекстінде орындалады. Егер жүйе ядросы басқа үрдісті іске қосуды жүзеге асыру кезінде ол мәнмәтіннің қайта ауысу кезінде жүйе ядросы алдынғы ақпаратты сақтайды, өйткені ол бірінші үрдіс мәнмәтінінде қайта оралып оны аяқтауға мүмкіндік береді.
Үрдіс мәнмәтіні құрамында үрдіске бөлінген есептің мекен кеңістігі және үрдістің құрамына кіретін аппараттық регистр және деректер ядросының құрылымы болады. Пайдаланушы мәнмәтіні командалардан және үрдіс деректерінен, есеп стегі және бірігіп қолданатын виртуалды үрдіс мекенінің жады кеңістігінен турады.
Үрдістің мәнмәтіні пайдаланушы мәнмәтіні мен ядро мәнмәтінінен тұрады.
Қолданбалы контекст
Қолданушы стегі
|
|
Ядро контексті
|
|
|
|
Динамикалық бөлінген жады
|
|
ЯДРО стегі
|
Инициализацияланбайтын өзгеретін мәліметтер
|
|
|
Инициализациялатын өзгеретін мәліметтер
|
|
Ядро мәліметтері
|
Инициализацтяланбайтын өзгермейтін мәліменттер
|
|
|
Орындалатын код
|
|
|
Үрдіс мәнмәтінін құраушы
Үрдістің идентификаторы мен дескрипторы. Үрдісті диспетчерлеу және уақытүйлесімдіру. Үрдістің кезегі және пұрсаттылық ұғымы.
Үрдіс – бұл жұмыс істеуге арналған жүйелік қорлар және программалар.
Операциялық жүйе құруды басқару және үрдісті жою деп аталынады және WinNT да ол үрдістер диспетчер болып таратылған.
Ағын – бүл NT ядросы орындауға бағыттайтын үрдіс ішіндегі жағдай.
Объект диспетчері арқылы пайда болатын және жойылатын объекттерді NT орындалу жүйесіндегі үрдістер деп атам
Объект типі
|
Үрдіс
|
|
Объект денесінің атрибуттары
|
Үрдіс идентификаторы
Қатынау маркері
Базалық пұрсаттылық
Квота өлшемі
Орындалу уақыты
Енгізу-шығару санағыш
Виртуалды жадының операиуларының санағышы
Ескерткіш жөндеу порттары
Аяқталу кодтар
|
Қызмет көрсету
|
Үрдісті құру
Ашу
Үрдістің идентификациясын сұрату
Үрдістің идентификациясын орнату
Ағымдағы үрдіс
Үрдісті аяқтау
Виртуалды жадыны ерекшелеу-босату
Виртуалды жадыға оқу-жазу
Виртуалды жадыны қорғау
Виртуалды жадыны бұғаттау/босату
Виртуалды жадыны сұрату
Виртуалды жадыны дискке босату
|
Әр объект-үрдістің объект диспетчері құратын тақырыбы бар. Тақырыпта объекттің атрибуты сақталады. Объект-үрдістердің ішінде сақталатын атрибуттарды үрдістер диспетчері анықтайды және атрибутттық оқу, өзгерту үшін жүйелік қызмет көрсетуді бөледі.
Үрдіс идентификаторы – ОЖ үрдісті идентификациялайтын мән
Қатынау маркері-орындалу жүйесінің объекті, бұнда жүйеде пайдаланушының тіркелген құқығы орналасады.
Базалық пұрсаттылық- үрдістердің ағындарының пұрсаттылығы
Квота өлшемі – пайдаланушы үрдіске бөлінген резидентті және резидентті емес жүйелік жадының максималды өлшемі
Орындалу уақыты-үрдістің барлық ағындарының орындалуына бөлінген уақыт
Енгізу-шығару санағыш – орындалған үрдістердің ағындарының енгізу-шығару операцияларының типі және олардың саны жазылатын айнымалылар.
Виртуалды жады операцияларының санағыш – орындалған үрдістердің аңғындарының виртуалды жадыға операцияның типі және саны жазылатын айнымалылар
Ескерту-жөндеу порттары – үрдістер арасындағы коммуникация арнасы
Ана арқылы үрдістер диспетчері ескерту шақырған ағынға хабарлама жібереді.
Аяқталу коды – үрдістің аяқталған себебі.
Алып тастау – синхронды қатенің қалып-күй машиналық команда арқылы орындалады.
Параллельді басқару үшін синхрондау ережелері белгіленуі қажет, олар параллелизмнің типіне байланысты, бәсекелес үрдістер жолшамдары арқылы синхрондалады.
Жолшам – арнайы басқаратын программалар, олар критикалық аралыққа қатынауды басқаруды орындайды.
Критикалық аралық дегеніміз – ол уақыт аралығы, онда тек бір бісекелес үрдіске қатунауға рұқсат беріледі. Бұл аралықты анықтап және ашатын ол жолшамды ашу процедурасы, басқа барлық ұрдістерге қатынауды бұғаттайды. Аралық аяқталған соң келесі бәсекелест үрдіске қатынауға рұқсат беріледі.
Параллель үрдістердің синхрондау тәсілі:
почталық жәшік бойынша синхрондау
кездесу
көптік күту
Пошталық жәшік бойынша синхрондау ол үрдіс-жіберуші және үрдіс қабылдаушы арасында буфердің пайда болуы. Почталық жәшік мақсаты ол жіберілетін хабарларды арнайы бергілермен қамтамасыз ету, олар арқылы үрдістер екі типті хабар қабылдайды.
А) хабар буферге жазылады
Б) хабар буферден оқылады
Үрдіс-жіберуші хабар буферге жазылған соң келесі хабарды жіберуге дайындалады. Үрдіс-қабылдауышы қайталанатын хабар жіберілді белгісін тексереді, жіберілген болса буферден хабарды оқиды. Содан соң үрдіс-қабылдаушы хабар оқылды белгісін орнатады. Үрдіс-жіберуші келесі хабарды буферге жіберу үшін белгіні тексереді.
Ұйымдастыру ережелері:
үрдістің іске қосу реті
жұмыс орындалған соң оны қалыпқа келтіру ережесі
үрдістің аяқталу реті
сәйкес порттар арқылы қатынау реті.
Үрдістерді басқару бағыныңқы жүйесінің баптауынан және орындалуынан санашықтың қорларының жүктеу байланысты. Үрдістер жүйелік және қолданбалығы бөлінеді. Үрдіс атрибуттары. UNIX ОЖ-гі үрдістің жұмысын басқару үшін үрдіс бірнеше атрибуттардан тұрады.
үрдіс идентификаторы (РІD). Жүйе ядросы үрдістерді бір-бірінен айыру үшін үрдіске идентификатор береді. Үрдіс жұмысын аяқтаған соң ядро идентификаторды босатады.
Аталық үрдістің идентификаторы. Берілген процессті түзеген процесс идентификаторы.
үрдіс пұрсаттылғы (Nice number). Жоспарлауыштың іске қосу кезегін анықтайтын салыстырмалы үрдіс пұрсаттылығы. Орындау пұрсаттылығы санашықтың қорларының жоспарлауын анықтайды. Салыстырмалы үрдісті орындалу кезінде жүйе өзгетпейді. Бірақ оны администратор немесе пайдаланушы өзгертуі мүмкін. Орындалу пұрсаттылық ядро арқылы динамикалы өзгереді.
Терминалды тізбек үрдіспен ассоциативтелген терминал.
Реалды және тиімді пайдаланушылар идентификаторы.
Үрдіске іске қосқан пайдаланушының нақты идентификаторы дейміз. Үрдіс жүйелік қорларға қатынау құқығын анықтау үшін тиімді идентификатор қолданылады. Жаңа үрдісті құрып және оның ішінде программаны іске қосу үшін екі жүйелік шақыру қолданылады.
Үрдіс пен жұмыс жасайтын операциялық жүйенің базалық операциялары.
Операция 1.
1 қадам. Үрдістін өмір сүруі "үрдісті құру" операциясы орындалғаннан басталады.
2 қадам: туындалған үрдіске жағдай кодын бөлу.
3 қадам үрдістің элементті базасын дайындау.
4. Үрдістің белсенділігі үрдісті басқару блогы арқылы үрдісті орындауындағы жіберу үшін кезекке коюдан тұрады.
5 қадам. Инициализацияны аяқтау.
Инициализация аяқталған кейін жіберілетін үрдістің орындалу тәсілі анықталады, бұл синхронды немесе асинхронды орындалу мүмкін.
Операция 2
Үрдісті жою программа аяқталған кейін немесе басқа үрдістермен үзу болған жағдайда орындалады. Үрдіс жойылғаннан кейін оның блокты басқаруы үрдісті бардлық кезекте алып тастап белгіленген ОЖ қорларын босатады. Сонымен қатар жою ауқымды немесе жергілікті режимде жүзеге асырылуы мүмкін.
Операция 3.
Үрдіс идентификациясы.
Үрдісті идентификациялау кезінде оның идентификаторы және кезекті идентификаторға тіркелген үрдіс статусы анықталады, бұнда берілген уақыттағы үрдіс орналасады. Бұл статус жалаушысы және кезектегі мекен арқылы анықталады.
Операция 4.
Үрдістің уақытша тоқталуы жүйеде үзу болған жағдайда болады және осы үзуден кейін үрдістің қайта орындалу үшін ауысу ережесі анықталу керек.
Уақытша тоқтату тияқнақталған уақыт (таймер) аралығында немесе тоқтату типы бойынша болуыы мүмкін. Уақытша тоқтадтудың көзі үрдістің өзі немесе жасанды түрде болуы мүмкін.
Уақытша тоқтау үрдістің енгізу-шығару азасында ал жасанды жолы – ол программалық өңдедуде болады.
Сигналдарды өңдеу жабдықтары. Үрдістерді басқаратын оқиғалық тітіктер. Үрдістер әрекеттестігі. Үзу жүйелері.
Сигналдарды өндеу жабдықтары. Сигналдар бір үрдістен екіншіі үрдіске өткенде немесе ОЖ ядросында қайтадан бір жағдайдың анықталуына байланысты түзіледі. Үрдістер арасындағы қарым-қатынасын сигналды жіберу және қабылдау арқылы қарастырайық.
Үзулердің пайда болуы сияқты сигналдардың пайда болуы келесі себептерге байланысты.
Программа ішіндегі кейбір жағдайлар, мысалы аса толу болғанда немесе нөлге бөлгенде.
Құрылғыдан келген кейбір ақпараттарға байланысты, мысалы пернетақтадан «Сtrl+C» комбинациясын беруге байланысты;
Бір үрдістің екінші үрдіске әректтесуіне байланысты, мысалы «SIG_KILL».
Жүйеде тиянақталған жағдай жиыны бар, олар жүйеде пайда болуы мүмкін. Әр жағдайдың өзінің уникалды аты болады: бұл аттар әдетте UNIX версиясы үшін бірдей. Бұл аттарды сигналдар деп атаймыз.
Үрдістерді басқаратын оқиғалық тітіктер. Үрдістер әрекеттестігі. Позициялық түрде үрдісті басқару үш топқа бөлінеді:
тәуелді үрдістер – үрдістің барлық өмір сүру периодына автономды орындалады;
бірігіп орындалатын үрдістер – таратылатын есептеу алгоритмі негізінде әрекеттеседі;
бәсекелес үрдістер – жалпы қорлар негізінде әрекеттеседі.
Үрдістің нөмірі бірнеше бөлек кезеңдерден тұрады:
Үрдісті құру немесе бастапқы пайда болуы. ОЖ кестесінде үрдіс туралы басқарушы жазба құрылады. Бұл жазбада идентификацияланатын ақпарат болады.
Инициализация. Бұнда үрдістің орындалуына қажетті қорлар анықталады.
Үрдісті белсенділеу. Бұл кезеңде үрдіске санашық қоры бөлінеді және орындалуға жіберіледі. Үрдістің орындалу кезінде ол бұғаттау немесе күту күйінде болуы мүмкін.
Үрдіс аяқталғаннан кейін оның жойылуы басталады.
Бәсекелес үрдістерді басқару негізінде критикалық интервалда басқару әдісі белгіленген. Бұл әдістің негізі коллективті қатынау ішінде әр бір үрдіске өзінше автономды жұмыс жасау үшін уақыт интервалды анықтау мағынасы жатыр.
Бұл талаптар келесі түрде анықталады:
әр бір интервалында тек қана бір үрдіс болу керек
интервалда үрдіс көп уақыт болиауы керек
үрдістер критикалық интервалға шығуды көп уақыт күтпеу керек.
Көрсетілген принциптер арнайы басқаратын программалар көмегімен жүзеге асырылады, бұл программаларды жолшамдар деп атайды.
Үзу мен алып тастау – ол ОЖ-гі күйлер. Олар программалы немесе аппаратты анықталады Үзу немесе алып тастау анықталғанда санашық сол уақытта орындап жатқан жұмысын тоқтатады және басқаруды пайда болған күйді өңдейтін код мекені бойынша жадының ерекше аймағына береді. WNT бұл кодты кақпан өңдеуші деп атайды (trap hondeer).
NT ядросы үзу және алып тастауды ажыратады. Үзу (interrupt) – санашықтың қандай жұмыс орындап жатқанына қарамайтын кез-келген уақытта болатын асинхронды жағдай. Көбінесе үзу енгізу-шығару құрылғыларының әсерінен болуы мүмкін.
Алып тастау (exception) – синхронды қателі қалып-күй, машиналық команда арқылы орындалады. Мысалы жадының қорғанысының бұзылуы.
WNT ядросы жүйелік қызмет көрсетудің шақыруын нәтиже ретінде қарастырады (бірақ ол жүйелік қақпандар).
Қақпандарды өңдеуші. Қақпан (trop) термині ол санашықпен қолданылатын механизм. Орындалып жатқан ағында үзу немесе нәтиже пайда болғанда ол басқаруды алып ОЖ-ң бекітілген нүктесіне басқаруды береді. WNT-де санашық басқаруды NT ядросындағы қақпандарды өңдеушіге береді. Бұл модуль коммутационды панельдің рөлін атқарады: ол санашық генерациялайтын үзулер мен нәтижелерді қабылдайды және басқаруды сәйкес жағдайды өңдейтін кодқа береді.
Қақпан өңдеушісі өзінің шақыру кезінде машинаның қалып-күйін саөтау үшін уақытша үзуге тыйим салады, өйткені егер жаңа үзу немесе нәтиже пайда болса, онда ақпараттар жоғалып кетер еді. Сол үшін ол қақпан кадырын құрады және оған үзілген ағынның орындалатын күйі жайында ақпаратты орналастырады. Үзу немесе нәтиже өңдеуді аяқталған соң бұл ақпарат ядроға ағынның әрі қарай орындалуына мүмкіндік береді.
Кейбір нәтиже өңдеуіш өзі шешеді, бірақ көбінесе ол пайда болған күйдің типін анықтап, оны ядроның басқа модуліне немесе жүйелік атқарушыға басқаруды береді.
Мысалы, егер үзу құрылғыдан болса, онда басқару үзуді өңдйтін процедураларына жібереді (interrupt service routine ISR). Егер үзу жүйелік қызмет көрсетуден пайда болса, онда өңдеуіш басқаруды NT жүйесінің жүйелік қызмет көрсету кодына жібереді.Бөлек нәтиже ядроның нәтижелер диспетчері арқылы өңделеді.
Үзуге үзу диспетчері жауап қайтарады. Ол үзудің көзін анықтап басқаруды сыртқы қызмет көрсететін процедуларға немесе ядроның ішкі процедураларына береді.
Үзудің типтері және пұрсаттылықтары. Әр түрлі санашық әр түрлі типті және әр түрлі мөлшер үзулерді анықтайды. ОЖ танитын үзу деңгейлерінің стандартты жинақысына үзу диспетчері, үзудің аппаратты деңгейлерін бейнелейді. Үзу деңгейлері үзуді пұрсаттылығымен бөледі. Ядролық режимде ағын өзі орындалып жатқан санашықтың үзу деңгейін көтеріп немесе төмендетуі мүмкін. Пұрсаттылық кезегі бойынша үзу қызмет етеді. Үзу жоғары пұрсаттылығымен төмен пұрсаттылықты үзудің орындалуын басып алады.
Үзу деңгейі
|
Үзу типтері
|
1. жоғарғы деңгей
2. қоректендіру деңгейі
3. санашықтық аралық деңгей
4. таймер деңгейі
5. санашық-құрылғысының деңгейі
6. 1-құрылғының деңгейі
7. диспетчерлі деңгей
8. процедураны асинхронды шақыру деңгейі
9.төменгі деңгей -құрылғының деңгейі
|
Аппараттық тексеру немесе құрсым қатесі
Қоректендірудің жаңылысуы
Басқа санашықтан сұраныс
Интервалды сұраныс
Пұрсаттылығы жоғары еңғізу-шығару құрылғысы
Пұрсаттылығы төмен еңгізу-шығару құрылғысы
Ағындарды жоспарлау және кейінге қалдырылған шақыру процедураларының өңделуі
Процедураларды асинхронды шақырудың өңделуі
Ағындардың кәдімгі орындалуы
|
1-ден 6-шы деңгейге дейін аппаратты үзуге арналған;
7-8 – программалық үзулер деңгейі (ядро генерациялайды);
9 деңгей төменгі деңгей – ол үзуге жатпайды.
Үзулерді орналастыру. Үзулер көбінде аппаратты еңгізу-шығару құрылғысынан болады, олар санашыққа өздеріне қызмет көрсету жайында хабар беруі керек. Үзулерді жасайтын құрылғылар, ОЖ-ге есептеу уақытын және еңгізу-шығару операциясын сәйкестендіру арқылы санашықты максимальды жүктеуді қамтамасыз етеді. Санашық құрылғыда еңгізу-шығару операциясын іске қосады және деректер тасымалданғанша басқа ағындарды орындайды. Координатты құрылғылар, баспа құрылғылары, тегергіштер, торапты карталар көбінесе үзуді жүзеге асырады.
Үрдістің біресепті және көпесепті орындалуы. Есепті көппроцессорлы шешуді басқару тәсілдері.
Көпесептілік. Санашық бір уақытта тек бір ағынды орындайды. Бірақ көпесептілік операциялық жүйеде пайдаланушыға бірнеше программаларды пайдалануға мүмкіндік береді:
бір қордың босағанын немесе ағынның орындалуы үзілгенше ағын қолданылады;
ағынның мәнмәтіні сақталады;
ағынның мәнмәтіні жүктеледі;
орындалуды күткен ағындар бар болғанша бұл қайталау қайталанады.
Санашықтың бір ағынды орындау кезінде басқа ағынның орындалуын
қайта қосылуын мәнмәтінің қайта қосылуы дейміз.
Көпесептілік жүйе орындайтын жұмыстың мөлшерін көбейтеді, өйткені көп ағындар үзілмей орындалмайды. Ағындар орындалуын тоқтатып, мысалы енгізу-шығару құрылғысының босауын күтуі мүмкін. Көпесептіліктің арқасында бір ағын күтуде болса, басқа ағын орындалуы мүмкін, соның арқасында санашықтың уақыты босқа кетпейді.
Ығыстыратын көпесептілік – көпесептіліктің түрі, бұнда ағынның басқа ағындардың орындалуына өзбетінше санашықтың босатуын операциялық жүйе күтпейді. Оның орнына алдын ала берілген уақытта немесе пұрсаттылығы жоғары ағын орындалуынға дайын болса операциялық жүйе ағынды үзеді. Ығыстыру бір ағынның санашықты толық алуынан сақтайды және басқа ағындарға санашықтың уақытын қолдануға мүмкіндік береді.
NT орындалу жүйесі – ығыстыратын көпесептілік жүйесі және Windows негізгі ортасы мен Win32 бағыныңқы жүйесі болып табылады. Ығыстырмайтын Windows версиясында MS DOS-қа көпесептілікке жету үшін, ағын өз бетінше санашықтың басқаруын беру қажет. Нашар программалар басқа қолданбаларға немесе жүйе кедергі жасап санашықты жаулап алуы мүмкін еді.
Кейбір кезде екі ағынға жалпы бір мақсатқа жету үшін бір-бірімен әрекеттесуі қажет. Мысалы, С компиляторында бір ағын С тілінде программаның өңдеуін орындаса, ал екінші ағын – бірінші ағынның жұмысының нәтижесін қабылдап және оны объективті кодқа компилляциялауы мүмкін. Бұл екі ағынға бір бірінің деректерінің алмасу тәсіліне қажет.
Санашықтың өңдеуі эәне программаның компилляциясы екі үрдіспен (әр қайсысының бір ағыны бар), бір үрдістің орындалуына қарағанда тез болуы керек, өйткені көпесептілік операциялық жүйеде санашықтың ағынын немесе компиллятордың ағынын кезек-кезек орындауы мүмкін. Санашық бірігіп қолданатын буферге бір нәрсе орналастырса, компилятор өзінің жұмысые бастауы мүмкін. Осыған ұқсас екі немесе бірнеше орында бір уақытта орындалатын қолданбаларды, параллельді қолданбалар дейміз. Бір санашықты компьютерде параллельді қолданбалар пайдалы, ал көпсанашылықтарда ол өте пайдалы.
Көпағындық. Параллельдікке жету үшін екі үрдісті қолдану барлық жағдайда тиімді емес. WinNT бұл проблеманы шешу үшін ыңғайлы жадыны бірігіп қолданатын механизмдерден құрады. Бұл механизмдерді қолданған жағдайларда да басқа проблемалар болуы мүмкін, сол жағдайда параллельдікке жету үшін көпағынды үрдіс қолданылады.
Көпағынды үрдістің екі немесе бірнеше ағындары болады олар бірігіп бір адрестік кеңістікті және қорды қолданады.
NT-ң әр үрдісі бір ағынмен құрылады. Қажет болса программа үрдіс ішінде қосымша ағындарды құруы мүмкін. Олар көбінесе программада асинхронды операциялаоды орындау үшін қолданылады (операциялар кез келген уақытта орындалады). Бұл категорияға енгізу-шығару операциялары кіреді. Бір ағынды негізгі программаның орындалуына қолданып, және екінші ағынды еңгізіу-шығару құрылғысының сұранысына құрып, сонда жүйе бір санашықта бөлек екі операция орындауына болады, бұл жағдайда көпесептілік орын табады. Көпсанашықты компьютерде бұл екі ағын бірге орындалуы мүмкін және басқа үрдіс құруына қажеті жоқ.
Ағындарды қолданып параллелизмге жету үшін программа бір үрдісте екі немесе бірнеше ағын құрады. Көпағындық үрдістер параллельдікке жетеді және екі үрдісті қолдануымен байланысты кемшіліктері жоқ. Ағындар үрдіске қарағанда тез құрылады. Одан бөлек үрдістің ағындары бір жадыны қолданады, өздерінің стегі және регистр мәндерін алып тастағанда. Ерекше деректер алмасу механизмін керек етпейді. Бір ағын өзінің нәтижесін жадыға жазады, ал екінші ағын оларды оқиды. Сонымен бірге үрдістің барлық қорлары оның барлық ағындарымен бірдей қолданылады. Ағындардың орындалу кезегін анықтау үшін ядро пұрсаттылыққа негізделген сұлбасын қолданады. Пұрсаттылығы жоғары ағын пұрсаттылығы төмен ағыннан бұрын орындалады, ядро ағындардың пұрсаттылығын өзгертіп тұрады, сол арқылы олардың бәрінің орындалуына кепілдік береді.
Көпағынды үрдісті қолдану – серверлі қолданбаларға тиімді шешім, ол клиенттерден сұраныс қабылдайды және әр сұраныс бойынша бір кодты орындайды. Мысалы, файл-сервер файлдармен жұмыс жасайтын операцияла, бірақ әр сұраныс серверден өзінің файлымен жұмыс істеуді сұраса да, сервер программасы жадыға тек бір рет жүктеледі. Әр келетін сұраныс қажет функциясын орындайтын сервердің бөлек ағындарымен қабылданады және өңделеді.
WinNT –де параллельдікке жету үшін екі үрдісті қолданады олар арнайы арналар арқылы әрекеттеседі. Сондықтан WinNT бағыныңқы жүйелері бөлек серверлі үрдістер ретінде жүзеге асырылған және қорғалған деп аталады.
Өз-өзін бақылау сұрақтары
Үрдіс пен ағынның түсініктемелері
Үрдіс диспетчері және атрибуттары
Үрдіс мәнмәтіні дегеніміз не?
Үрдіс дискрипторының түсініктемесі
Мәнмәтіннің қайта қосылуы дегеніміз не?
Көпесептілік ненің арқасында орындалады?
Көпағындықты қолдану нені көрсетеді?
Арна дегеніміз не, не үшін қолданылады?
Үрдістер қандай топтарға бөлінеді?
Сигнал түсініктемесі.
Үзу түсініктемесі және оның алыптастау мен айырмашылығы
Үзу деңгейлері
Параллельді үрдістердің синхрондау тәсілдері
Мультипрограммалық режимнің мультиесептік режимнен айырмашылығы
Монолитті және микроядерлі жүйелерге мысал келтіріңіз
Құрылымдық ұйымдастырудың типтері
Нақтылы уақыт операциялық жүйесінің критерилері
Уақыт бөлу ОЖ қандай режимде жұмыс жасайды?
Ұсынылатын әдебиеттер
Э. Таненбаум. Современные операционные системы. СПб, Питер, 2002, 1040 стр.
Н.А. Олифер, В.Г. Олифер Сетевые операционные системы. СПб, Питер, 2001, 544 стр.
3 тақырып. Енгізу-шығару жүйесін басқару
Мақсаты: Осы лекцияда cинхронды және асинхронды енгізу-шығару; енгізу-шығарудың басқару режимдерімен; еркін және тізбекті қатынас құру тәсілдерімен; енгізу-шығаруды қорғау тәсілдерімен танысу.
Қарастырылатын сұрақтары:
Енгізу-шығару жүйесін басқару.
Синхронды және асинхронды енгізу-шығару.
Енгізу-шығаруды диспетчерлеу.
Еркін және тізбекті қатынас құру тәсілдері.
Енгізу-шығару ағындары.
Енгізу-шығаруды қорғау тәсілдері.
Енгізу-шығару жүйесін басқару – ол ОЖ-гі негізгі функцияларының бірі
және ОЖ жобалауының ең қиын аймақтарының бірі.
Енгізу-шығару құрылғыларының көптігінен және олардың түрлі табиғаттарынан қиыншылықтар туады. Сондықтан ОЖ-ні құрушылардың арасында оңай есеп тұрған жоқ. Олар енгізу-шығару құрылғыларының тиімді басқаруды ғана емес қолданба программистер құрылғылардың түріне қарамастан деректерді оңай оқып, сақтау үшін ыңғайлы, тиімді виртуальды интерфейсті құру қажет.
Бір модельге бірнеше түрлі құрылғыларды біріктіретін жүйелік енгізу-шығару әмбебап болу қажет. Біріншіден, ол бар құрылғылардың қажеттіліктерін ескеру қажет. Екіншіден, бірнеше параллель орындалып жатқан есептерге енгізу-шығару құрылғыларына қатынауды ескеру қажет.
Қолданбалы программалар өздері енгізу-шығару құрылғылары тікелей байланысалмайды. Енгізу-шығару сұрауына керек мәндерді орнатып, енгізу-шығару супервизорына басқару беріледі.
Енгізу-шығаруды басқару режимдері. Екі негізгі енгізу-шығару режимі бар: енгізу-шығару құрылғыларының дайындығын сұрату алмасу режимі және үзілісі бар алмасу режимі.
Егер енгізу-шығару басқаруын орталық санашық атқарса, онда ол басқару құрылғысына бір енгізу-шығару құрылғысының орындалуына команда береді. Енгізу-шығару құрылғысы команданы орындап орталық санашыққа жеке сигналды басқаратын құрылғыға түсінікті сигнал жібереді.
Енгізу-шығару құрылғысының жылдамдығы орталық санашықтың жылдамдылығынан төмен. Сондықтан дайындық сигналын көп күту керек, сигнал шыққанша драйвер еш нәрсе орындамайды. Сондықтан енгізу-шығару командасын беріп ол құрылғыны уақытша ұмытып басқа программаның орындалуына көшкен жөн. Ал дайындық сигналы шыққан кезде оны енгізу-шығару құрылғысының үзуге сұрау деп санаймыз.
Ортақ енгізу-шығару құрылғылары, құрылғылырды жалғау. Көп құрылғылар бірігіп қолдануды қолдамайды. Біріншіден ол тізбекті қатынайтын құрылғылар. Ондай құрылғылар жалғанған болуы мүмкін, яғни бір есептеу үрдіске беріледі. Бірақ ол есептеу үрдістерінің параллельді жүұмыс жасауна мүмкіндік бермейді және енгізу-шығару құрылғыларының босау уақытын күтеді. Параллельді орындалып жатқан есептер арасында енгізу-шығару құрылғыларын қолдануын ұйымдастыру үшін виртуальдік құрылғылар түсінігі енгізіледі.
Виртуализация принципін қолдану есептеу жүйесінің тиімділігін жоғарлатуға мүмкіндік береді. Көбінесе виртуалдық құрылғыға - спулинг терминін қолданады.
Спулинг дегеніміз – операциялайтын режімде құрылғылармен жұмыс имитациясы.
Спулингтің негізгі жұмысы тізбекті қатынайтын құрылғыларының параллельді бөлуінің көрінісін ұйымдастыру. Бірақ олар монопольді және жалғанған ретінде қолдану қажет.
Мысалы, егер біз бірнеше қолданбаның қорытындысын басуға жіберетін болсақ онда біз түсініксіз қорытындыға ұшыраймыз. Бірақ әр есептеу үрдісіне виртуальді принтер беруге болады және ағындылар бірінші рет магнитті дискідегі арнайы спул файлына жібереді. Содан соң виртуалды басу аяқталған соң қабылданған пұрсаттылықтармен және қызмет көрсету пәні бойынша спул файлдің мәні принтерге жіберіледі. Спул файлымен басқаратын жүйелік үрдіс – спулер деп аталады (Spool-reader немесе spool-writer).
Программисті компьютерге орнатылған енгізу-шығару құрылғыларының параметрлері және олардың мүмкіншіліктері мүмкіншілік болғанша ойландырмау керек. Оған тек қолданатын енгізу-шығару құрылғыларының жалпы мүмкіншіліктері қажет. Мысалы, принтер басуді білу қажет, ал магниттік дискіде жинақтауыш берілген адрес бойынша (С-N-S) координаты, цилиндр нөмірі, бас тиек нөмірі және сектор нөмірі) деректерді жазу және оқу қажет.
Негізгі болып саналатын ол жинақтауыштың бары және оның цилиндрінің жазу-оқу бас тиегінің және магниттік диск жолының секторларының бірнеше сандарының болуы цилиндрдің, бас тиектің және магниттік диск жолының секторлардың бірнеше сандарының мәні жабдық кестесінен алынуы мүмкін. Бұл жағдайда программисті құрылғының есептеу жүйесіне қалай жалғанғаны ойландырмау керек. Сондықтан ол енгізу-шығару сұрау кезінде құрылғының логикалық атын белгілейді.
Виртуалды құралғыға сәйкес нақты құрылғы кесте арқылы супервизормен таңдалады. Сонымен құрылғының қосылу тәсілі, оның мoделі және оған сәйкес драйверлер бірінші жабдық кестесінде анықталады. Ол виртуалды құрылғыны жүйелік кестесімен байланыстыру үшін екінші жүйелік кестесі қолданылады. Шартты біз оны виртуалды логикалық құрылғының сипаттама кестесі дейміз (DRT – device reference table)
Енгізу-шығару үрдісін басқару.
1 - әрекет. Орындалып жатқан программадан енгізу-шығару операциясына сұраныс супервизорға түседі.
1.1 - әрекет. Супервизор жүйелік шақыруды қабылданған спецификацияларға сәйкестігін тексереді және қате болған жағдайда есепке сәйкес хабарлама жібереді.
2 - әрекет. Егер сұраныс дұрыс болса, онда есеп енгізу-шығару супервизорына бағытталады.
2.2- әрекет. Супервизор виртуаль аты арқылы (DRT кестесінен құрылғы кестесіне сәйкес UCB элементін табады. Егер құрылғы бос болмаса, онда есеп сипаттаушы құрылғыны күтіп есептер тізіміне орналастырады.
3 - әрекет. Егер құрылғы бос болса, онда енгізу-шығару супервизоры UCB –дан құрылғының типін анықтайды, және қажет санашықты іске қосады, ол құрылғыны түсінетін және орындайтын басқару деректерін және кодтарын ашуға береді.
4 - әрекет енгізу-шығару басқаратын «программа» дайын болған кезде енгізу-шығару супервизоры басқаруды сәйкес драйверіне береді (іске қосу секциясы).
5 - әрекет. Драйвер басқару операциясын инициализациялайды тайм-аут санауышын нөлдейді және санашыққа орындалуға дайын есепті қою үшін супервизорға (есеп диспетчеріне) басқаруді қайтарады.
6 - әрекет. Жүйе жұмысты кезегімен орындайды, бірақ енгізу-шығару құрылғысы жіберілген команданы орындап болған соң, үзуге сұраныс сигналын орнатады және үзу кестесі арқылы басқару жалғастыру секциясына беріледі. Жаңа команданы алған соң құрылғы оны орындайды және саннашықпен басқаруды қайтадан есеп диспетчеріне қайтарады, ал санашық өзінің жұмысын жалғастырады. Сонымен есептердің параллель өнделуі болады, соның көрісінде санашық енгізу-шығару операцияларының басқаруын жүзеге асырады.
Синхронды және асинхронды енгізу-шығару. Енгізу-шығару операциясына сұраныс берілген операциялардың аяқталғанын күту күйіне супервизормен ауыстырылады. Аяқталу секциясынан операцияның аяқталғаны жайлы супервизор хабарлама алған соң ол есепті орындалуға дайын күйіне ауыстырады және ол өзінің жұмысын жалғастырады. Бұл жагдай синхронды енгізу-шығару сәйкес синхронды енгізу-шығару көп ОЖ стандартты болып табылалы. Қолданбалардың орындалу жылдамдығын ұлгайту үшін кажет болғанда асинхронды енгізу-шығару қолданылады. Асинхронды енгізу-шығарудың карапайым варианты, ол сырткы кұрылғылардың деректерін буферлі шығару. Бұл кезде қолданбадағы деректер енгізу-шығару кұрылғыларына жіберілмейді, ал арнайы жүйелік буферге жіберіледі. Негізгі логикалы қолданбаға шығару операциясы бірден орындалған болып саналады, және есеп накты деректердің құрылғыларға жіберілген үрдісін күтудің қажеті жоқ. Жүйелік буферден деректерді шығаруды енгізу-шығару супервизоры атқарады.
Енгізу-шығару супервизорының нұсқауы бойынша арнайы жүйелік үрдіс жүйелік жады аймағында буферге орын бөледі. Асинхронды деректерді енгізуді де ұйымдастыруға болады. Бірак ол үшін тек қана жады аймағында кұрылғылардан оқып деректерді уакытша сақтап, бөлінген буферді операцияға сұраныс берген есеппен байланыстыру ғана емес және енгізу-шығару операциясына сұранысты екі бөлікке бөлу(екі сұранысқа).
Бірінші сұраныста деректерді оқу операциясына нұскау беріледі. Бұл сұраныста қосымша параметр беріледі - ол есеп сұранысқа жауап алатын және берілген ерекшеленген буферді идентификациялайтын жүйелік объекттің аты. Буфердің атын алып есеп өзінің жұмысын жалғастырады. Деректерді асинхронды енгізу кезінде есеп енгізу-шығару супервизоры арқылы енгізу-шығару операциясының аякталуын күту күйіне өткізілмейді, ол оры ндалу немесе орындалуға дайын күйінде калады. Бірнеше уақыттан сон программистпен анықталған қажет код арқылы есеп енгізу-шығару операциясын аяқтауға екінші сұраныста береді. Бұл жағдайда сол кұрылғыға (оның коды баска) есеп жүйелік объекттің атын көрсетеді және деректерді оқу операциясы ойдағыдай аяталған жағдайда ол оларды жүйелік буферден сол заматында алады. Егер деректер сыртқы құрылғыдан жүйелік буферге аяғына дейін жазылып үлгірмеген жағдайда, енгізу-шығару супервизоры есепті енгізу-шығару операциясының аякталуын күту күйіне ауыстырылады.
Асинхронды енгізу-шығару мультипрограммалық ОЖ қолданылады, әсіресе егер олар трелтер механизмі арқылы қолданылса.
Енгізу-шығару аппаратурасы біріккен аппаратты санашыктар сияқты қарастыруға болады. Бұл санашықтардыда сыргқы үрдістер орыіідалады. Мысалы, сыртқы күрылгыға сыртқы үрдіс біріккен операциялар ретінде көрсетіліп олар мысалы бір символдардың басылуы. Сыртқы үрдістер енгізу-шығару аппаратурасын қолдана отырып олар бір бірімен әрекеттеседі және орталык санашықта орындалатын "программалык" үрдістермен әрекеттеседі. Бұл жерде ең маңыздысы ол сыртқы үрдістің жылдамдылығы "ішкі" үрдістердің орындалуынан айырмашылығы бар. Ішкі және сыртқы үрдістер өздерінің жұмысы дұрыс орындалуы үшін олар синхрондалу қажет. Сыртқы және ішкі урдістердің жылдамдылыктарының сәйкессіздігін дұрыстау үшін буферлеу қолданылады. Буферлер арқылы деректер немесе бір үрдістен адрестелген сыртқы күрылғыға жіберіледі (сыртқы құрылғыларының деректерін шығару операциясын) немесе сыртқы үрдістен бір программалық үрдіске (деректерді оқу операциясы).
ОЖ супервизорленген бөлігі жүйелік буферлермнн басқару проблемаларын шешеді. Буферлерді бөлу, босату ғана емес және оларды бос буфер болмаған жағдайда күту есептерін супервинзор шешу қажет. Көбінесе енгізу-шығару супервизоры бұл есептерді шешу үшін ОЖ-де кабылданған стандартты синхронизация құралдарын колданады. Сондықтан егер ОЖ есептерді параллельді орындалу проблемаларын шешетін құралдары болса, онда ол асинхронды енгізу-шығаруды ұйымдастырады.
Есептерді динамикалық жоспарлау үрдістерді жоспарлауға қарағанда тиімді үлестіру әр жағдайда болады. Есептің динамикалық жоспарлауын диспетчерлеу деп атайды. Орындалып жатқан үрдістермен ағындар арасында ағымдағы қорларды үлестіруден жоспарлау көп ұйымдастырылады.
Орындалуға дайын есептердің кезегінің тізімін дайындайтын көп диспетчерлеу пәндері 6елггісі. Кызмет көрсететін пәндер екі үлкен топқа бөлінеді — пұрсаттылықты және құрсаттылықсыз.
Мультипрограммалық ОЖ-де көп есептер орындалған кезде деректерді оқуға және жазуға сұраныс көп ағындар болып етуі мүмкін, сонідықтан оларды орындау кезінде кезек пайда болады. Егер біз сұраныстарды олардың кезекке түскеніне байланысты орындайтын болсак, онда магниттік дискінің секторларына кездейсоқ қатынайтын боламыз, онда деректерді жабуға біз көп уақыт жібереміз. Өйткені деректерді іздеп табуға уақытты азайту үшін сұраныстарды кезекке дұрыстап коюға болады және олар тез орындалу үшін тиімді әдісті табу қажет. Ол проблеманы шешу үшін тиімді жоспарлау пәнін табу қажет. Белгілі пәндерді қарастырайык, олар деректерді оқу/жазу операцияларына сұраныс кезегін қайта құрады.
1. SSTS (shotest seek time-firsy)-бірінші-минималды іздеу уақытымен. Бұл пән бойынша
магниттік бастиекті позицияланғаи кезде келесі болып саналатын сұраныс ол оның цилиндрынан цилиндрға жылжу уақыты минималды болу, бұл сұраныс кезекте бірінші болуының кажеті жоқ. Бұл пәннің қасиеті, ол дискілік бағыныңқы жүйенің максималды өткізу кабілеті.
Scan (сканерлеу)-бұл пән бойынша бастиек бірде бір бағытта, бірде басқа бағытта жылжиды. Жолда сәйкес сұраныстарды орындайды. Егер оқу-жазу бастиегінің жылжу кезінде сәйкес сұраныс болмаса, онда ол кері бағытта жылжиды.
Next-Step-Scan-алдыңғы пәннен айырмашылығы ол жылжыту кезінде тек қана сол уақьттта болған сұраныстарды орындайды. Бастиектін оқуға-жазуға жылжу уақытында пайда болған жаңа сұраныстар, жаңа сұраныс кезегін құрайды. Бұл сұраныстарды кері жолда орындауы мүмкін.
С-Scan - бүл пән бойынша бастиектің жылжуы қайталап ең сыртқы жолдардан ішкілерге, жолда бар сұраныстарға қызмет көрсетіп, содан соң қайта сырткы цилиндрға ауысады.
Енгізу-шыгару - ол операциялық жүйенің жобалауының ең қиын аймактарының бірі. Енгізу-шығару құрылғыларының коптігінен және олардың түрлі табиғаттарынан қиыншылықтар туады. Сондықтан операциялык жүйені тудырушылар арасында оңай есеп тұрған жоқ. Олар енгізу-шығару құрылғыларының тиімді басқаруы ғана емес қолданба программистер құрылғылардың түріне қарамастан деректерді оңай оқып, сақтау үшін ыңғайлы тиімді виртуальді интерфейсті құру қажет.
Бір модельге бірнеше түрлі құрылғыларды біріктіретін жүйелік енгізу-шығару әмбебап болу қажет. Біріншіден ол бар құрылғылардың қажеттіліктерін ескеру қажет. Екіншіден бірнеше параллель орындалып жатқан есептерге енгізу-шығару құрылғыларына қатынауды ескеру қажет.
Сондыктан ең негізгі болып келесі әдіс саналады: енгізу-шығаруды басқаратын операциялар привилегиялық деп аталады және операциялык жүйенің коды аркылы орындалады.
Қолданбалы программалар өздері енгізу-шығару құрылғыларымен тікелей байланысалпайды. Енгізу-шығару сұранысына керек мәндерді орнатып, енгізу-шығару супервизорына басқару беріледі.
Қордын негізгі түрлерінің бірі ол санашықтық уақыт. Есептеу жүйесіндегі қордын екінші түрі ол жады.
Жады және қатынау (деректерге қатынау үрдісі) олар әртүрлі қор болып саналады. Бұл қорлар бір бірінен бөлек қолданыла береді. Бірақ сыртқы жадының толық жұмысы орындалу үшін бұл қордың екеуі де керек. Тікелей қатынау механизмі қолданылса сыртқы құрылғылар параллельді болінуі мүмкін.
Бөлінетін құрылғыларға мысал келтірсек ол компакт-дискілерді қоятын құрылғы. Бұл тік қатынас құратын құрылғы.
Егер құрылғы тізбекті қатынау механизмі арқылы жұмыс жасайтын болса, онда ол кор бөлінбейтін кор, мысал келтірсек ол баспалар.
Ең қажетті қорлардын бірі ол программалық модуль. Программалық модульдер бір рет және бірнеше рет қолданылатын болып бөлінеді.
Жүйелік бір рет қодданылатын программалық модульдер ОЖ-е жүктелу кезінде қолданылады.
Бірнеше рет (қайталап) қолданылатын программалық модульдер привиллегиялық, привиллегиялық емес және рентабельдік болуы мүмкін.
ІІривиллегиялық программалық модульдер привиллегиялық режимде жұмыс жасайды.
Енгізу-шығару сұраныстары нақгы белгіленген бірнеше өңдеу этаптарынан өтеді. Бұл этаптарда сұраныс құрылғыға бірқатпарлы драйверлер арқылы басқарылатын немесе көпқатпарлы драйвер арқылы өтуіне байланысты айырмашылықтары бар. Әрі қарай айырмашылықтарлы оңдеу негізінде берілген енгізу-шығару типі - синхронды немесе асинхронды бойынша белгіленеді. Мысалы екі үрдіс жалпы оперативті жадының кеңістігінде жұмысын орындайды. Бұнда бөлінетін қорлар әр түрлі режимдерде орындалуы мүмкін, мысал екі урдіс екі бөлек машинада болса, бірак олар жалпы оперативті жадының орісімен байланысуы мүмкін. Бұл жағдайда жадымен буферлеу жұмысын атқарған кезде проблема түзелуі мүмкін, ойткені әр машинаның өзінің оку/жазу буферлеу механизмдері болады. Онда жағымсыз жағдай туады, физикалық жадының жағдайы оның реалды мәніне сәйкес келмейді. Сонымен қатар екі бөлек машинада жұмыс жасап отырған операциялық жүйеде проблема түзеледі.
Келесі проблема. Мысалы, екі үрдіс бір машинада орындалады. Бұл жағдайда бөлінетін жадыға қатынауды синхрондауға мүмкіндік беретін құрылымдар белгіленуі керек. Оперативті жадымем жұмыс жасап жатқан үрдістердің алмасуы дұрыс орындалу үшін жагдай жасалуы керек.
ІІІындығында есеп шешкен уақытта жалпы жады сияқты қордың бөлінуінің қажеті жоқ, бірақ бір уақытта орындалатын үрдістер бір біріне әсер етсе дейміз. Әсер ету аппаратты узүге тең. Көп операциялық жүйелер оны жүзеге асыру үшін үрдістер арасында сигналдар қолданылады. Бір үрдіс басқа үрдіске сигнал жібер деп нұсқау береді. Басқа үрдісте орындалып жатқан үрдіс үзіледі және кабылданған сигналды өңдеу қажет.
Бұл операциялық жүйенің үшінші функциясы. Операциялық жүйенің бұндай функциялары оның эксплуатациялық қасиеттеріне әсер етеді. Реалды әр операциялық жүйе көп функциялар жиынынан түрады, олар жүйенің жұмысын қамтамасыз етеді.
Әр операциялық жүйе енгізу-шығару буферлеуін қамтамасыз етеді. Негізінде ол (операциялық жүйенің негізгі функцияларының бірі. Операциялық жүйе есептеу жүйесінің түрлі компоненттерінің әр түрлі қатынас жылдамдықтарымен қүресу үшін программалық буферлеуді енгізеді, ол катынас уақытын дұрыстау және синхрондау проблемаларын шешеді.
Магниттік дискідегі жинақтауышты компьютердің орталық бөлігінің шапшандығымен салыстырғанда жылдамдыгы өте төмен. Шапшандыгғының айырмашылығы бірнеше рет. Операцияның орындалу уақыты 0,5 нс болуы мүмкін, ал магниттік бастиектің бір жолшығынан басқа жолшыққа өтуі бірнеше миллисекунд болады. Бастиектің астында оқу/жазу үшін қажег деректер секторын күтуге бірнеше уақыттық интервалы өтеді. Қазіргі жетектерді кездейсоқ таңдалған сектор деректерінің оқылуының орта ұзақтылығы 20 мс болады. Бұл команда және операнд оперативті жадыдан және бүркемеден таңдалуынан әлдеқайда төмен. Бірак, деректер үлкен пакетпен оқылады (сектор размері 512 байт, ал дискімен операциялары кезінде көбінесе оқу немесе жазу бірден бірнеше ссктордан болады).
Сонымен санашықтың оперативті жадымен жұмысының орта жылдамдылығы деректерді сыртқы жадыдан магниттік дискіден оперативті жадыға жіберу орта жылдамдылығынан 2-3 рет жоғары. Осы негізгі бағыныңқы жүйелердің үлкен келіспеушілігін дұрыстау үшін деректерді бүркемелеу немесе буферлеу қолданылады.
Дерек оқу операцияларын дискідегі жылдамдатуы ол еселенген буферлеуді қолдану. Оның мәні ол бір буферге магниттік дискіден деректер енгізілсе, онда басқа буферден алдында оқылған деректер оқылуы және сұраған есепке берілуі мүмкін. Осындай үрдіс деректерді жазган уақытта да болады. Буферлеу барлық ОЖ-де қолданылады. Бүркемелеу бір программа дискіден бірнеше рет бір деректерді оқыған кезде қажет және пайдалы. Ол деректер бүркемеге бір рет орналасқан соң дискіге қатынау керегі жоқ және программаның жұмыс жасау жылдамдылығы өседі. Бүркеме ретінде біз буферлер жиынын түсінеміз және оларды сәйкес жүйелік үрдісімен басқарамыз. Егер біз файлдың жазулары бар бірнеше секторларды оқитын болсақ, онда ол деректер бүркемеден өтіп сонда қалады (бүл буферлерді басқа секторлар ауыстырғанша). Егер деректерді қайта оқу қажет болса онда олар оперативті жадыдан оқылады дискіге қатынамай-ак жазу операцияларында жылдамдатуға болады.
Деректер бүркемеге жазылады және бұл операцияны сұраған есеп сұранысы нақты жазылады деп санаса болады. Есеп әрі қарай өзінің орындалуын жалғастырса болады., сыртқы жүйелік үрдістер бірнесе уақыттан соң деректерді дискіге жазады. Бұл операция кейінге қалдырылған жазба деп аталады. Егер кейінге қалдырылған жазба қолданбаса, онда тек бір есеп өзінің деректерін дискіге жазады, қалған қолданбалар өзінің кезегін күту керек.
Бүркеме жады-жадының шапшандық аймағы, санашық өндеу алдында деректерді буферлеу үшін қолданылады.
Кейбір ОЖ-де бүркемелеу параметрлерін айқын көрсетуге болады, ал кейбір ОЖ-де бұл параметрлерге ОЖ өзі жауап береді. WNT ОЖ-де файлдық бүркеменің және бүркемелеу параметрлерінің мөлшерін айқын түрде басқаруға болмайды. Win95/98 ОЖ-де бұл мүмкіндік бар, бірак тек қана нақтылы бүркемеге арналған жады мөлшері және буфер молшерін көрсетуге болады. MS DOS операциялық жүйесі жұмыс жасағанда компьютерді кез келген уақытта өшіруге болады, ойткені бұл жүйеде буферлеу жоқ. . UNIX және Windows операциялық жүйелерінде жұмыс уакытында машинені өшіруге болмайды, себебі бұл жағдайда ақпараттың жойылуы мүмкін. Буферлеу деңгейі жүйенің реалды тиімділігін аныктайды.
Бұдан басқа ОЖ бірнеше параллель орындалып жаткан есептердің сұраныстарын орындалуына байланысты бастиектін деректерді оқуга/жазуға жылжытуын ұлгайту жұмысын атқарады. Деректерді магниттік дискіден алу уақыты, магниттік бастиектін керек цилиндрге жылжу уақытымен берілген секторды күту уақытынан қосылады. Сонымен уақыттың көбісі деректерді іздеуге кетеді.
Достарыңызбен бөлісу: |