Дәріс 2. Жүйелік бағдарламалаудың архитектурасы
Дәріс мақсаты: жүйелік бағдарламалаудың архитектурасын қарастыру.
Былайша айтқанда, жүйелік бағдарламалау – бұл қарапайым басқару бағдарламасы, сондықтан оны, басқа да көптеген бағдарламалар сияқты процедура және функция құру арқылы ұйымдастырылған жөн болар еді. Бұл жағдайда, жүйелік бағдарламалаудың компоненттері дербес (өздігінен) модуль емес, үлкен бағдарламаның бір құрамды бөлігі. Жүйелік бағдарламалаудың мұндай құрылымы монолиттік ядро (monolithic kernel) деп аталады. Монолиттік ядро, әрқайсысы бір-бірін шақыра алатын процедуралар жиынын көрсетеді. Барлық процедуралар жеңілдікпен пайдаланушылық режімінде жұмыс істейді.
Көптеген монолиттік ядросы бар ЖБ-лерде, ядроны жинау, яғни оны компиляциялау, ЖБ орындалатын әр компьютерде жеке орындалады. Бұл жағдайда қолдауы ядроға кіретін құрал-жабдықтар тізімін және бағдарламалар хаттамаларының тізімін таңдауға болады. Ядро бірыңғай бағдарлама болғандықтан, қайта компиляциялау – оған жаңа компоненттер қосу немесе пайдаланбағандарды шығару – бұл жалғыз әдіс. Ядрода артық компоненттерінің болмағанының дұрыс екенін атап өту керек, сонымен ядро барлық уақытта толығымен оперативті жадыда орналасады. Сонымен қатар, керек емес компоненттерді шығарып тастау, ЖБ-нің сенімділігін толығымен арттырады.
ЖБ-нің көпқабатты архитектурасы. Құрылымдауды жалғастыра, бүкіл есептеу жүйесін өзара жақсы анықталған байланыстары (көпдеңгейлік жүйелер (Layered systems)) бар, N деңгейдегі объект, N-1 деңгейдегі объектерді ғана шақыра алатын майда деңгейлерге бөлуге болады.
Әдетте, мұндай жүйелердің төменгі деңгейлері – hardware, жоғарғы деңгейлері – қолданушылар интерфейсі. Неғұрлым деңгей төмен болған сайын, соғұрлым жеңілдікпен пайдаланушы командаларды және әрекеттерді сол деңгейдегі модуль орындауы мүмкін. Ең алғаш мұндай әдістеме THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) жүйесін құрған кезде және 1968 жылы ол студенттермен пайдаланылды. Бұл жүйенің келесі деңгейлері болды:
- қолданушы интерфейсі;
- енгізу-шығаруды басқару;
- оператордың және консольдің байланыс құрылғысының драйвері;
- жадыны басқару;
- есептерді және процестерді жобалау;
- hardware.
ЖБ-нің микроядролық архитектурасының негізгі жағдайы (күйі). Микроядролық архитектура жоғарыда қарастырылған ЖБ-ні құрудың классикалық әдісіне альтернатива (балама) болады. Микроядролық архитектура, процес түрінде жүзеге асқан қолданушылар қосымшаларымен тең, ЖБ-нің құрамына кіретін жүйелік сервистер және микроядро арасындағы ЖБ-нің функцияларын таратады (бөледі).
Микроядроның құрамына кірмей қалған ядроның жоғарғы деңгейдегі функциялары және модульдері, қолданушылар режімінде жұмыс істейтін қарапайым қосымшалар түрінде хатталады. Төменгі суреттен монолиттік ядромен (1,а суретті қара) және микроядролық (1,б суретті қара) архитектурамен ЖБ-ні құрудағы негізгі айырмашылықтарды көруге болады.
1 сурет - Монолиттік ядромен және микроядролық архитектурамен жүйелік бағдарламалауды құру
Қолданушылар режімінде жұмыс істейтін ресурстар менеджерлерінің ЖБ-нің дәстүрлі утилиттерінен және ЖБ-нің жүйелік өңдеу бағдарламаларынан принципті айырмашылығы бар. Бірақ микроядролық архитектурада барлық бағдарламалық компоненттер қосымшалар түрінде хаттамаланған.
Қоршау ішкі жүйесі ЖБ-нің (АРІ) қосымшаларының интерфейсін орындайды. Ішкі жүйенің басқа интегралдық ішкі жүйелер деп аталатын түрлері, ЖБ-лер үшін қажетті функцияларды орындайды. Мысалы, Linux NT-дің қауіпсіздік жүйесінің үлкен бөлігі интегралдық ішкі жүйе түрінде орындалған. Сонымен, желілік серверлерде интегралдық ішкі жүйе сияқты орындалған.
ЖБ-нің микроядролық архитектурамен бұрын қарастырылған қасиеттерінің бәрі оны жасаушылардың қолдануы оның артықшылығының куәсі. Бірақ, бұрын айтылғандай, бұл сапаның бәрі ЖБ-нің өнімділігін кеміту арқасында пайда болады. Іс мынада, ЖБ-ні классикалық түрде ұйымдастырғанда жүйелік шақыру екі айырып-қосқышпен сүйемелденеді, ол микроядролық ұйымдастыруда айырып-қосқышпен сүйемелденеді.
Барлық ЖБ-ні құруда қарастырылған әдістердің әрқайсысының өздерінің артықшылықтары және кемшіліктері бар. Көп жағдайларда қазіргі заманғы ЖБ-лер осы әдістердің әртүрлі комбинацияларын пайдаланады. Мысалы, ЖБ ядросы микроядролық архитектураның элементтері бар монолиттік жүйені көрсетеді. Ядроның компиляциясы кезінде модуль деп аталатын ядроның өте көп компоненттерінің динамикалық жүктелуін және түсірілуін шешуге болады. Модуль жүктелген кезде оның коды жүйе деңгейінде жүктеледі және ядроның басқа бөліктерімен байланысады. Модульдің ішінде кез келген ядромен экспортталған функциялардың пайдаланылуы мүмкін.
Үйлесімдік түрлері кез келген ЖБ-ның нақты архитектуралық және функционалдық ерекшеліктері жүйелік бағдарламашыларға қатысты болуы керек және ол қарапайым қолданушыға таныс емес болуы мүмкін. Кейбір идеялар (мысалы, объектілі-бағытталған көзқарас) құрастырушыларға ғана белгілі және соңғы қолданушыға кері әсерін тигізеді. Көптеген қолданбалы орта концепциясы қолданушының көптен күткен мүмкіншілігін өзінің ЖБ бағдарламасында, басқа ЖБ және процесор үшін жазылған бағдарламада орындайды. Басқа ЖБ үшін жазылған ЖБ қосымшасы орындайтын мүмкіншілікті сипаттауы, яғни, ЖБ қасиеті үйлесімділік деп аталады.
Үйлесімділіктің бір-біріне ұқсамайтын екі принципі бар, оларды шатастырмау керек: екілік деңгейдегі үйлесімділік және бастапқы мәтін деңгейіндегі үйлесімділік. Екілік түріндегі кодтар және деректері бар қосымша файлдар компьютерде орындаушы файлдар түрінде сақталады. Орындалушы бағдарламаны бір ЖБ ортасында жұмыс істейтін және оны басқа ЖБ ортасында орындағанда іске қосқан жағдайда орындалуын екілік үйлесімділік деп атаймыз.
Екілік немесе бастапқы мәтін үйлесімділік қасиеті бар ЖБ көптеген факторларға байланысты болады. Олардың ең тәуір, негізгісі – ЖБ жұмыс істейтін процесор архитектурасы. Екілік үйлесімділікке жету үшін төмендегі шарттар орындалуы керек:
- ЖБ деректерін құптайтын, қолдайтын, құрамында бағдарлама қосымшалары бар АРІ функциясының шақырылуы.
- Орындаушы файл қосымшаларының ішкі құрылысы ЖБ деректерін орындайтын файл құрылысымен сәйкес болуы керек.
Эмулятордың тағайындалуы – процесордың әрбір екілік инструкциясын кезекпен таңдауында болып табылады, мысалы, Intel қандай әрекетті тапсыратынын анықтау үшін бағдарламалық әдіспен оның кодын табады, ал содан кейін процесордың инструкциясында жазылған ішкі бағдарлама эквивалентін орындайды, мысал ретінде Motorola-ны айтуға болады.
Микроядроның концепциясын қолданатын көптеген қолданбалы ортаны құру әдісі де бар. Бұл жағдайда барлық қолданбалы орта үшін ЖБ-нің базалы, жалпы механизмін білу өте қажет. Микроядролық архитектураға сәйкес ЖБ-нің барлық функциялары микроядро және қолданушының серверлі режімі арқылы жүзеге асады. Әр қолданбалы орта қолданушының жеке сервер ретінде де безендірілетінін және базалық механизмдерді қоспайтынын естен шығармау қажет. АРІ пайдалануымен бірге, орындалушы файлдар (қосымшалар) микроядро арқылы қолданбалы ортадағы жүйелік шақырудан сұрайды. Қолданбалы орта сұранысты өңдейді, қолданбалы ортада сұраныстың орындалуы кезінде ЖБ-нің базалық механизміне сұраныс жасауға тура келеді.
Көптеген қолданбалы ортаны құрастыру жағдайында микроядролық архитектураның барлық артықшылығы мен кемшіліктері бар, олар:
- микроядролық ЖБ-нің кең таралуының арқасында қолданбалы ортаны қосу немесе алып тастау;
- қоданбалы ортаның біреуі істен шығып қалса қалғандары жұмыс істеп тұра береді, яғни, сенімді және тұрақты;
- микроядролық ЖБ-нің төменгі өнімділігі қолданбалы ортаның жұмыс істеу жылдамдығына әсер етеді, яғни файлдардың жылдам орындалуына;
Әрбір жүйелік бағдарламалау кейбір мәліметтермен жұмыс жасайды, олар басқару әдістері мен бірігіп олардың қасиетін сипаттайды.
Достарыңызбен бөлісу: |