2.1 Linux операциялық жүйесінде үдерістерді басқару
Процесс дегеніміз жүйеде ресурстарды басқару және пайдалану бөлімі үшін қызмет етеді.Әр уақытта, біз бағдарламаны іске қосқан сайын, процесті бастаймыз.
Процесс - қазіргі уақытта орындалатын бағдарлама немесе оның ағындары. Әрбір процесс бір пайдаланушылардың атынан орындалады. Жүйе жүктелгенде басталған процестер,әдетте root немесе nobody пайдаланушы атынан орындалады.
Әрбір пайдаланушы іске қосылған процестердің әрекетін басқара алады. Бұл жағдайда root пайдаланушы оның атынан жұмыс істейтін барлық процестерді және операциялық жүйенің басқа пайдаланушылары жасаған процестерді басқара алады. Процесті басқару утилиттердің көмегімен жүзеге асырылады сонымен қатар кейбір командалық қабықша командаларының көмегімен (shell).
Жүйедегі әрбір процесс бірегей санға ие-процесті сәйкестендіру номері
(Process Identification, PID).Бұл нөмір операциялық жүйенің ядросы, сондай-ақ кейбір процестерді басқару үшін пайдаланылады.
Процесс – бұл программалық кодтың және ЭЕМ жадына жүктелген деректердің жиынтығы туралы түсінік. Процесс бұл іске қосылмаған программа (қосымша) немесе команда, себебі қосымша тек бірнеше процесстерді бір уақытта құра алады. Процесс коды дәл сол уақытты орындалуы шарт емес, себебі процесс ұйқы жағдайында болуы мүмкін. Бұл жағдайда мұндай процесс кодының орындалуы тоқтатылады.
Процесстің барлығы 3 жағдайы болады:
Жұмыс кезіндегі
Ұйқыдағы
Зомби
Жұмыс кезіндегі процесс – сол берілген уақытта мұндай процесс коды орындалады.
Ұйқыдағы процесс – сол берілген уақытта коды қайсыбір оқиға орындалмайынша процесс жүзеге аспайды (клавиатурада батырмалар басылғанша, желіден деректер түскенше және т.б.)
Зомби -процесс –процесстің өзі жоқ, оның коды мен деректері оперативті жадысынан алынған, бірақ процесс кестелеріндегі жазбалар сол немесе басқа себептер бойынша қалады.
Жүйедегі әр процесске сандық идентификаторлар бекітіледі (жеке нөмірлер), олар 1 –ден 65535 –ке дейінгі диапазонда болады (PID – Process Identifier) және туыстық процесс идентификаторлары (PPID – Parent Process Identifier) болады. PID әр түрлі қарау құралдары мен процесстерді басқаруды қолдану арқылы операциялық жүйедегі процесстерді адреске жібере алатын процесс аты болып табылады. PPID қомақты дәрежеде қасиеттері мен мүмкіндіктерін анықтайтын процесстер арасындағы туыстық қатынастарды анықтайды. Программа жұмысына арналған басқа параметрлер “ процесс айналасы” деп аталады. Сондай параметрлердің бірі – басқаратын терминал – барлығы деп аталады (daemons). Қолданушы іске қосқан мұндай процесстер өз жұмысын сеанс соңында аяқтамайды, керісінше жұмысын жалғастырады, себебі олар ағымдағы сеанспен ешқандай байланысы жоқ және автоматты түрде аяқталуы мүмкін. Ереже бойынша демондар арқылы серверлік қызметтер жүзеге асырылады, мысалы осылай баспаға шығару сервері cupsd демон – процесс арқылы жүзеге асырылады, ал журналдау сервері– syslogd арқылы.ps командасы.Linux –те процесстердің тізімін қарау үшін ps командасы қолданылады.ps [PID] options – процестер тізімін қарау. ps параметрсіз командасы демондардан басқа ағымдағы сессия кезінде іске қосылған процесстердің бәрін көрсетеді.Option келесі мәндердің бірін немесе олардың комбинацияларын қабылдауы мүмкін:-A немесе -e –барлық процесстерді көрсетеді,-f –алфавит бойынша сұрыптайды,-w – процесстер сипаттаудың толық жолдарын көрсету.Егер олар экран ұзындығынан асып кетсе, онда келесі жолға көшіріледі. дерлік процесстерді қамтиды. Нақты бір терминалға арналмағн процесстер “демондар”процесстердің рұқсат құқықтары. Нақты және эффективті идентификаторлар. SUID және SGID биттары.Linux ОЖ-дегі процесстер қолданушы ие болатын құқықтарға ие және сол қолданушы атынан процесс қосылады. Негізінде операциялық жүйе жұмыс жасап жатырған қолданушыныны оның атынан жіберілген процесстер жиынтығы ретінде қабылдайды. Себебі қолданушының сеансының өзі қолданушы атынан командалық қабықшада ашылады.қолданушының файлға рұқсат құқығы ” туралы айтқанда, ол “қолданушы атынан жіберілген процесстердің файлға рұқсат құқығы ” дегенді білдіреді. Процессті іске жіберген қолданушы атын анықтау үшін операциялық жүйе процесске арналатын қолданушы мен топтың шынайы идентификаторларын қолданады. Бірақ бұл идентификаторлар рұқсат құқықтарын анықтау кезінде шешуші рөл атқармайды. Ол үшін әр процессте идентификаторлардың басқа тобы – эффективті тобы бар. Ереже бойынша процесстердің шынайы және эффективті идентификаторлары бірдей, бірақ айырмашылықтары да жоқ емес. Мысалы, passwd утилитінің жұмысы үшін суперқолданушының идентификаторын қолдану қажет, себебі тек суперқолданушы парольдер файлына жзуына рұқсаты бар. Бұл жағдайда процесстердің эффективті идентификаторлары шынайылардани айырмашылығы бар болады. Әр файлдың тағы бір басқа рұқсат құқығы жиынтығы бар – SUID жне SGID биттері. Бұл биттер программаны қосу кезінде оған қожайынның және топ-қожайынының эффективті идентификаторларын меншіктеуге және сәйкесінше басқа қолданушының рұқсат құқығы арқылы процесс орындауға мүмкіндік береді. Passwd файлы root қолданушысына қатысты және оның SUID бит орнатылғандықтан, іске қосу кезінде passwd процессі root қолданушысының құқықтарына ие болады. Chmod программасы арқылы SGID және SUID биттері орнатылады:chmod u+s filename – SUID битінің орнатылуы .chmod u+s filename – SGID битінің орнатылуы .Абсолютті режимде бұл битерді орнату үшін оларды сәйкесінше SUID, SGID, Sticky bit үш бит түрінде көрсетуге болады.Қажетті құқықтарды көрсетуден кейін арнайы биттерді орнату үшін санның басына цифр енгізу керек.
Процесстерді басқару. Сигналдар.Жүйедегі барлық процесстердің үлкеніне init процессі жатады. Оның PID әрқашан 1, PPID – 0. Процесстердің барлық кестелерін init процессі түбірі болатын ағаш ретінде қарастыруға болады. Бұл процесс ядро бөлігі болмаса да, бірақ жүйеде өте өте маңызды рөл атқарады, ол туралы сіздермен 16-шы сабақта талқылайтын боламыз. Аттары квадрат жақшаға алынған процесстер, мысалы “[keventd]” – бұл ядро процесстері. Бұл процесстер жүйе жұмысын басқарады, дәл айтқанда оның жады менеджері, процессор уақытының жоспарлаушысы, ішкі құрылғылар менеджерлері және т.б. сияқты бөліктерін басқарады.Қалған процесстер командалық жол арқылы немесе жүйені инициализациялау кезінде іске қосылған қолданушылық болып табылады. Әр процесс өмірі келесі фазалар арқылы көрсетіледі:
Процессті құру – бұл этапта жаңа процесс құратын процесс көшірмесі жасалады. Мысалы, сіз интерпретатордан орындалуға ls командасын жібердіңіз. Командалық интерпретатор өзінің толық көшірмесін жасайды. Процесс кодының жүктелуі және іске қосылуға дайындық – бірінші этапта құрылған көшірме орындауға қажетті есеп кодымен алмастырылады және оның айналасы құрылады – керекті айнымалылар орнатылады және т.б.
Процестерді орындау.Зомби жағдайы – бұл этапта процесс орындалуы аяқталады, оның коды жадыдан алынады, айналасы жойылады, бірақ жазба процессор кестесінде қала береді.Процесстің өлуі – барлық аяқтайтын стадиялардан кейін жазба процессор кестесінен жойылады – процесс өз жұмысын аяқтайды.Процесс жұмысы кезінде ядро жағдайын қадағалайды және қолайсыз жағдайлар туғанда оған жіберген сигналдарды жіберу арқылы процессті басқарады. Процесс үнсіздік бойынша әрекетті қодануы мүмкін немесе егер процессте сигнал өңдеушісі болса, онда ол сигналды елемеуі немесе алып кетуі мүмкін. SIGKILL және SIGSTOP сигналдарында алып кетуге, елемеуге мүмкіндік жоқ.Үнсіздік бойынша бірнеше әрекеттерді жасауға болады:елемеу – сигнал алынғанына байланысты жұмысты жалғастару.аяқтау – процесс жұмысын аяқтау.аяқтау + core – процесс жұмысын аяқтау және процесс жадысының образын қамтитын core аты бар ағымдағы каталогтағы файлды құру (код және ақпараттар).тоқтату – процесс орындалуын тоқтату, бірақ оның жұмысын тоқтатпай және жадыдан кодты жүктемеу арқылы.Жүйеде орын алатын біраз сигналдардың тізімі:
SIGABRT- егер процесс abort()жүйелік шақыруын жасаса. сигнал жіберіледі.
SIGCHLD -Ұрпағы аяқталған кезде аталық процесске жібрілетін сигнал.
SIGSYS-Сигнал ядро арқылы жол берілмейтін жүйелік шақыруды жүзеге асырған кезде жіберіледі, тағы басқалары.Процесстер өміріндегі маңызды рөлді жоспарлаушы орындайды – ол жүйенің көп тапсырмалығына жауапты бір ядро бөлігі. Себебі уақыттың бір өлшемінде бір процессорда тек бір тапсырма орындалуы мүмкін. Сондықтан жоспарлаушы ғана процесстердің қайсысы бірінші, қайсысы екінші болып орындалатынын анықтайды. Ол үшін әр процессте приоритет деп аталатын тағы бір параметр бар. Процесстердің приоритетін қарау үшін -l параметрлі (long – кеңейтілген шығару) бізге таныс ps командасын қолданған жөн.
Достарыңызбен бөлісу: |