Сабақ жоспары( 1 сағат) Процестер және тапсырмалар



Дата15.04.2020
өлшемі243,5 Kb.
9-ПРАКТИКАЛЫҚ ЖҰМЫС. Процестер және тапсырмалар

Практикалық /семинар сабақ жоспары( 1 сағат)

  1. Процестер және тапсырмалар

Мақсаты: Процесс түсінігімен танысу. Тапсырмаларды басқаруды және процестермен сигналдауды үйрену



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

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

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

Процесстерді ps стандартты командамен зерттеуге болады. Өлшемсіз берілген, ол сол мезеттегі қабықша және туылған процесстер туралы ақпаратты шығарады.

Frame1
Қортындыда төрт баған бар:

  • PID бұл жүйе үшін тамаша прцесстің идентификаторы (ол процесстің туылуы кезінде орнатылады және сонына дейін өзгеріссіз сақталады)

  • TTY процесс жүктелген терминал,

  • TIME процесстің уақыты( процессордың уақыты, оның күйін «түсіру» мезетіндегі прцесстің алуы),

  • CMD командасының, берілуі процесстің туылуына әкелді.

Берілген жағдайда екі процесс туралы ақпарат алынған олар: bash қабықшасы және ps сыртқы командасы.

Ps командасы - А жүйедегі барлық процесстер туралы ақпаратты береді (жай қолданушыға басқа процесстер туралы ақпарат көрінісі қауіпсіздік ойында шектеулі болуы мүмкін ).

Көрнекілік үшін "-А" кілтімен бірге қортындыға «ұзын» формат енгізетін "-l" ("эль") кілтін және CMD өрісіндегі процесстер арасындағы шегіну қатынастарды сипаттайтын "-Н" кілтін қолдануға болады.

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

Стандарт болып он бес параметр анықталған, нақты жүйе үшін оларға параметрлер қосыла алады.

UID - бұл процессор иесінің – қолданушы идентификаторы."-l" кілтін қолданғанда идентификатор сан күйінде шығарылады, "-w" кілтінде сандық идентификаторға символдық идентификатор сәйкес келеді. 0 сандық идентификатор әрқашан басты қолданушыға "root" сәйкес келеді.

UID көбіне процесстің алғашқысынан мұраға қалып отырады. Тіркелу программасымен жүктелетін, прграммалар тіркелуідің өзінің UID- ді – 0 болса да, олардың UID- ді программамен жүктелетін индикаторға сәйкес болатын ескертуді қабықша-процесстері құрайды. Тағы бір ескерту – бағдарлама жүктелгендегі файлға SUID битімен орнатылған процесстер. Олардың UID-і олардан туған процестермен сәйкес келмейді, орындалатын файлдың иесіне сәйкес келеді. SUID (және оған ұқсас GUID биті) –бұл ОЖ дәрежесінің жүйені қараудың мықты құрал-жабдығы, өйткені ол қолданушыға өзінің дәрежесінен де жоғары процестерді жүктей алады (сонымен қатар негізгі қолданушы дәрежесін де). SUID битін негізгі қолданушы ғана орната алады. Ұқыпты құрастырылған және басқарылтын жүйеде SUID (және/немесе GUID) битімен орнатылған программалар саны минималды болады.

PID – бұл процесстің керемет идентификаторы,aл PPID – оның ата-анасының идентификаторы.«Бұтақтағы» "-Н" құрастырылған кілтінің орналасуы және PPID әртүрлі процесстері арасында сәйкестіктер бар.

TIME – процесс уақыты – сол процесстің бар болу уақыты кезіндегі орындауға жұмсалған процессорлық уақыттың біріккен саны.



S - процесстің күйі. Жүктелген процесс төрт стандартты қалыпттың біреуінде бола алады: "R" (орындаушы), "S" (енгізу-шығаруды күруші), "Т" (тоқтатылған), "Z" ( орындалған бірақ басты процесске хабар беріп үлгірмеген, "зомбирленген").
Тапсырма №1

Тапсырмаларды басқару және процесстер сигнализациясы

Стандартты қабықша және ашық ОЖ ортасында үзіліссіз процессті жасау үшін қабықшаның меншігіндегі экземплярға үзіліссіз циклді беретін команданы енгіземіз (while :; do :; done):

[user@localhost user]$ (while :; do :; done)

Егер барлығы дұрыс болса, онда сценарийөздігінен енді ешқашан тоқтамайды (жүйені қайта жүктегенше). Қабықшаның шақыруы да болмайды, сондықтан жүйеден шығу мүмкіндігі де болмайды.

Бұл жағдайды шешуде Ctrl+C клавиатуралық комбинациясы көмектеседі. Она не отображается на экране Ол экранды көрсетілмейді, бірақ оны басқаннан кейін қабықша шақырады және ps командасыың көмегімен ps қабықшасынан басқа процесстер, осы қабықшаның ішінде орындалмайтындығына көзімізді жеткіземіз.



Frame2
Ctrl+C орындалып жатқан процесске дұрыс аяқталуды жіберу үшін терминал драйверін оятады (бұл жағдайда бағынышты қабықшаға ).

Ctrl+Z терминал драйверін орындалып жатқан процесске басқа – кідіріс сигналын жіберуін жасатады:


Frame3

Ctrl+Zбасқанан кейін қабықша тік жақша санынан тұратын «тоқтатылды» деген сөз және басында енгізілген командалар хабарламасы шығады.



Тік жақшалардағы сандар – тапсырма нөмірі. Тапсырма болып кез келген орындала бастаған команда аталады.Сәйкес процесстің күйі «Т» әрпімен белгіленген ( "S" баған, енгізуде ps -l (эль)), ол процесс тоқталғанын көрсетеді. Осы процесске сәйкес тапсырма да тоқтатылған деп аталады.

Тапсырманы екі тәсілмен жаңартуға болады:

fg орындалған тапсырманы алдынғы қатарда жаңартады,

bgартқы қатарда(немесе фондық режимде).

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

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

Уақыттың кез келген мезетінде әр басқарылатын терминалдың алдынғы қатарында бір ғана тапсырма болады. Артқы қатардағы тапсырмалар шексіз бола алады.

Мысалда «цикл» сценарий жүктелген, Ctrl+Z басылуымен тоқтатылған, содан кейін fg командасымен оның орындалу алдынғы қатарда қайта жаңартылған, қайтадан тоқтатылып және содан кейін bgкомандасымен артқы қатарда қайта жаңартылған. Содан кейін шақырылу қабылданған және ps -l командасы енгізілген, сценарийдің сәйкес орындалуын көрсететін процесс bash (PID 2765) "R" ("орындалушы") күйімен.

Ctrl+C және Ctrl+Z клавиатуралар комбинациясын басу әрқашан тапсырмаға алдынғы қатар сигналын береді. kill командасы артқы қатар тапсырмасына сигнал жіберу үшін қажет. Оның процесс идентификаторының жалғыз аргументі ретінде көрсетілімі процесске «дұрыс аяқталу» сигналының жіберілуіне әкеледі (бұл Ctrl+C басылуына сәйкес артқы қатар тапсырмасы)


Frame4
kill командасының "-s" кілтімен және сигнал идентификаторымен берілуі осы кілттің параметрі ретінде процесске еркін сигнал жіберуге мүмкіндік береді.


Значение

Идентификатор

Смысл

Комментарий

0

0

(зарезервировано)




1

SIGHUP

Отключение управляющего терминала




2

SIGINT

запрос на прерывание

процессу переднего плана передается по нажатию Ctrl+C

3

SIGQUIT

запрос на выход из программы




6

SIGABRT

запрос на аварийное завершение




9

SIGKILL

запрос на безусловное завершение

не может быть перехвачен процессом

14

SIGALRM

запрос на возобновление выполнения




15

SIGTERM

запрос на нормальное завершение

умолчание команды "kill"

Іске асуы олардың мөлшерінен көп қарастырылуы мүмкін.SIGSTOP сигналы барлық жүйелерде іске асқан оның алдынғы қатар процессіне жіберілуі жетілген қапбықшалар көпшілігімен Ctrl+Z басылуымен орындалады.

SIGTERM және SIGKILL сигналдары көбіне қолданушы деңгейінде қолданылады. Олардың ерекшелігі мынада, олардың біріншісін алған кезде процесс мүмкіндігінше «таза» аяқталады: ішкі буферлердің мазмұнын файлға лақтырып оларды жабады, ал екіншісі – тез арада аяқталады. Екінші көбіне қате программаны орындаушы процессті «жою» үшін қолданылады.

Әлі күнге дейін біз сигналдарды өз құзіретімізше жіберіп келдік.

Жіберуші процесс жұмысын қабықша (сигналдардың алдынғы қатардағы процесске пернені басу арқылы) немесе kill командасы орындады. Бірақ сигналдар жіберілуі (процесстер арасындағы қатынас) кез келген процесстер арасында бола алады және жүйелік және ОЖ механизмінің қосалқы программалауында кең қолданылады. Файлдарға кіру мүмкіндігіндей ОЖ процесстеріне кіру мүмкіндігі құзіреттердің жүйелік татаратылуына негізделген.

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

Егер kill –s SIGKILL командасы жүктелген процессті аяқтай алмаса, онда жүйеде өте ауыр бұзылулар пайда болған.

Сол сияқты тағы бір жағдай программа SIGINT, SIGSTOP тым анықтап шексіз циклге кіріп кетеді.

Мұндай программаны алдынғы қатарда жүктеп, оны Ctrl+C басу арқылы аяқтау немесе Ctrl+Z арқылы кідірту мүмкін емес, қабықша алдынғы қатар процессінің аяқталуын күтетіндіктен SIGKILL–ді kill командасымен беру де мүмкін емес.

Бұл жағдайдан шығудың оңай жолы жоқ, бірақ басқа терминалда тіркеліп kill -s SIGKILL командасымен процессті «өлтіруге» болады.
Бақылау сұрақтар:


  1. «Процесс» ұғымымен не түсіндіріледі?

  2. Процесстерді қандай стандартты командамен зерттеуге болады?

  3. PID - процесстің ерекше идентификаторы, aл PPID?

  4. Ctrl+Cнемесе Ctrl+Z батырмалық комбинациялар басылуы неге алып келеді?


Келесі сабаққа тапсырма:

Тақырып бойынша презентация жасау






Достарыңызбен бөлісу:




©www.engime.org 2020
әкімшілігінің қараңыз

    Басты бет