Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операциялық жүйелер.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
835 Кб
Скачать
☆

6 Тақырып. Үзулер

Үзулер механизмі

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

Үзулерді орындаудың екі негізгі тәсілі бар:

  1. Vectored векторлық

  2. Polled Сұрау бойынша (Опрашиваемый)

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

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

Үзулер негізінде мультипрограммалау

Үзулер операциялық жүйенің басты жүргізуші күші болып табылады. Үзулер жүйесін сөндірсеңіз, АЖ-дегі «өмір» қолма-қол тоқтап қалады. Периодтық немесе кезеңдік үзулер таймерден мультипрограммадағы АЖ-ң ауысымдық процесін шақырады, ал үзулер енгізу-шығару құрылғысынан берілген ағымдарды басқарады, осылардағы есептуіш жүйе сыртқы дүниемен алмасып отырады.

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

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

Үзулер 3 топқа бөлінеді:

  1. Сыртқы

  2. Ішкі

  3. Программалық

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

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

Программалық үзулердің басқа үзулерден айырмашылығы – программалық үзулер ақиқат болмайды. Программалық үзулер – орындалуы үзуді иментациялаудық процессорлардың айрықша командаларын орындағанда пайда болады.

Үзулерге олардың маңыздылығы және жеделдігіне байланысты үстемділік беріледі. Үзулер әдетте АЖ-ң модульдерімен өңделеді. Себебі, үзу үшін орындалатын әріптер бөлінетін ресурсы басқаруға жатады. Үзулерді өңдеуші шақырылатын процессор әдетте үзулер өңдеушілері немесе үзулерге қызмет ету процессоры деп аталады.

Программалық үзулер

Арнайы нұсқаулық процессор көмегімен ішкі програмаға ауысу тәсілдерінің бірін программалық үзулер жүзеге асырады, INT секілді процессорларында Intel Pentium, Trap процессорында MotoroLa, Syscall процессорларында MIPS немесе Ticc процессорларында SPARC. Программалық үзулердің командасының орындалуы кезінде процессор іс-әрекеттің тізбектелген сыртқы, ішкі үзулердің пайда болу жұмысын өтейді, бірақ бұл программаның болжаулы нүктесі програмист орнатқан команда болады.

Қазіргі жаңа процессорлардың командалық жүйесінде программалық үзулердің әдістері бар. Программалық үзулердің жүйелік команда процесінде әдістердің пайда болу себебі, стандартты команда процедурасының орындалуын қолданумен салыстырғанда оны қолдану өте ықшамды программалық кодқа әкеледі. Бұл процессор өңдеушілері үзулерді өңдеу үшін аз көлемді ақиқат ішкі программаларды резервтаумен түсіндіріледі. Программалық командасындағы операндтың ұзындығы керекті ішкі программаға ауысу командасынан кішілеу болады. Call комндасын қолдану үшін 1 байттық емес, 2 немесе 4 байттық операнд қажет. Ішкі программалық шақыру инструкцияларының орнына программалық үзулерді қолданудың тағы бір себебі, ол – привилегиоланған бір уақыттағы шақыру процедурасы қолданылатын режимнің ауысу мүмкіндігінің болуы. Көптеген процессорлар бұл прграммалық үзулердің қасиетін қолдайды.

Жүйелік шақырулар

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

Жүйелік шақыруларды жүзеге асыру үшін мынадай талаптарды қанағаттандыру қажет:

  • Привилегиоланған режимнің ауыстырылуын қамтамасыз ету

  • АЖ процедураларын жоғары жылдамдықта шақыруға ие болу

  • Мүмкіндікке қарай АЖ-де жұмыс істейтін бүкіл аппараттық платформа үшін біркелкі АЖ-ге айналдыруын қамтамасыз ету

  • Жүйелік шақыру жиынтығына жеңіл кеңейтілуін рұқсат ету

  • АЖ жағынан жүйелік шақыруларды корректілік қолдануды бақылаумен қамтамасыз ету

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

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

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

Көбінесе, АЖ жүйелік шақырулар орталықтандырылған кесте бойынша қызмет етеді, ол жүйелік шақырулар диспетчерінің бар болуына негізделген. Кез-келген жүйелік шақыруда қосымша программалық үзудің белгіленген және вектордың жалғыз(дара) номерімен орындайды. Мысалы, OЖ Linux жүйелік шақырулар үшін INT SO, h командасын қолданады, ал OЖ Windows NT-INT 2Eh. Программалық узуді орындау алдында қосымша кез-келген әдіс арқылы АЖ-ге жүйелік шақырулардың номерін тапсырады, ол жүйелік шақыруларды жүзеге асыратын АЖ процедурасының адрестер кестесіндегі индексі болып табылады. Ұштастырудың әдісі іске асыруға байланысты. Мысалы, номерді процессордың жалпы қосындысының белгіленген регистрында немесе стекпен тапсыру арқылы орналастыруға болады. Сонымен қатар, жүйелік шақырулардың аргументі кейбір тәсілмен жалғастырылады, олар регистрдің жалпы ұсынысында орналаса алады және стек немесе массив арқылы жалғасады.

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

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

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

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

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

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

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

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

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

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

Қорытынды

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

1. Сыртқы

2. Ішкі

3. Проограммалық

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

Ішкі үзулер- исключение(exception) ,үзулер кейбір програманың қандай да бір инструкциясын орындау барысында авариалық жағдай пайда болғанда синхромды орындалады.Ішкі үзулер мысалдары;о-ге бөлу жадты қорғау қателері, жоқ адрес бойынша сілтеу привелигияланған инструкцияны қолданушы режимінде орындауға тырысу және тағы сол сияқты

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

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

Негізгі әдебиет: [1-7]

Қосымша әдебиет: [8-18]