Білім беру бағдарламасы Инновациялық технологиялар факультеті «Ақпараттық технологиялар және қауіпсіздік» кафедрасы 2023 Алғысөз



бет34/107
Дата19.12.2023
өлшемі0.83 Mb.
#487093
түріБілім беру бағдарламасы
1   ...   30   31   32   33   34   35   36   37   ...   107
сессия ответы

Ерекшеліктерді құрылымдық өңдеу.

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


Ерекшеліктерді құрылымдық өңдеу (ағылш. SEH-Structured Exception Handling) - Microsoft Windows операциялық жүйесіндегі бағдарламалық және аппараттық ерекшеліктерді өңдеу механизмі, бағдарламашыларға ерекшеліктерді өңдеуді бақылауға мүмкіндік береді, сонымен қатар жөндеу құралы болып табылады
Механизмді Microsoft тек компилятор деңгейінде стандартты емес __try, __except және __finally синтаксистік конструкцияларын енгізу арқылы қолдайды. __Try кілт сөзі кодтың бір немесе бірнеше __except блоктарымен өңделетін бөлігін бөлектеу үшін қолданылады. __Finally блогындағы Код әрқашан және басқа __try және __except блоктарынан тәуелсіз орындалады[2].
C және C тілдерінде қолдану мысалы++
__try {
// қорғалған код,
// ол SEH жақтауына сәйкес келеді
}
__except (ерекшелік сүзгісі) {
// ерекшеліктерді өңдеуші
}
__finally {
// кез келген жағдайда орындалатын код
}
Ерекшелік сүзгісі үш тұрақты өрнекті қайтаратын әдеттегі функциялар болуы мүмкін:
EXCEPTION_EXECUTE_HANDLER-берілген өңдеушінің ерекшелікті өңдеу мүмкіндігін көрсетеді. Бұл мәнді алған кезде Операциялық жүйе тиісті алып тастау өңдегіштерін іздеуді тоқтатады және стек жылжыту арқылы басқаруды EXCEPTION_EXECUTE_HANDLER мәнін қайтарған біріншісіне береді
EXCEPTION_CONTINUE_EXECUTION-қатені түзетуді көрсетеді. Жүйе басқаруды эксклюзивті шақырған нұсқаулыққа қайта жібереді, өйткені бұл жолы ол ерекшелік тудырмайды деп болжануда.[4]
EXCEPTION_CONTINUE_SEARCH-сәйкес өңдегішті жоғарыда стек бойынша табуға болатындығын көрсетеді. Сонымен қатар, бұл мәнді қайтару қатенің өңделмегендігінің дәлелі болуы мүмкін.[3]
Қолданылатын құрылымдар мен механизмдер
Кез келген процестің әрбір ағыны осы ағын туралы ақпаратты қамтитын Thread Information Block деректер құрылымына көрсеткішті сақтау үшін fs регистрін (16 биттік селектор) пайдаланады. Бұл құрылым байланыстырылған Тізімдегі соңғы тіркелген _exception_registration_record құрылымына көрсеткішті сақтайды, оның ішінде ерекшелік өңдегішіне көрсеткіш және алдыңғы _exception_registration_record жазбасына көрсеткіш бар.[5] ағынды құру кезінде амалдық жүйе kernel32 функциясы шақырған әдепкі ерекшелік өңдегішін қосады!UnhandledExceptionFilter.





  1. Достарыңызбен бөлісу:
1   ...   30   31   32   33   34   35   36   37   ...   107




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет