10.3.8. СИГНАЛДАРДЫ ЖОҒАЛТУ
Берілген тарауда қарастырылған сигналдар «сенімсіз сигналдар»
деген атауға ие болады. Бұлай аталуының себебі, бұл сигналдардың
қабылдаушы-процеске жеткізілуіне және оларды процеспен өңделуіне
кепілдік жоқ. Олардың негізгі себебі, сигнал келіп түскеннен кейін
өңдеуші-функциясының мекенжайына сәйкес келетін өңдеуші-кестелер
жолдары беріледі, сондай-ақ бір уақытта бірнеше бірдей сигналдардың
келуі кезінде процесс тек біреуін өңдейді. Олардың себебін анықтау
үшін сигналдарды өңдеу кестесінің құрылымын және процеске
сигналдың түсуін қарастырамыз.
Сигналды өңдеушілердің кестесі — UNIX-жүйелерінде жасалған
абстрактілі құрылым екі жеке алаптардан тұрады: сигналдық
жалаушалар алабы және сигналдардың ерекшеліктерін өңдеу алабы
(10.4-сурет) [5].
203
Сигналдық жалаушылардың алабы процеске сәйкес келетін процестер
кестесінің жолында сақталады, сигнал ерекшеліктерін өңдеуші алабы
— процестің U-аумағында деп аталады, процестің жұмысы кезінде
қолданылатын және қалыптасатын ақпараттарды құрайды. Әр сигнал
бір типтің сигналына сәйкес келеді. Процеске сигнал жіберілген кезде,
ядро сәйкес келетін жалаушаны оның процестер кестесінің жолына
қояды.
10.4-сурет. Сигналдар өңдеушілер кестесінің құрылымы
Егер қабылдаушы – процесс күту жағдайында орналасса, ядро
процесті белсенді жағдайға көшіреді және процестерді орындалу
кезегіне қояды. Егер қабылдаушы-процесс белсенді болса, онда ядро
орнатылған сигналдық жалаушасына сәйкес келетін сигналдар
ерекшелігін өңдеу алабы элементінің мәнін оқи алады. Егер алап
элементінің мәні нөлге тең болса процесс әдеттегідей өңделуде
орындалады. Егер алап элементі бірді құраса сигнал еленбей қалады.
Массив элементінің кез келген басқа мәні сигнал өңдеуші-
функциясының мекен-жайы ретінде қолданылады. Соңғы жағдайда
ядро басқаруды қабылдаушы-процестің ішіндегі өңдеуші-функциясына
жібереді. Басқаруды өңдеуші-функцияға жіберместен бұрын ядро
сигналдық жалаушаны алып тастайды және нөлдік мәнді сәйкес келетін
сигналдарды өңдеуші алабының элементіне жазып алады. Осылайша,
бірнеше бірдей сигналдарды сатылы түрде жіберсе қалғандары үшін
әдеттегідей өңдеуші шақырылатын болады.
Бұдан бұрын айтылғандай, барлық тізбектеліп түсуші сигналдарды
дұрыс өңдеу үшін ерекшеліктерді өңдеу алабының элементіне сәйкес
өңдеуші – функциясының мекенжайын қалпына келтіру керек.
204
10.5- сурет. Әр түрлі уақыт сәтінде қабылдануы кезіндегі сигналға
реакция
Дегенмен, процесс барлық сигналдарды өңдейді деген кепілдік
беруге болмайды. Өңдеуші-функцияны шақыру сәтінен, өңдеу
ерекшеліктері алабында мекенжайын қалпына келтіру моментіне
дейінгі уақыт интервалында сигналды қабылдау кезінде (бұл интервал
көп емес, бірақ нөлге тең ұзақтықта емес) процесс өңдеуді әдеттегідей
орындайды.
Егер процесс ерекшеліктерді өңдеу алабында мекенжайды қалпына
келтіру уақытында сигнал қабылдаса (қалпына келтіру процесі, сол
сияқты көп уақытты алады), онда жарысатын жағдай туындайды — қай
өңдеушінің шақырылатыны белгісіз: әдеттегідей өңдеуші немесе
қалпына келтірілген пайдаланушының өңдеушісі (10.5-сурет).
Бұл ерекшеліктердің бәрі аз уақыт аралығында жіберілетін
сигналдарды қабылдаушы қосымшаны әзірлегенде есепке алынады.
Бұл тарауда қаралған сенімсіз сигналдардың кемшіліктерін болдырмас
үшін UNIX-жүйесінде сенімді сигналдар механизмі пайда болады,
қабылдаушы- процестермен сигналдарды өңдеу және жеткізу
кепілдендірілген. Бұл механизмін қарастыру өзінің көлемінің
шектеуінен берілген оқулықтың шегінен шығады онымен [5] және [16]
оқулықпен танысуға болады.
|