Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_SPO_kaz_1.docx
Скачиваний:
70
Добавлен:
18.02.2016
Размер:
1.35 Mб
Скачать

Тақырып 3. Операциялық жүйе үзілістерін өңдеу

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

Кілттік сөздер: үзілістер механизмі, үзілістер диспетчері , модуль, кодтық сегмент, режим, аппараттық платформа

Дәріс жоспары (2 сағат)

  1. Бағдарламалық үзілістер және эмуляторлардың құрылысы.

  2. Орталық процессормен орындалатын амалдар құрамын кеңейту үшін бағдарламалық үзілістер командаларын пайдалану.

  3. Аппараттық үзілістер. Нақты уақыт операциялық жүйелерін үзілістердің дамыған жүйелерін құрастыру.

  4. X11 және Photon графикалық ішкі жүйелері. Қашықталған сервермен жұмыс мүмкіндіктері. Графикалық ішкі жүйелерде қосымшаларды құрастыру құралдары.

  5. Үзілістерді өңдеу кезектілігі. Үзілістерді өңдеу бағдарламаларының Fork-деңгейі.

Үзілістер механизмі

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

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

  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) ,үзілістер кейбір бағдарламаның қандай да бір инструкциясын орындау барысында авариалық жағдай пайда болғанда синхромды орындалады.Ішкі үзілістер мысалдары;о-ге бөлу жадты қорғау қателері, жоқ адрес бойынша сілтеу привелигияланған инструкцияны қолданушы режимінде орындауға тырысу және тағы сол сияқты

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]