Қолданбалы программалау интерфейсі
API (Application Programming Interface) – қолданбалы программалау интерфейсі.
Операциялық жүйе мен программалар арасындағы интерфейс жүйелік шақырулардың жиынтығымен анықталады.
Мысалы, егер пайдаланушы үрдісіне мәліметтерді файлдан оқу қажет болса, онда ол жүйелік шақырудың командасын орындауы керек, бұл дегеніміз ядро режиміне ауысатын үзуді орындау және мәліметтерді файлдан оқитын операциялық жүйенің функциясын активтендіру.
POSIX стандартының ең жиі қолданылатын жүйелік шақыруларды қарастырайық. POSIX –те 100-ден аса жүйелік шақырулар бар.
fork – жаңа үрдісті құру
exit – үрдісті аяқтау
open – файлды ашу
close – файлды жабу
read – мәліметтерді файлдан буферге оқу
write - мәліметтерді буферден файлға жазу
stat – файлдың қалып-күйі туралы ақпарат алу
mkdir – жаңа каталог құру
rmdir – каталогты жою
link – сілтеме құру
unlink – сілтемені жою
mount – файлдық жүйені құрастырады
umount - файлдық жүйені демонтирует
chdir – жұмыс каталогын өзгерту
UNIX-тегі шақырулар, жүйелік шақыруларға қатынау үшін қолданылатын кітапханалық процедуралармен бірдей болып келеді.
Windows –қа арналған - Win32 API қолданбалы программалау интерфейсін қарастырайық.
Win32 API жүйелік шақырулардан бөлінген (отделен). Бұл программаны қайта жазбай, әр-түрлі версияларда жүйелік шақыруларды өзгертуге мүмкіндік береді.
Сондықтан түсініксіз: шақыру жүйелік (ядро арқылы орындалатын) болып келеді ме, немесе ол пайдаланушы кеңістігінде өңделеді ме?
Win32 API –де 1000 –нан аса шақыру бар. Шақыру санының көптігін былай түсіндіруге болады: UNIX пайдаланушысының графикалық интерфейсі пайдаланушылық режимде іске қосылады, ал Windows –та ядро ішіне ендірілген. Сондықтан, Win32 API –де терезелерді, мәтіндерді, қаріптерді және т.б. басқаруға арналған көптеген шақырулары бар.
POSIX стандартының шақырулары тәрізді Win32 API –дің шақыруларын қарастырайық.
CreatProcess (fork) - жаңа үрдісті құру
ExitProcess (exit) - үрдісті аяқтау
CreatFile (open) - файлды ашу
CloseHandle (close) - файлды жабу
ReadFile (read) - мәліметтерді файлдан буферге оқу
WriteFile (write) - мәліметтерді буферден файлға жазу
CreatDirectory (mkdir) - жаңа каталог құру
RemoveDirectory (rmdir) - каталогты жою
SetCurrentDirectory (chdir) - жұмыс каталогын өзгерту
Win32 API интерфейсі программаларға Windows –тың барлық версияларында жұмыс жасауға мүмкіндік береді.
Операциялық жүйелердің құрылымы
Ұйтқылы (монолитті) жүйе
Жүйе құрылымы:
-
Талап етілген сервистік процедураларды шақыратын негізгі программа.
-
Жүйелік шақыруларды іске асыратын сервистік процедуралардың жиынтығы.
-
Сервистік процедураларға қызмет ететін утилиттер жиынтығы.
Монолитті жүйенің қарапайым моделі
Бұл үлгіде әрбір жүйелік шақыруға бір сервистік процедура берілген (бар), мысалы, файлдан оқу. Утилиттер бірнеше сервистік процедураларға қажет функцияларды орындайды (мысалы, файлды оқу және жазу үшін дискімен жұмыс жасау утилитасы керек).
Шақыруларды өңдеу кезеңдері:
-
Шақыру қабылданады
-
Пайдаланушы режимінен түйін режиміне ауысу орындалады
-
Қандай жүйелік шақыру орындалуы тиісті екенін анықтау үшін, операциялық жүйе шақыру параметрлерін тексереді
-
Осыдан кейін, операциялық жүйе процедуралар сілтемесінен тұратын кестеге қатынап, өзіне лайықты (сәйкес) процедураны шақырады.
Операциялық жүйенің көпдеңгейлік құрылымы
Алдындағы амалдардың жалпы қорытындысы - операциялық жүйені деңгейлер иерархиясы ретінде ұйымдастыру. Деңгейлер операциялық жүйенің функцияларының топтары – файлдық жүйе, үрдістерді және құрылғыларды басқару және де осы сияқтылар арқылы құрылады. Әрбір деңгей өзінің тікелей көршісімен – жоғарырақ немесе төмендеу орналасқан деңгеймен әрекет қыла алады. Операциялық жүйенің қолданбалы программалары немесе модульдері осы деңгейлер бойынша сұраныстарды жоғары және төмен жіберіп отырады.
ОС UNIX құрылымы
ОС UNIX ядросы
Көпдеңгейлі Windows үлгісін іске асыру мысалы
Экзоядро моделі
Егер алдындағы үлгілер өз жауапкершілігіне функцияларды барынша толық алса, экзоядро принципы – оның барлығын пайдаланушылық программаларға қайтару. Мысалы, неге файлдық жүйе керек? Неге пайдаланушыға қорғалған бейнемен диск учаскелерін жай ғана оқуға және жазуға рұқсат бермейміз? Бұл дегеніміз, әрбір пайдаланушылық бағдарламаның өзінің файлдық жүйесі болады. Осындай операциялық жүйе, солар үшін жарысушы пайдаланушылар арасында қорлардың қауіпсіз таратылуын қамтамасыз етеді.
Микроядролық архитектура (клиент-сервер үлгісі)
Мынау үлгі алдындағы екі үлгілер аралығының ортасы болып келеді.
Осы заманғы операциялық жүйелердің дамуында, минималды экзоядро қалдыра отырып, тапсырмаларды түйіннен пайдаланушылық процестердің деңгейіне, онан ары тасымалдау тенденциясы байқалады.
Мына үлгіде екі ұғым енгізілген:
-
Серверлік процесс (сұраныстарды өңдейді)
-
Клиенттік процесс (сұраныстарды жібереді)
Клиенттермен серверлер арасындағы байланысты басқару түйіннің міндетіне кіреді.
Клиент-сервер моделі
Артықшылығы:
-
Түйіннің және бөлек ішкі жүйелердің коды ең кіші, және де соның нәтижесі - қателердің аз болуы.
-
Түйін қосалқы процестерден жақсырақ қорғалған.
-
Таратылған жүйеге қолдануға жеңіл бейімделеді.
Кемшіліктері:
Үлгілерді салыстыруды қорытындылау
Үлгілерді салыстыру
Өз-өзін бақылау сұрақтары
-
Мультипрограммалық режимнің мультиесепті режимнен айырмашылығы?
-
Операциялық жүйенің түсінектемесі
-
Үрдістерді басқару түрлері
-
Есептеу жүйесінің жұмыс режимдері
-
Универсалды операциялық жүйелер
-
Операциялық жүйенің моделінің түсінектемесі.
Ұсынылатын әдебиеттер
-
Э. Таненбаум. Современные операционные системы. СПб, Питер, 2002, 1040 стр.
-
Н.А. Олифер, В.Г. Олифер Сетевые операционные системы. СПб, Питер, 2001, 544 стр.
2 тақырып: Үрдістер және ағындар (жіптер)
Мақсаты: Осы лекцияда үрдістер, ағындар, үрдіс үлгісі, үрдісті құру, үрдістер иерархиясы ұғымдарын түсіну.
Қарастырылатын сұрақтары: Үрдістер. Үрдіс үлгісі. Үрдісті құру. Үрдістің аяқталуы. Үрдістер иерархиясы. Үрдістердің қалып-күйі. Ағындар (жіптер, жеңілдетілген үрдіс). Ағын түсінігі. Ағын үлгісі. Ағындарды қолдану артықшылықтары. Пайдаланушы, ядро және араласқан кеңістіктерінде ағындарды орындау. Windows орындауларының ерекшеліктері. Үрдістер арасындағы әрекеттестік. Үрдістерді жоспарлау.
Үрдіс (тапсырма) – орындалу режиміндегі программа.
Әрбір үрдіспен оның адрестік кеңістігі байланыстырылады, ол одан оқи алады және оған өз мәліметтерін жаза алады.
Адрестік кеңістік:
-
программаның өзінен
-
программаның мәліметтерінен
-
программа стегінен тұрады.
Әрбір үрдіспен регистрлердің жиынтығы байланыстырылады, мысалы:
-
командалар санауышы (процессорда) – орындалуға кезекте тұрған келесі команданың адресі сақталатын регистр. Команда жадтан таңдалған соң, командалардың санауышы дәлдеп түзеледі де, көрсеткіш келесі командаға көшеді.
-
стек көрсеткіші
-
және т.б.
Көптеген операциялық жүйелерде әрбір үрдіс туралы, оның өзіне меншікті адрестік кеңістіктің қосымша ақпараты операциялық жүйенің үрдістер кестесінде сақталады.
Үрдіс үлгісі
Көп мақсатты жүйеде нақты процессор үрдістен үрдіске ауыстырылып қосылады, бірақ үлгіні оңайлату үшін паралельді жүретін (жалған паралельді) үрдістер жиынтығы қарастырылады.
Төрт жұмыс істеуші бағдарламалармен схеманы қарастырайық.
Уақыттардың әрбір кезеңінде тек қана бір үрдіс белсенді
Оң жақта паралельді жұмыс істеуші үрдістер, оның әрқайсысы өз командаларының санауышымен көрсетілген. Әрине, ағымдағы үрдістің командаларының логикалық санауышы жүктелетін, командалардың тек қана бір физикалық санауышы шынында бар. Ағымдағы үрдіске бөлінген уақыт біткен кезде, командалардың физикалық санауышы жадта, үрдіс командаларының логикалық санауышында сақталады.
Үрдісті құру
Үрдістерді құрылуына алып келетін үш негізгі оқиғалар (fork шақыруы немесе CreateProcess):
-
Жүйені жүктеу
-
Үрдісті құруға, жұмысшы үрдіс жүйелік шақыру жібереді
-
Үрдіс құруға арналған пайдаланушы сұранысы
Барлық жағдайларда, ағымдағы белсенді үрдіс жаңа үрдіс құруына жүйелік шақыру жібереді.
UNIX –те әрбір үрдіске үрдіс идентификаторы меншіктеледі ( PID - Process IDentifier).
Үрдістің аяқталуы
Үрдістің тоқтатылуын тудыратын төрт оқиға (exit шақыруы немесе ExitProcess) бар:
-
Жоспарлы аяқтау (орындалудың аяқталуы)
-
Белгілі қатемен жоспарлы шығу (мысалы, файлдың жоқ болуы)
-
Түзетілмейтін қатемен шығу (программада қате)
-
Басқа үрдіспен жойылуы
Сонымен, тоқтатылған үрдіс, әдетте оны жадтың бейнесі (core image) деп атайтын, өзіндік адрестік кеңістіктен және үрдіс кестесінің компоненттерінен (компоненттердің ішінде оның регистрлері) тұрады.
Үрдістер иерархиясы
UNIX жүйелерінде үрдістердің қатаң иерархиясы жасалған. fork жүйелік шақырумен жасалған әрбір жаңа үрдіс, алдындағы үрдіске еншілес болып келеді. Еншілес үрдіске аталық үрдістен айнымалылар, регистрлер және т.б. беріледі. fork шақырылып, аталық мәліметтердің көшірмесі жасалғаннан кейінгі үрдістердің біреуінде пайда болған өзгертулер басқасына әсер етпейді. Бірақ үрдістер қайсысы аталық екенін есте сақтайды.
Мұндай жағдайда UNIX –те барлық үрдістердің аталарының атасы бар – init үрдісі.
UNIX жүйесіне арналған үрдістер иерархиясы
Windows -та үрдістер иерархиясы түсінігі жоқ. Бірақ аталық үрдіске, еншілес үрдісті бақылауға мүмкіндік беретін, арнайы таңбалағыш (маркер) беруге болады.
Үрдістердің қалып-күйі
Үрдістің үш қалып-күйі бар:
-
Орындалу (орынға процессор ие болады)
-
Даярлық (басқа үрдіске орындалуға рұқсат ету үшін үрдіс уақытша тоқтатылған)
-
Күту (үрдіс өзінің ішкі себептеріне байланысты іске қосыла алмауы мүмкін, мысалы, енгізу/шығару операцияларын күте отырып)
Қалып-күй арасындағы мүмкін болатын ауысулар
1. Үрдіс блокталады, енгізілетін мәліметтерді күте отырып
2. Жоспарлаушы басқа үрдісті таңдайды
3. Жоспарлаушы тап осы үрдісті таңдайды
4. Енгізілетін мәліметтер түсті
2-ші және 3-ші ауысулар операциялық жүйенің үрдістерді жоспарлаушысы арқылы шақырылады. Үрдістердің өздері осы ауысулар туралы тіпті білмейді. Үрдістердің көзқарасы бойынша орындалудың және күтудің екі қалып-күйі бар. Серверлерде клиент сауалына жауапты тездету үшін, жиі күту тәртібіне бірнеше үрдісті жүктейді. Сервер сауалды алғаннан кейін, үрдіс «күту» тәртібінен «орындалу» тәртібіне ауысады. Бұл ауысу жаңа үрдісті іске қосқаннан көрі едәуір тез орындалады.
Ағындар (жіптер, жеңілдетілген үрдіс)
Ағын түсінігі
Әрбір үрдіске адрестік кеңістік және орындалатын командалардың жеке ағыны сәйкес келеді. Клиентке қызмет көрсету үшін көп пайдаланылатын жүйелерде бір сервиске әрбір қатынаған сайын жаңа үрдіс құруға тура келеді. Бұл, осы үрдіс ішінде бір адрестік кеңістігі бар квазипаралельді ағын құруға қарағанда кемірек пайдалы.
Көпағынды жүйені бірағынды жүйемен салыстыру
Ағын үлгісі
Әрбір ағынмен байланысады:
-
Командаларды орындау санауышы
-
Ағымдағы айнымалылардың регистрлері
-
Стек
-
Қалып-күй
Ағындар өзара өз үрдісінің элементтерін бөледі:
-
Адрестік кеңістікті
-
Глобальды айнымалыларды
-
Ашық файлдарды
-
Таймерлерді
-
Семафорларды
-
Статистикалық ақпараттарды.
Қалғанында үлгі үрдістердің үлгілеріне ұқсас.
POSIX және Windows -та түйін деңгейінде ағындардың сүйеуі бар.
Linux –те ағындарды құруға арналған clone атты жаңа жүйелік шақыру бар. Бұл UNIX жүйесінің барлық қалған версияларында жоқ.
POSIX –те ағындарды құруға арналған pthread_create жаңа жүйелік шақыру бар.
Windows –та ағындарды құруға арналған Createthread жаңа жүйелік шақыру бар.
Ағындарды қолдану артықшылықтары
-
Жалпы адрестік кеңістікті қолдану арқылы кейбір жағдайларда программаны оңайлатуға болады.
-
Ағын құру шапшандығы үрдіспен салыстырғанда 100 есе тез.
-
Программаның өнімділігінің жоғарылауы. Оның себебі процессорда есептеулерді және енгізу – шығару операцияларын бір уақытта орындау мүмкіншілігі бар болғандықтан. Мысалы, мәтіндік редактор үш ағынмен бір уақытта бірлесіп әрекет қыла алады: пайдаланушымен жұмыс жасайды, мәтінді форматтайды және резервтік көшірмені таспаға жаза алады.
Пайдаланушы, ядро және араласқан кеңістіктерінде ағындарды орындау
А –пайдаланушы кеңістігіндегі ағындар
B – түйін кеңістігіндегі ағындар
А жағдайында, түйін ағын туралы ештеңе білмейді. Әрбір үрдіске үрдістердің кестесіне ұқсас ағындардың кестесі қажетті.
А жағдайының артықшылығы:
-
Осындай көпағындықты, көпағындықты қолдамайтын түйінде (ядрода) іске асыруға болады
-
Ағындарды жылдам ауыстырып қосу, құру және аяқтау
-
Үрдістің өзіне меншікті жоспарлау алгоритмы болуы мүмкін.
А жағдайының кемшілігі:
-
Бір үрдіс ішінде таймерден үзудің жоқ болуы
-
Тосқауылдаушы (үрдіс күту тәртібіне ауыстырылады, мысалы: клавиатурадан оқу, ал мәліметтер түспейді) жүйелік сұраныстарды қолданғанда, ағындардың барлық қалғаны тосқауылданады.
-
Орындау қиындығы
Түйін ағындарында пайдаланушы ағындарының мультиплексациялануы
Түйін ағыны бірнеше пайдаланушы ағындарынан тұруы мүмкін.
Windows орындауларының ерекшеліктері
Төрт ұғым қолданылады:
-
Тапсырма - жалпы квоталары және лимиттары бар үрдістер жиынтығы
-
Үрдіс - қорлардың контейнері ( жад ...), минимум бір ағыннан тұруы мүмкін.
-
Ағын - түйінмен жоспарланушы, нақ орындалатын бөлім.
-
Талшық - пайдаланушы кеңістігінде толық басқарылатын, жеңілдетілген ағын. Бір ағын бірнеше талшықтан тұруы мүмкін.
Ағындар пайдаланушы тәртібінде жұмыс істейді, бірақ жүйелік шақырулар жанында түйін тәртібіне ауыстырылып қосылады. Түйін тәртібіне ауыстырып қосу және одан кері ауыстырып қосудан жүйе жұмысы өте бәсеңдейді. Талшық ұғымы сондықтан енгізілген болатын. Әрбір ағында бірнеше талшық болуы мүмкін.
Үрдісті басқару және ұйымдастыру. Үрдіс және ядро ұғымы. Үрдістің виртуальдық мекен-жайлық кеңістігін сегментациялау. Үрдіс мәнмәтінің құрылымы.
Әр бір операциялық жүйе кейбір мәліметтермен жұмыс жасайды, олар басқару әдістері мен бірігіп олардың қасиетін сипаттайды.
Үрдіс - бұл барлық ОЖ де болатын программа. Үрдіс - бұл қорларды меншіктеуге құқығы бар программа.
Үрдістерді басқару:
-
Орталық процессордың уақытын қолдану арқылы басқару.
-
Енгізу буфері және аударыстыру арқылы басқару.
-
Бөлінетін қорлар арқылы басқару.
Үрдісті басқарудың негізгі мәселелері. Біріншіден - орталық санашықтың (ОС) уақытын қолдану арқылы басқару немесе бұл мәселені ОС жобалау деп атайды, яғни қандай уақытта қай есеп немесе қай үрдіс ОС басқарады (қандай үрдісте ОС жұмыс істейді).
Екіншіден - Енгізу буфері және аударыстыру арқылы басқару. Мысалы бірнеше адам, бір курс студенттері компьютердің алдында отыр және барлығы бір уақытта бір есепті үрдіс түрінде іске қосты делік. Жүйеде көп есеп пайда болады (жүзден аса). Ал барлық есептеу жүйесі жүз есеппен мультипрограммалық режимде жұмыс істеу қабылдай алмайды, ол өте ауыр. Бұл жағдайда есепті енгізу буфері, яғни үрдістер буферде санашық арқылы өзінің өңделіп босатылуын күтетін үрдістер түзеледі. Осы буферде өңдеуді бастау үшін үрдістердің орындалу кезегін таңдау мәселесі туындайды. Бұл мәселе буфердің жоспарлануы болып табылады.
Енді жоспарлау аударыстыру есебін қарастырамыз. Санашық арқылы бірнеше үрдістер өңделеді және бізге нақты жедел жадыны басқада есептер үшін босату мәселесі туындайды. Бұл жағдайда өңделген есептердің кейбірін ішкі есте сақтау құрылғысына жіберу қажеттілігі туындайты. Қандай алгоритм арқылы бұл есептерді жібере аламыз? Жіберудің бағыт бағдары қандай болады? Мысалы әр жұп есептерді жіберуге болады. Үрдістерді жіберуді ұйымдастырудың қайсысы тиімді - бұл негізгі мәселе.
Үшіншіден - бөлінетін қорларды басқару. Қорлар жиынына қатынау белгілі бір уақытта әртүрлі үрдістер атынан ұйымдастырылады. Бұл баспа құрылғысының коллизиясы сияқты. Функциялар көбінде ОЖнің қасиеттерін анықтайды, бұл функция үрдістердің қарым\қатынасын ұйымдастыруды және ортақ қорларды қолдануды қастамассыз етеді. Мысалдағы баспа құрылғысының мәселесі тез шешіледі, ал егер екі программаның жедел жадыда ортақ фрагменті болса, онда бөлінетін қорларды басқару - күрделі есеп.
Енді ОЖ құрылымын қарастырайық. Тәжірибе жүзінде кез келген ОЖ ядро ұғымына ие. ОЖ ядросы - оның резидентті бөлігі болып табылады, ал жіберу үрдісіне қатыспайды (үнемі жедел жадыда болады) және ОЖ режимінде жұмыс жасайды немесе супервизор режимінде. ОЖ-де негезінен ядро құрамына басқарудың базалық құралы еңгізілген және бірнеше физикалық құралдарды басқаруды қамтамасыз ететін программалар жиынтығы енуі мүмкін. Ядроның негізгі қызметіне көбінесе үзуді өңдеу кіреді. Біз программаларды кейде қорларды басқарушы, құрылғылар драйверлері (физикалық және логикалық) деп атаймыз. Мысалға, ОЖ ядросында жедел есте сақтау құрылғысының драйвері болуы қажет.
Сонан соң есептеу жүйесінің қорларын басқару программалары ядроның айналасында жетілдіріледі. Бірінші деңгей негізінен физикалық құрылғылардың драйверлерінен тұрады. Келесі деңгей логикалық құрылғыларды басқару. Осындай деңгейлер көп болуы мүмкін. Мысалы біздің сұлбада файлдарды басқару драйверлері пайда болуы мүмкін, олар логикалық дискті басқару драйверлерімен байланысты, ал басқалары өз кезегінде нақты физикалық құрылғылар драйверімен байланысты, т.с.с. ОЖнің барлық компоненттері супервизор режимінде және операциялық жүйе режимінле жұмыс істеуі міндетті емес. Ядродан логикалық қашық орналасқан компоненттердің көпшілігі қарапайым қолданбалы режимде жұмыс істей алады. Сол сияқты ОЖ-нің барлық компоненттері резидентті режимде жұмыс істеуі міндетті емес. Функциялардың көпшілігіне бұл талап етілмейді.
Программалық модульдердің құрылымдық ұйымдастыру түрлері.
Құрылымды барлық программалық есеп кодтары орындалуға арналғанда келесі көрсетілген құрылымдардың бір варианты ретінде қарастыруға болады:
-
Қарапайым программалық құрылымдар. Бұл құрылымда барлық операторлар бөлінбейтін модуль ретінде жасалынады, орындалу алдында жадыға толық жүктеледі және іске қосылған соң басқа программалық модульдерге қатынамайды.
-
Оверлейлік құрылым. Бұл жағдайда программалық блок белгіленген модульдерге бөлінеді. Негізгілері түпкі деп аталады және қабысу модульдерін шақыру координациясын орындайды. Қабысу модульдері бір адресте орналасады және бір уақытта жадыда бір модульден артық модуль орналаспайды. Бұл құрылым сілтеме кестесі арқылы сипатталады. Онда рұқсат етілетін және ескерілмейтін сілтемелері анықталады. Ескерілмейтін сілтемелерде негізгі шақыруға болатын модульдер көрсетіледі, ал айыруда шақыруға болатын модульдер көрсетіледі. Түпкі модуль тұрақты жадыда орналасады және ол арқылы барлық жүктелетін модульдер орындалады. Бұл құрылым жады бойынша үнемді, бірақ егер ұйымдастыру дұрыс болмаса, онда шақырылған модульдердің жүктелуіне көп уақыт кетеді.
-
Динамикалы тізбекті құрылымының ұйымдастырылуы.
Link және Load операторлары арқылы жүзеге асырылады. Бұл операторлар арқылы шақырылған модуль жадыда орналасқаны анықталады. Егер модуль жадыда орналасса, онда Link командасы басқаруды оған береді, ал егер командасы болса, онда модульге қатынау күтілуде. Бұл операторлардан басқа Sare және Return командалары қолданылады.
Sare - шақырылған модульді тізбекті бастайды, ал return - модульді аяқтайды.
Sare командасы арқылы үзу нүктесі сақталады, ал return сол нүктеге қайтуды ұйымдастырады.
Кемшілігі: Басқа модуль бір модульді шақыру кезінде жүктеуді күтуге уақыт кетеді. Бұл кемшілікті жою үшін динамикалы параллель құрылымы қолданылады, ол бағыныңқы есеп механизмі арқылы орындалады.
Бұнда нақты үрдіс арнайы команда арқылы ағындарды немесе бағыныңқы сеептерді құрады, олар фондық орындалуға арналған.
Фон ретінде түсініктеме ол нақты үрдістің параллельді басқа бір берілген үрдіспен орындалуы.
Бұл жағдайда арнайы синхрондау операторлары қолданылады, олар құрылған ағынның үрдіспен әрекеттеу ережелерін анықтайды, мысалы, операторлары. Одан басқа үрдістері басқаруға программалық модульдерге қатынасу приницптері әсер етеді. Олар бірнеше типті болуы мүмкін.
-
қайта-атқаратын программалық модуль
-
қайта-жүктелетін модуль
-
Программалық модельдердің ұйымдастыруының рентабельдік принципі.
Бұдан бір модуль әрқашан басқа модульдармен іске қосылуға дайын.
Үрдістің өмір кезеңінің бірінші қадамы болып үрдісті құру және жүйелік кезекке үрдіс туралы мәліметтің орналастырылуы. Үрдісті көрсету кезінде ол туралы негізгі мәліметтер дерекқоры құрылады. Бұл деректер кесте түрінде толтырылады, оның кейде үрдісті басқару блогі деп те атайды. Құрудың бірінші қадамы болып алғашқы мекені бар үрдісті басқару блогінің бөлінуі және осы блокты барлық үрдістер кезегі болып табылады. Содан соң үрдісті бейнелейтін қажетты мәліметтер анықталады. Оларда стандартталған және олардың ішінде кейбіреулері екілік разрядқа дейін тереңдетіле пішімделген. Үрдіс туралы барлық санаттарды келесі мәліметтер жиынтығынан көруге болады:
-
базалық;
-
енгізу-шығару сұратулар аймағы;
-
құрылғыларға сұрату аймағы;
-
жазбаларды басқару аймағы;
-
жүйелік қызметке сұрату және оверлейлерге сұрату аймағы.
Базалық аймақ. Құрады:
-
бұл аймақтың алғашқы мекені болып келетін үрдісті басқарудың блок мекені;
-
келесі басқару блогіна көрсеткіш (ағымдағы және келесі кезектерде)
-
ағымды пұрсаттылық;
-
ағымды кезектің идентификаторы;
-
үрдісті туындайтын идентификатор;
-
қосарлана туындалатын жағдай коды;
-
ағымдағы жағдай статусы;
-
жағдай мәніне арналған уақытша буфер;
-
мәліметтер үрдісіне арналған жұмыс аймағы;
-
мәліметтерді басқарудың блок мекені (жұмыс кестесі)
-
қорлар жәйлі мәліметтерге арналған уақытша буфер;
-
жүйелік қызметке қатынау кезінде қайтарылатын мәніне арналған уақытша буфер.
Енгізу-шығару сұратулар аймағы. Құрылғы үрдісіне бергіленген және бекітілген сонымен қатар программаны орындау кезіндегі оларға туындайтын сұратулар жәйлі мәліметтер негізінде құрылады және енгізіледі.
Құрамы:
-
арнайы басқарудың блок мекені
-
файлды басқарудың блок мекені
-
берілген сұратуға жіберілетін сөздер немесе қайдан берілетін жады мекені
-
енгізу-шығаруға арналған буфер мекені:
-
мәліметтердің қайда немесе қайдан берілетін файл мекені
-
жазба түріне көрсеткіш
Құрылғыға сұрату аймағы. Жинақтағыш тегергіштерге сұратуға қызмет көрсету үшін қажетті деректер жазылады.
Құрамы
-
файлдың аты бойынша енгізу-шағару программасы арқылы есептелінетін мәліметтердің физикалық мекені
-
осы мекен мен байланысты жады мекені
-
соңғы операцияның орындауы бойынша мәлімет
Жазбаларды басқару аймағы. Бұғаттау ережесі және жазбалар бойынша блоктардың мекендетілуін бейнелейді, сонымен қатар бір жазбаға бірнеше рет қатынау кезіндегі үрдістерді бұғаттау ережесін алдын ала жазу.
Жүйелік қызметке сұрату аймағы. Құрамы.
-
үрдісті орналастыру жадысының картасы
-
енгізу-шығару құрылғылары және үрдіс мәліметтерінің блогі арасындағы тура беру үшін арналған жады картасы
-
оверлейлік аймақтар үшін арналған жұмыс кестесі.
Жады картасы ұғымына бөлектеніп берілген ұрдіске байланысты жадының логикалық аймағы кіреді.
Үрдіс мәліметінінің құылымы. Үрдіс мәнмәтіні мәтін арқылы анықталған күй мен, пайдаланушының ауқымды айнымалылар мәнін және ақпараттық құрылымдары мен, қолданылатын машиналық регистр мәні мен, есептің мекендік кеңістігінде және үрдістер есеп және ядро стектерінің құрамы болып табылады. Жүйенің операциялық мәтіні және оның ауқымды ақпараттық құрылымдары барлық үрдістер мен бірге қолданылады, бірақ үрдістің мәнмәтінінің құрамдас бөлігі болып табылмайды.
Үрдістің пайдаланушы мәнмәтіні деп үрдістің адрестік кеңістігінде орналасқан кодты және мәліметтерді түсінуге болады. Динамикалық бөлінген жадыда орналасқан (мысалы константалар), инициализацияланатын және өзгеретін мәліметтер (компилляция кезінде бастапқы мәндері меншіктелмеген барлық статикалық айнымалылар), қолданушы стегі және мәліметтерге бөлінеді.
Орындалмайтын код және инициализацияланатын мәліметтер программалар файлы құрамын құрайды, олар үрдістің мәнмәтінінде орындалады. Пайдаланушылар стегі қолданбалық режимдегі (user-mode) үрдістің жұмысы кезінде қолданылады.
Ядро мәнмәтіні түсінігінде біріккен регистрлік мәнмәтін және жүйелік мәнмәтін түсінігі берілген. Үрдіс іске қосылған жағдайда жүйе үрдіс кентекстінде орындалады. Егер жүйе ядросы басқа үрдісті іске қосуды жүзеге асыру кезінде ол мәнмәтіннің қайта ауысу кезінде жүйе ядросы алдынғы ақпаратты сақтайды, өйткені ол бірінші үрдіс мәнмәтінінде қайта оралып оны аяқтауға мүмкіндік береді.
Үрдіс мәнмәтіні құрамында үрдіске бөлінген есептің мекен кеңістігі және үрдістің құрамына кіретін аппараттық регистр және деректер ядросының құрылымы болады. Пайдаланушы мәнмәтіні командалардан және үрдіс деректерінен, есеп стегі және бірігіп қолданатын виртуалды үрдіс мекенінің жады кеңістігінен турады.
Үрдістің мәнмәтіні пайдаланушы мәнмәтіні мен ядро мәнмәтінінен тұрады.
Қолданбалы контекст
Қолданушы стегі
|
|
Ядро контексті
|
|
|
|
Динамикалық бөлінген жады
|
|
ЯДРО стегі
|
Инициализацияланбайтын өзгеретін мәліметтер
|
|
|
Инициализациялатын өзгеретін мәліметтер
|
|
Ядро мәліметтері
|
Инициализацтяланбайтын өзгермейтін мәліменттер
|
|
|
Орындалатын код
|
|
|
Достарыңызбен бөлісу: |