Дәрiске әдiстемелiк нұсқау
Дәрiсте берiлген материалды игеру үшiн ядродағы ағындарды іске асыру әдістерінде берiлген анықтамаларына көңiл бөліп, оларды ажырата бiлу керек. Дәрiсте берiлген негiзгi мәселелер мен сұрақтарға мән берiңiз. Берiлген терминдерге анықтама берiңiз. Ядродағы ағындарды іске асыру әдістеріне талдау жасаңыз.
5.4 Ағындар моделі
Мақсаты:
Ағындар моделімен таныстыру
Дәріске жоспар:
Ағындардардың қажеттілігі;
Ағындар моделінің түрлері.
Тақырып бойынша негізгі түсінік:
Ағындардардың қажеттілігі
Жалпы процесс моделі екі тәуелсіз концепцияға негізделген: ресурстарды топтау және бағдарламаны орындау. Кейде оларды ажырату қажет, сонда ағындар түсінігі пайда болады.
Бір жағынан, процесті туыс ресурстарды бір топқа жинау әдісі ретінде қарауға болады. Процессте бағдарлама мәтіні мен деректерді қамтыған адрестік кеңістік және басқа ресурстар бар. Ресурстарға ашық файлдар, балалық процестер, өңделмеген апаттың хабары, сигналдарды өңдегіш, тіркеу ақпараты және басқалар жатады. Ресурстарды процестерге біріктіріп басқарған оңай болады.
Екінші жағынан, процесті орындалатын командалар ағыны немесе жай ағын ретінде қарауға болады. Ағында әрекеттердің орындалу ретін бақылайтын команда санағышы бар. Оның ағымдағы айнымалылар сақталған регистрі бар. Оның процестің орындалу хаттамасын сақтаған стегі бар, онда әрбір шақырылған, бірақ қайтпаған процедураға жеке фрейм бөлінген. Ағын процестің ішінде атқарылғанмен, ағындар және процестер концепциясын ажырату керек. Процестер ресурстарды топтау үшін қолданылады, ал ағындар орталық процессорда кезекпен орындалатын объектілер ретінде қолданылады.
Ағындар концепциясы процестің моделіне тәуелсіздігі жеткілікті бірнеше бағдарламаларды бір ғана процестің ортасында бірмезгілде орындау мүмкіншілігін қосады. Бір процессте параллель жұмыс істеген бірнеше ағын бір компьютерде параллель жүрген бірнеше процестерге ұқсас болады. Бірінші жағдайда ағындар адрестік кеңістікті, ашық файлдарды және басқа ресурстарды бөледі, ал екінші жағдайда процестер жадты, дискілерді, принтерлерді және басқа физикалық құрылғыларды бірге пайдаланады. Ағындар процестердің қарапайым қасиеттеріне ие болады, сондықтан оларды кейде оңайлатылған процестер деп атайды. Көпағындылық термині бір процессте көп ағынның пайдалануын сипаттайды.
Ағындар моделінің түрлері.
Төмендегі суретте процестер мен ағынның әрекеттесуі көрсетілген.
Мұнда А және В жағдайлары көрсетілген. Осы екі жағдайда да біз үш ағынмен жұмыс істейміз:
А – әрқайсысында өзінің адрестік кеңістігі бар және жеке басқару ағыны бар үш әдеттегі процесс көрсетілген.
В – үш ағыны бар бір процесс көрсетілген, бұл ағындар бір адрестік кеңістікті бөледі.
Әртүрлі ағындар бір процессте әртүрлі процестерге қарағанда онша тәуелсіз болмайды. Барлық ағындарда бір ғана адрестік кеңістік бар. Ол бірігіп глобальды айнымалыларды пайдалануды білдіреді. Кез келген ағын адрестік кеңістіктегі жадтың кез келген ұяшығына қолжеткізуі болғандықтан, бір ағын басқа ағынның стегінен ақпаратты оқи, жаза немесе өшіре алады. Қорғау болмайды, себебі (1) ол мүмкін емес (2) ол қажет емес. Мақсаттары бір-біріне сәйкес келмейтін әртүрлі пайдаланушылар жіберген әртүрлі процестерден ағындардың айырмашылығы, олар басында бір-біріне зиянын тигізбей бірге қосылып жұмыс істеу үшін жасалады. Төменгі кестеде процестер мер ағындар қолданатын элементтер келтірілген.(3-кесте)
3-кесте. Процестер мен ағындар элементтері
Процесс элементтері
|
Ағын элементтері
|
Адрестік кеңістік
|
Команда санағышы
|
Глобальды айнымала
|
Регистрлер
|
Ашық файлдар
|
Стек
|
Балалық процестер
|
Жағдайлар
|
Бірінші бағанада процестің барлық ағындары бірігіп пайдаланатын элементтер келтірілген. Екінші бағанада әрбір ағынның жеке элементтері көрсетілген.
Бірінші бағанадағы элементтер тек процестің қасиеттері, олар ағынның қасиеттері емес. Мысалы, егер бір ағын файлды ашса, онда бұл файлды процесстегі қалған ағындар да көреді және олар ақпаратты одан оқи немесе оған жаза алатын болады. Бұл логикаға сәйкес келеді, себебі, ресурстарды басқару бірлігі болып есептелетін ағын емес, процесс. Егер әрбір ағында өзінің жеке адрестік кеңістігі, ашық файлдары, өңделмеген апат сигналдары және т.б. болса, онда ол жеке процесс болар еді. Ағындар концепциясы қандай-да бір есепті шешу үшін бірнеше ағындар өзара тығыз әрекеттесіп ресурстар жиынтығын бірге пайдаланудан тұрады.
Кез-келген әдеттегі (бір ағынды) процесс сияқты ағын бірнеше жағдайдың біреуінде бола алады: жұмыс, бұғатталған, жұмысқа дайын, аяқталған.
Жұмыс істеп тұрған ағын процессормен әрекеттеседі. Бұғатталған ағын өзін босататын қандай-да біп оқиғаны күтеді. Мысалы, пернетақтадан оқу жүйелік сұратымы орындалғанда пернетақтадан сигнал келгенше ағын бұғатталады. Ағын қандай-да бір сыртқы оқиға немесе басқа ағынмен босатылады. Жұмысқа дайын ағын өзіне кезек жеткенде жіберіледі. Ағын жағдайлары арсындағы өтулер процесс жағдайларындағы сияқты.
Төмендегі суретте көретілгендей, әрбір ағында өзінің стегі бар, ол әрбір шақырылған, бірақ басқаруды қайтармаған процедура үшін бір фрейм қамтиды. Фреймде процедураның локальды (ішкі) айнымалылары және қайту адресі болады.
Мысалы, егер X процедурасы Y процедурасын шақырса, ал ол, өз кезегінде, Z процедурасын шақырса, онда Z процедурасы жұмыс істеген уақытта стекте барлық үш X, Y, Z процедураның фреймдері болады. Әрбір ағын әртүрлі процедураларды шақыра алады және осыған сәйкес, оның әртүрлі орындалу хаттамасы болады. Сондықтан, әрбір ағында өзінің жеке стегі болуы қажет.
Көпағынды режімде процестер, әдетте, бір ағынмен жіберіледі. Бұл ағын кітапханалық процедураларды шақырып, жаңа ағынды жасай алады. Мұнда жаңа ағынды жасау үшін жіберілетін процедураның аты шақырудың параметрі болады. Жаңа ағын бұрын бар ағынның адрестік кеңістігінде жасалатын болғандықтан, жаңа ағынның адрестік кеңістігі туралы ақпараттың керегі жоқ. Көпшілігінде барлық ағындар теңдәрежелі болып, иерархия құрылмайды. Бірақ, кейде «аталық ағын – балалық ағын» сияқты қатынастары бар ағындардың иерархиясы пайда болады. Иерархиялық қатынастарға байланыссыз жасайтын ағынға жаңа ағынның атын беретін идентификатор қайтарылады.
Тапсырманы орындап, кітапханалық процедураны шақырып, ағын жұмысын тоқтатуы мүмкін. Осыдан кейін ағын жойылады да, оны жоспарлағын іздемейтін болады. Кейбір ағындар жүйесінде бір ағын басқа (белгілі) ағынның аяқталуын күтеді. Ол үшін шақырушы процедураны басқа (белгілі) процедура аяқталғанша бұғаттайтын процедура шақырылады. Мұнда ағынды жаса мен аяқтау процесті жасау мен аяқтауға өте ұқсас.
Кейбір ағын өз еркімен өзінің кезегін басқа ағынға ұсынады. Бұл маңызды жағдай, себебі, ағындарда процестердегі сияқты уақытты бөлу режімін орнатуға мүмкіндік беретін таймер (уақыт) бойынша үзілім болмайды. Ағындарға сыпайы болу керек те, мезгіл мезгіл процессорды басқа ағынға беріп отыру қажет. Бір ағынды басқа ағын аяқталғанша күткізетін және оған басқа ағынның аяқталғандығы туралы ақпарат беретін процедуралар бар.
Ағындарға байланысты күрделі проблеманың бірі, ол ағындардың көп деректер құрылымын бірге пайдалануы. Оның маңызын түсіну үшін бірнеше нақты екі мысалды қарастырайық:
Егер бір ағын файлды, басқа ағын оны оқып жатқанда, жауып жібергенде не болады?
Егер бір ағынға жад жетіспей, ол қосымша жад сұрағанда, жарты жолда ағындар арасында ауыстырып-қосқыш істеп кетіп жаңа ағын іске қосылсын. Жұмыс барысында ол да қосымша жад сұраса, онда қосымша жад қатарынан екі рет бөлінген болар еді.
Негізі түсінік бойынша ағындар моделін меңгермейінше, онымен жұмыс істеу мүмкін емес; жүйенің тиімді қолдануды үйрене алмайсыз және қазіргі дербес компьютердің кез келген пайдаланушысында ертеме, кешпе пайда болатын проблемаларды шеше алмайсыз.
|