2.4 Үдерістерді жоспарлау
Үдерістің барлық өмір сүрген уақыты ішінде оның ағындарының орындалуы бірнеше рет үзіліп, бірнеше рет жалғасуы мүмкін. Бір ағынды орындаудан екінші ағынға өткен жоспарлаумен дипетчеризацияның арқасында жүргізіледі. Ағымдағы белсенді ағынның жұмысын қай сәтте тоқтату керек және орындалу мүмкіндігін қай ағынға беру керектігін анықтау жұмыстары жоспарлау деп аталады. Ағындарды жоспарлау үдерістермен ағындардың сипаттамаларында жатқан ақпараттардың негізінде жүргізіледі. Жобалау барысында ағындардың басымдылығы, олардың кезекте күту уақыты, жинақталған орындалу уақыты, енгізу-шығаруға жүгіну қарқындылығы (интенсивность обращений к вводу-выводу) және тағы басқа факторлар есепке алынады. ОЖ ағындар бір үдеріске ме әлде бірнеше үдеріске тиесілі ме оған қарамастан ағындардың орындалуын жоспарлайды. Мысалы үшін, ОЖ қандай да бір үдерістің ағынын орындап болғаннан соң, орындауға сол үдерістің басқа бір ағынын таңдап ала алады немесе басқа үдерістің ағынын орындауға тағайындауы мүмкін. Келтірілген тапсырмамаларды шешетін ағындарды жоспарлаудың түрлі алгоритмдері бар. Жоспарлау алгоритмдері түрлі мақсаттарды көздейді және мультибағдарламалаудың түрлі сапасын қамтамасыз етеді. Көптеген әмбебап (түрлі қажеттіліктерге арналған) ОЖ жоспарлау динамикалық түрде жүргізіледі, яғни жүйе жұмыс жасап тұрған мезетте ағымдағы жағдайды талдай келе шешім қабылданады. ОЖ белгісіздік (анықталмағандық) жағдайында жұмыс жасайды – ағындармен үдерістер кездейсоқ мезетте пайда болады және солай болжалмай (алдын ала белгісіз мезетте) аяқталады. Бұл сияқты белгісіздік шартында (жағдайында) тапсырмалардың орындалуының қандай да бір тиімді ретін табу үшін ОЖ бірталай (бірқатар, едәуір) ресурстар қажет болады. Жоспарлаудың тағы бір түрі – статикалық – бұл түрі бір мезетте орындалатын тапсырмалардың барлық жиыны алдын ала анықталған мамандандырылған (арнайы) жүйелерде қолданылады, мысалы, нақты уақыт жүйелерінде. Жоспарлаушы статикалық деп аталады, егер ол жоспарлау бойынша шешімдерді жүйе жұмыс жасап тұрғанда емес, алдын ала қабылдап қойған болса. Статикалық жоспарлаушының жұмыс нәтижесі процессор қай ағынға/үдеріске қашан және қанша уақытқа берілуі керектігі көрсетілген кесте түрінде болады, және оны жұмыс кестесі деп атайды. Диспетчерлендіру дегеніміз жоспарлаудың (динамикалық немесе статистикалық) нәтижесінде табылған шешімді жүзеге асыру, яғни процессорды бір ағыннан келесі ағынға ауыстыру. Ағын жұмысының орындалуын тоқтату үшін ОЖ оның контекстін есте сақтап алады, ол бұл ақпаратты осы ағынның орындалуын қалпына келтіру үшін пайдаланады. Диспетчерлендіру мыналарға келіп тіреледі: - ауыстыру қажетті ағымдағы ағынның контекстін сақтауға; - жаңа ағынның контекстін жүктеуге; - жаңа ағынды орындауға қосу. Контекстерді ауыстыру операциясы есептеу техникасының өнімділігіне анық әсер етеді, сондықтанда ОЖ ағындарды диспетчерлендіруді процессордың аппараттық құралдармен бірлесе отырып жүргізеді. Ағын контекстісінің бұл үдерістің барлық ағындарына ортақ бөлігі (ашық файлдарға сілтемелер) және тек осы ағынның өзіне ғана тиесілі бөлігі (регистрдің мазмұны, командалар есептеуіші, процессор режимі) бар. Үдерістерді жоспарлауға келесі тапсырмалар кіреді: - орындалатын үдерісті ауыстыру мезетін анықтау; - дайын үдерістердің кезегінен орындауға үдерісті таңдау; - «ескі» және «жаңа» үдерістің контекстісін ауыстыру. Алғашқы екі тапсырма бағдарламалық құралдармен, ал соңғысы көбірек аппараттық құралдармен шешіледі. Жоғарыда аталған тапсырмаларды түрлі жолдармен шешетін, әртүрлі мақсаттарды көздейтін және мультибағдарламалаудың түрлі сапасын қамтамасыз ететін үдерістерді жоспарлаудың түрлі алгоритмдері бар. Бұл көптеген алгоритмдердің арасынан жиі кездесетін алгоритмдердің екі тобын қарастырайық: кванттаудың негізіндегі алгоритмдер және басымдылықтар негізіндегі алгоритмдер. Кванттау негізіндегі алгоритмдерге сәйкес, белсенді үдеріс ауыстыру жүргізіледі, егер, - үдеріс аяқталса және жүйеден кетсе; - қателік орын алса; - үдеріс КҮТУ күйіне өтсе; - бұл үдеріске бөлінген процессорлық уақыт кванты таусылса. Өз квантын тауысқан үдеріс ДАЙЫНДЫҚ күйіне ауысады және өзіне жаңа процессорлық уақыт кванты берілгенін тосады, ал орындалуға дайын үдерістер кезегінен қандай да бір таңдау ережесіне сәйкес жаңа үдеріс таңдап алынады. Осылай ешбір үдеріс процессорды ұзақ ұстап тұрмайды, сондықтанда уақытты бөлу жүйелерінде кванттау кең қолданыс алуда. Үдерістерге бөлінген кванттар барлық үдерістер үшін бірдей немесе әртүрлі болады. Бір үдеріске бөлінген квант тиянақталған көлемде болуы мүмкін немесе үдерістің өмір сүруінің әр периодында өзгерулері мүмкін. өздеріне бөлінген квантты толық пайдаланбаған (мысалы, енгізу-шығару операцияларына кетуіне байланысты) үдерістер келесі қызмет көрсетуде басымдылық түрінде компенсация (өтеу, өтемақы) алуы да, алмауы да мүмкін. Алгоритмдердің келесі тобы үдерістің «басымдылығы» түсінігін пайдаланады. Басымдылық – үдерістің есептеу машинасының ресурстарын қолданудағы басымдылық (артықшылық) деңгейін сипаттайтын сан, жекелей алғанда: процессорлық уақытты, басымдылық жоғары болған сайын артықшылық (басымшылдық) жоғары болады. Басымдылық бүтін немесе бөлшек, оң немесе теріс мән арқылы көрсетіледі. Үдерістің басымшылығы жоғары болған сайын, ол кезекте соғұрлұм аз уақыт өткізеді. Басымдылық жұмыстың маңыздылығына немесе енгізілген ақыға байланысты директивті түрде жүйе әкімдерімен тағайындалады, я болмаса қандайда бір ережелерге сәйкес ОЖ өзі есептеуі мүмкін үдерістің бүкіл өмірі бойында тиянақталған (тұрақты) болып қалуы немесе қандайда бір заңдылыққа сәйкес уақыт бойында өзгеріп тұруы мүмкін. Соңғы жағдайда басымдылық динамикалық деп аталады. Басым алгоритмдердің екі түрі бар: салыстырмалы басымдылықтарды пайдаланатын алгоритмдер және абсолюттік басымдылықтарды пайдаланатын алгоритмдер. Екі жағдайда да кезектегі дайын үдерістердің ішінен орындауға үдерісті таңдау бірдей жүргізіледі: ең жоғарғы басымдылығы бар үдеріс таңдап алынады. Белсенді үдерісті алмастыру мезетін анықтау мәселесі де әртүрлі шешіледі. Салыстырмалы басымдылықты жүйелерде белсенді үдеріс өзі КҮТУ күйіне өтіп, процессорды өзі босатқанға дейін орындалады (немесе қандайда бір қателік орын алады, немесе үдеріс аяқталады). Абсолюттік басымдылықты жүйелерде белсенді үдерістің орындалуы тағы бір шарт орындалғанда үзіледі: егер дайын үдерістер кезегінде басымдылығы белсенді үдерістің басымдылығынан жоғарырақ үдеріс пайда болған жағдайда. Бұл жағдайда үзілген үдеріс дайындық күйіне ауысады. Көптеген ОЖ жоспарлау алгоритмдері кванттауды да, басымдылықтарды да қолданылып тұрғызылған. Мысалы, жоспарлаудың негізінде кванттау жатады, бірақ квант көлемі және дайындардың арасынан үдерісті таңдау үдерістердің басымдылықтары бойынша жүргізіледі. Барлық көптеген жоспарлау алгоритмдерін бір–бірінен түбегейлі әртүрлі (бөлек) 2 класқа бөлуге болады: ығыстыратын және ығыстырмайтын. - ығыстырмайтын (non-preemptive) алгоритмдерде белсенді ағын өз қалауымен басқаруды ОЖ ол кезектен басқа орындалуға дайын ағынды таңдап алуға бергенге дейін белсенсі ағынға орындалып тұра беру мүмкіншілігі берілген. - Ығыстыратын (preemptive) алгоритмдер –ағындарды жоспарлаудың бұл тәсілінде процессорды бір ағынды орындаудан келесі ағынды орындауға ауыстыру белсенді тапсырмамен емес, ОЖ қабылданады. Алгоритмдердің екі типінің арасындағы басты айырмашылық ағындарды жоспарлау механизмінің орталықтандырылу деңгейінде. Ығыстыратын алгоритмдер толығымен ОЖ шоғырланған және бағдарламалаушы өз бағдарламасының басқа тапсырмалармен қатар орындалатынына алаңсыз өз бағдарламасын жаза береді. Бұл жерде ОЖ белсенді ағынды орындаудан алып тастау уақытын өзі анықтайды, оның контекстін есте сақтап, кезектегі дайындардың келесісін таңдап, оның контекстісін жүктей отыра жаңа ағынды орындауға іске қосады. Ығыстармайтын мультибағдарламалауда жоспарлау механизмі ОЖ мен қолданбалы бағдарламалар арасында үлестірілген. Қолданбалы бағдарлама ОЖ басқаруды алғаннан кейін қажет деп тапқан уақытында қандайда бір жүйелік шақырудың көмегімен басқаруды қайтадан ОЖ береді. ОЖ ағындардың кезегін құрайды және орындауға келесі ағынды қандайда бір ережеге (мысалы, басымдылықты ескере отырып) сәйкес таңдап алады. Бағдарламаларды жоғарғы өнімді орындауға бағдарланған барлық дерлік заманауи ОЖ (UNIX, Windows NT/2000, OS/2, VAX/VMS) ағындарды (үдерістерді) жоспарлаудың ығыстыратын алгоритмі жүзеге асырылған.
Сурет 2 –Үдерістерді жоспарлау
Достарыңызбен бөлісу: |