Ағындар мен үрдістерді басқару



1. Кіріспе
2. Негізгі бөлім
1. Ағын түсінігі
2. Ағындарды диспетчерлеу жəне жоспарлау
3. Ағынды анықтау
4. Үрдіс түсінігі
5. Windows операциялық жүйесіндегі процесстер мен ағындар
3. Қорытынды
Мультипрограммалық операциялық жүйелерде ағындарға қызмет көрсету келесідей болады. Процессор жұмысының уақыты кванттарға (интервалдарға) бөлінеді, олар өз алдына ағындардың жұмыстары үшін үлестіріледі. Уақыт кванты біткен соң, ағынның жұмысы үзіліп, процессор басқа ағымға тағайындалады. Уақыт кванттарын ағындар арасында үлестіру жұмысымен ағындар менеджері деп аталатын арнайы программа айналысады.
Ағындар менеджері процессорды басқа ағынға ауыстырғанда келесі əрекеттерді істеуі керек:
- іске қосылатын ағынның оның үзілу кезіндегі контекстіне қайта қалпына;
- басқаруды іске қосылатын ағынға беру.
Бірдей приоритетті ағындарды басқару алгоритмін қарастырайық. Бұл ағындар процессорға кезекке тұрады. Процессор ағындарға FIFO (first in — first out), яғни бірінші келген – бірінші шығады тəртібімен қызмет көрсетеді.
Қызмет көрсетудің мұндай тəртібі циклдық қызмет көрсету деп аталады.
Өйткені аяқталмаған ағамдар келесі қызмет көрсетілгенше тосқауылданады, яғни қызмет көрсетілмей шығырылып тасталмайды. Сондай ақ, мұндай циклдық қызмет көрсету FCFS (first come — first served), яғни бірінші келді – бірінші қызмет көрсетілді деп те аталады.
Егер ағындардың приоритеттері əр түрлі болса, оларды басқаруға бірнеше кезектері бар айтарлықтай күрделі алгоритм керек болады. Бұл жағдайда əрбір кезекте бірдей приоритетті ағындар жиналады.
Бірнеше кезектерге қызмет көрсететін қарапайым алгоритм келесідей болады: бірінші болып приоритеттері жоғары ағындарға қызмет көрсетіледі.
Жалпы жағдайда ағындарды басқару екіге бөлінеді: жоспарлау жəне диспетчерлеу. Ағынды жоспарлау деп үзілген ағындарды кезекке қою үшін қолданылатын алгоритмді айтамыз. Ағындардың менеджер (диспетчер) үзілген ағынның приоритетін өзгерте алады, бұл өз алдына осы ағын тұратын кезекті өзгертуі мүмкін. Жоспарлау алгоритмі кестелер теориясы деп аталатын математикалық пəнмен зертелінеді. Ағындарды диспетчерлеу дегеніміз процессорға ағындарға қызмет көрсетуі үшін тəртіп орнатуды. Диспетчерлеу алгоритмдері жаппай қызмет көрсету теориясы деп аталатын математикалық пəнмен зерттеледі.
1. А. П. Побегайло, Системное программирование. СПб, Питербург, 2006, 1056 с., (93-161с)
2. Джонсон М. Харт. Системное программирование в среде Win32- приложений с учетом специфики 64-разрядной версии Windows. – СПб., М.Харьков, Минск: “Русская редакция”, “Питер”, 2001.
3. Н.А. Олифер, В.Г. Олифер, Сетевые операционные системы. СПб, Питербург, 2001.

Жоспары
1. Кіріспе
2. Негізгі бөлім
1. Ағын түсінігі
2. Ағындарды диспетчерлеу жəне жоспарлау
3. Ағынды анықтау
4. Үрдіс түсінігі
5. Windows операциялық жүйесіндегі процесстер мен ағындар
3. Қорытынды



Ағын түсінігі
Ағын түсінігі процессордың программаны орындау барысындағы
əрекеттерінің тізбектілігімен байланысты. Программа инструкцияларының мұндай тізбектілігі программа ішінде ағындарды басқару деп аталады.
Программа көпағынды деп аталады, егер бұл программада бір уақытта бірнеше программа орындала алатын болса. Бұл жағдайда ағындар параллельді (қатарлас) деп аталады. Егер программада бір уақытта бір ғана ағын орынадалатын болса, мұндай программа бір ағындық деп аталады.
Windows-та ағын деп қосымшаларды орындау үшін процессорлық уақыттар берілетін ядроның объектісі. Әрбір ағынғы келесі ресурстар жатады: атқарылатын функцияның коды, процессор регистрлер операциялық жұмысына арналған стек, қауіпсіздік жүйесіне арналған ақпараты бар қатынас құру маркері.
#include iostream.h
int main()
{
int a, ' b;
cout "Input two integers: ";
cin a b;
if (a == b)
{
cout "There is no min." endl;
return 0;

if (а b)
cout "min = " а endl;
else
cout "min = " b endl;
return 0;
}

Ағындарды диспетчерлеу жəне жоспарлау

Мультипрограммалық операциялық жүйелерде ағындарға қызмет көрсету келесідей болады. Процессор жұмысының уақыты кванттарға (интервалдарға) бөлінеді, олар өз алдына ағындардың жұмыстары үшін үлестіріледі. Уақыт кванты біткен соң, ағынның жұмысы үзіліп, процессор басқа ағымға тағайындалады. Уақыт кванттарын ағындар арасында үлестіру жұмысымен ағындар менеджері деп аталатын арнайы программа айналысады.
Ағындар менеджері процессорды басқа ағынға ауыстырғанда келесі əрекеттерді істеуі керек:
- іске қосылатын ағынның оның үзілу кезіндегі контекстіне қайта қалпына;
- басқаруды іске қосылатын ағынға беру.
Бірдей приоритетті ағындарды басқару алгоритмін қарастырайық. Бұл ағындар процессорға кезекке тұрады. Процессор ағындарға FIFO (first in -- first out), яғни бірінші келген - бірінші шығады тəртібімен қызмет көрсетеді.
Қызмет көрсетудің мұндай тəртібі циклдық қызмет көрсету деп аталады.
Өйткені аяқталмаған ағамдар келесі қызмет көрсетілгенше тосқауылданады, яғни қызмет көрсетілмей шығырылып тасталмайды. Сондай ақ, мұндай циклдық қызмет көрсету FCFS (first come -- first served), яғни бірінші келді - бірінші қызмет көрсетілді деп те аталады.
Егер ағындардың приоритеттері əр түрлі болса, оларды басқаруға бірнеше кезектері бар айтарлықтай күрделі алгоритм керек болады. Бұл жағдайда əрбір кезекте бірдей приоритетті ағындар жиналады.
Бірнеше кезектерге қызмет көрсететін қарапайым алгоритм келесідей болады: бірінші болып приоритеттері жоғары ағындарға қызмет көрсетіледі.
Жалпы жағдайда ағындарды басқару екіге бөлінеді: жоспарлау жəне диспетчерлеу. Ағынды жоспарлау деп үзілген ағындарды кезекке қою үшін қолданылатын алгоритмді айтамыз. Ағындардың менеджер (диспетчер) үзілген ағынның приоритетін өзгерте алады, бұл өз алдына осы ағын тұратын кезекті өзгертуі мүмкін. Жоспарлау алгоритмі кестелер теориясы деп аталатын математикалық пəнмен зертелінеді. Ағындарды диспетчерлеу дегеніміз процессорға ағындарға қызмет көрсетуі үшін тəртіп орнатуды. Диспетчерлеу алгоритмдері жаппай қызмет көрсету теориясы деп аталатын математикалық пəнмен зерттеледі.
Ағындарды басқару алгоритмі жүйенің келесі параметрлерін оптимизациялау үшін əзірлендеі:
- микропроцессордың жұмыс істеу уақыты максималды болуы керек;
- жүйенің өткізу қабілеті максималды болуы керек;
- ағынның жүйеде болу уақыты минималды болуы керек;
- ағынның кезекте күтіп тұру уақыты минималды болуы керек;
- жүйенің тапсырыстарға жауап беру уақыты минималды болуы керек.
Жəне бұл жағдайда əр жүйе үшін ағындардың контекстеріне ауысу шығындарын азайтатын оптималды қызмет көрсету интервалдары таңдалуы керек. Жалпы жағдайда процессордың жұмыс істеу уақытын ағындар арасында бөлу орындалуына көп уақыт қажетсінбейтін ағындарды тез орындауға мүмкіндік береді, бірақ еңбекауқымдылығы жоғары ағындардың орындаулын баяулатады.

Ағынды анықтау

Windows-та ағын деп қосымшаларды орындау үшін процессорлық уақыттар берілетін ядроның объектісі. Əрбір ағынға келесі ресурстар жатады:
- атқарылатын функцияның кодасы;
- процессор регистрлерінің жиынтығы;
- қосымша жұмысына арналған стек;
- операциялық жүйенің жұмысына арналған стек;
- құрамында қауіпсіздік жүйесіне арналған ақпарат бар қатынас құру маркері.
Аталған ресурстар біріге отырып Windows-ғы ағын контекстін құрайды.
Windows-тағы əрбір ағынның құрамында дескриптормен қоса идентификатор болады. Ол жүйеде орындалып жатқан ағындар үшін ерекше болып табылады.
Ағындардың идентификаторын пайдаланушыларға ағындардың жұмысын бақылауға мүмкіндік беретін қызметтік программалар қолданады.
Windows операциялық жүйесінде ағындардың екі типі болады:
- жүйелік ағындар;
- пайдаланушылық ағындар.
Жүйелік ағындар операциялық жүйенің түрлі қызметтерін атқарады жəне олар операциялық жүйенің ядросымен іске қосылады.
Пайдаланушылық ағындар пайдаланушылар мəселелерін шеші үшін қызмет атқарады жəне қосымшалар арқылы іске қосылады.
Жұмыс істеуші ағындарды екі типті ағындар бар:
- жұмысшы ағындар (working threads);
- пайдаланушы интерфейсінің ағындары (user interface threads).
Жұмысшы ағындар қосымшаның түрлі фондық мəселелерін атқарады.
Пайдаланушы интерфейсінің ағындары терезелермен байланысты жəне терезелерге келіп түсетін хабарларды өңдеумен байланысты жұмыстарды атқарады. Əрбір қосымшада кем дегенде бірінші (primary) немесе негізгі (main) деп аталатын бір ағын болады. Консольдық қосымшаларда бұл ағын main функциясын атқарады. Графикалық интерфейсі бар қосымшаларда бұл ағын WinMain функциясын атқарады.

Үрдіс түсінігі
Үрдіс - белгілі бір нәтижеге жету үшін орындалатын тізбектелген әректтердің жиынтығы.
Әрбір үрдіспен оның адрестік кеңістігі байланыстырылады, ол одан оқи алады және оған өз мәліметтерін жаза алады.
Үрдістің құрамында кодасы жəне деректері бар жекеменшіктік тəуелсіз ауани (виртуалды) кеңістік бар, ол басқа процесстерден қорғалынған. Əрбір үрдіс өз алдына құрамында бір немесе бірнеше өзалдына тəуелсіз орындалын жатқан ағындар бола алады. Процесс өзінің ішінде жаңа ағындар жəне жаңа тəуелсіз үрдістер құра алады жəне хабарды басқара алады жəне объектілерді синхрондай алады.

Windows операциялық жүйесіндегі процесстер мен ағындар
Əрбір процесстің құрамында бір немесе бірнеше ағын бар. Windows операциялық жүйесіндегі ағын дегеніміз -- орындалудың негізгі бірлігі.
Программист тұрғысынан Win32 жүйесіндегі əрбір процесстің құрамында төменде көрсетілген компоненталар бар:
- Бір немесе бірнеше ағындар;
- Басқа процесстердің адрестік кеңістіктерінен өзге ауани адрестік кеңістік, бұл жағдай жадыны нақты бөлу жағдайына қатысты емес.
Жадыда көрінетін файлдар физикалық жадыдан орын алғанымен, əртүрлі процесстер жадыда көрінетін файлдарға əртүрлі ауани адрестерді қолданады:
- DLL кодамен қоса бір немесе бірнеше кода сегменттерін;
- ауқымды айнамалылардан тұратын бір немесе бірнеше деректер сегменттерін; ортамен (окружения) байланысты айнымалылыр туралы ақпараты бар орта қатарлары, мысалыіздестірудің ағынды жолы.
:: процесс үймелері жадысы.
:: ашық дескрипторлар немесе басқа үймелер сияқты ресурстар.
Процесстің барлық ағындары кодаларды, ауқымды айнымалыларды, орта (окружения) қатарларын жəне ресурстарды ортақ түрде қолданады. Əрбір ағын тəуелсіз түрде жоспарланады. Ағын құрамына төменде келтірілген элементтер кіреді:
- процедураларды, үзулерді, алып тастауларды (исключений) өңдеуді жəне автоматтық деректерді шақыру стегі;
- ағынның жергілікті жадысы (Thread Local Storage -- TLS) -- көрсеткіштер (сілтемелер) массивы, олар процесске жекеменшіктік ерекше орта (окружения) деректерін қалыптастыру ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Сигналдарды өңдеу жабдықтары
Ағын түсінігі
Процесс - орындалатын бағдарлама
«Экономикалық ақпараттар жүйесінің қоғамдағы даму рөлі»
Жобаны жоспарлау
Электірлі балқыма үрдісінің басқару объектісі ретінде сипаттамасы
Бағдарлы сыныптарда "ақпаратты жүйелер" тақырыбын оқыту әдістемесі
ҚАЗАҚСТАН МҰНАЙЫН ТАСЫМАЛДАУДЫҢ ЭКОНОМИКАЛЫҚ ТИІМДІЛІГІ
Технологиялық процестерді басқаруды автоматтандыру жүйелері
Технологиялық процесті басқару
Пәндер