- •Қазақстан Республикасының Білім және Ғылым Министірлігі «л.Н. Гумилев атындағы Еуразия ұлттық университеті» шжқ рмк _Ақпараттық технологиялар_ факультеті
- •Силлабус
- •Пәнді оқытудың мақсаты
- •Негізгі және қосымша әдебиет тізімі
- •Оқу нәтижелерін бағалау және бақылау
- •8 Оқу пәнінің саясаты
- •Пән бойынша глоссарий және пәннің ұғымдық аппаратымен жұмыс бойынша жалпы әдістемелік нұсқаулар;
- •3. Оқу пәнінің тақырыптары бойынша дәріс конспектісі және дәріс курсын оқу бойынша әдістемелік нұсқау;
- •Желі операциялық жүйелері.
- •Казіргі кезендегі операциялық жүйелерге қойылған талаптар
- •Ядро артықшылық режимінде.
- •4. Оқу курсы мен тақырыпқа арналған міндетті және қосымша әдебиет пен дереккөздер тізімі;
- •6. Еңбек көлемі көрсетілген білім алушының өздік жұмысы үшін тапсырмалар және олардың орындалуы бойынша әдістемелік нұсқау.
Ядро артықшылық режимінде.
Қолданбалар орындауын сенімді басқару үшін ОЖ-лер қолданбаларға қарағанда белгілі артықшылыққа ие болуы қажет. Болмаса коррект істемейтін қолданба ОЖ жұмысына араласып оның кодтар бір болігін бұзуы мүмкін. Өндірушілердің барлық қызметтері зая кетеді, егер олардың шешімдері қолданбалардан қорғанмаған болса, қандай олар элегант және эффектив болмасын. Операциялық жүйе мультипрограммалық режимінде қолданбалардың компьютер ресурстарына таласқан кезде арбитр ролін орындау үшін ерекше мүмкіндіктеріне де ие болуы қажет. Бірде бір қолданба ОЖ-нің хабарысыз жад қосымша облыстарына ие болуы, процессорды ажыратылған уақыттан артықша иелеп тұруы, біргелікте пайдаланатын сыртқы құрылғыларды ерекше басқаруы мүмкін емес.
ОЖ артықшылықпен қамтамасыз ету арнайы аппараттық сүйемелдеуісіз мүмкін емес. Компьютер аппаратурасы ең кемінде жұмыстың екі режимін сүйемелдеуі керек – пайдаланушы режимі (user mode) және ядро режимі (kernel mode) деп аталушы артықшылық режим, немесе супервизор режимі (supervisor mode). Операциялық жүйе немесе оның бір бөлігі артықшылық режимда, ал қолданбалар пайдаланушы режимінде істейді деп ойластырылады.
Ядро операциялық жүйенің барлық негізгі функцияларын орындағандықтан ядро жиі артықшылық режимінде істейтін ОЖ-ның бөлігі болады (3.3 суреті). Кейбір кездері осы қасиеті – артықшылық режимінде істеу – «ядро» ұғымының анықтамасы болып алынады.
Колданбалар бағынышты жағдайға пайдаланушы режимінде кейбір критикалық командаларды орындаудан бастарту жолымен келтіріледі. Олар – процессорды бір есептен басқасына көшіру, енгізу-шағару құрылғыларын басқару, жедел жадты басқару амалдары. Кейбір инструкцияларды орындау шартсыз бастартқызылады (айқын олар ішіне артықшылық режимге өту кіреді), ал кейбіреулері белгілі шарттар орындалғанда істетілуі мүмкін. Мысалы, қолданбаларға енгізу-шығару инструкцияларына жету тосылған болу мүмкін барлық қолданбалар және операциялық жүйе мәліметтері сақталған қатты диск контроллеріне жеткен кезде, бірақ кетпе-кет портына жолы ашылған болу мүмкін ол кейбір қолданба үшін ажыратылған болсада. Маңызды, критикалық инструкцияларды орындау толығымен ОЖ басшылығында болуы, сол басшылық пайдаланушы режимінде шартсыз мүмкін болмаған инструкциялар жиыны есебіне қамтамасыз етіледі.
Осы жолымен ОЖ-нің артықшылықтары жадқа жетуде де қамтамасыз етіледі. Мысалы, қолданбаға жадқа жету инструкциясы рұхсат етіледі егер инструкция қолданбаға ОЖ ажыратқан жадқа жетсе, рұхсат етілмейді егер жадта ОЖ және басқа қолданбалар жайласқан болса. ОЖ-нің жадқа жетудің тола контролі инструкция немесе жадты қорғау механизмдерінің инструкциялар жиындарын (мысалы Pentium процессорлеріндегі жад дескрипторының көрсеткіштер кестелерін) орындау артықшылық режимда рұхсат етілсе.
Өте маңызды, жад қорғау механизмдерін операциялық жүйе өзінің жад облыстарын қорғауға жүмсауы мен ОЖ қолданбаларға ажыратқан жадтар облыстарын қалған қолданбалардан қорғауында. Әрбір қолданба өзінің адрестік кеңістігінде жұмыс орындайды деп айтылады. Осы қасиет корректсіз істеген қолданбаны өзінің жад облысында ерекшелеу мүмкіндігін жасап оның қателері басқа қолданбаларға және ОЖ-ға әсер етпейді.
Аппараттық амалға асырылатын артықшылықтардың деңгейлер санымен ОЖ сүйемелдейтін артықшылықтар деңгейлер саны арасында турасымен сайкестік жоқ. Intel компаниясы процессорлері қамтамасыз ететін төрт деңгей негізінде OS/2 операциялық жүйесі үш деңгейлі артықшылықтар жүйесін құрады, ал Windows NT, UNIX операциялық жүйелері екі деңгейлі жүйемен шектеледі.
Екінші жағынан егер аппаратура артықшылықтардың екі денгейін қамтамасыз етсе, оның негізінде программалау жолымен Кез келген көпдеңгейлі артықшылықтар жүйесін құруға болады.
Бұл жүйе, мысалы, иерархиялы бірнеше артықшылықтарды сүйемелдеуі мүмкін. Бірнеше артықшылықтар деңгейлерінің бар болуы операциялық жүйелер модулдері және қолданбалар арасындағы өкілеттілікті нәзік таратуға мүмкіндік жасайды. Операциялық жүйенің ішінде коп және кем артықышылықтарға ие бөлімдерінің пайда болуы ОЖ-нің программалық кодтарының ішкі қателерге табандылығын арттырады, себебі мұндай қателер белгілі артықшылыққа ие модулдер ішінде ғана таралады. Қолданбалы модульдер ортасында артықшылықтардың дифференциялануы күрделі қосымша комплекстерды жаратуға мүмкіндік жасайды. Олардың жоғары деңгейлі бөлімдері төмен деңгейлі бөлімдерінің мәліметтеріне жете алып оларды басқара алады.
Процессордың екі артықшылық режимдері негізінде ОЖ ресурстардың күрделі қорғау жүйесін құруы мүмкін, соның мысалы етіп файлдар және каталогтар ды қорғау жуйесін алса болады. Мұндай жүйе Кез келген пайдаланушыға әр бір файлға және каталогка жету белгіленген құқықтарын орната алады.
Ядроның артықшылық режиміне өту жолымен операциялық жүйе табандылығының артуы жүйе шақыруларының орындалуы баяулаумен байланысты болады. Артақшылық режиміндегі ядроны жүйелі шақыруы процессорды пайдаланушы режимінден артықшылық режиміне өтуге алып келеді, ал қолданбаға қайтқанда процессор артықшылық режимінен пайдаланушы режиміне өткізіледі (рис. 3.4). Барлық процессорлер түрлерінде режимды өзгерту жолымен алмасу процедурасына өту баяу орындалады, режимін өзгертпеген процедураға қарағанда.
Ядро артықшылығына және қолданбалардың пайдаланушы режиміне негізделген ОЖ архитектурасы қлассикалық болып қалды. Одан көп әммебап ОЖ пайдаланады, сонымен UNIX, VAX VMS, IBM OS/390, OS/2 лер де, және белгілі модификациялармен Windows NT –де.
Кейбір жағдайларда ОЖ өңдеушілері осы классикалық архитектура вариантынан шегініп ядро және қолданбалардың жұмысын бір түр режимде ұйымдастырады. Сонымен Novell компаниясының NetWare арнайы кеңінен таныс ОЖ-сі Intel x86/ Pentium процессорының артықшылығын ядро жұмысында да өзінің арнайы қолданбалардың – NLM жүктелетін модулдерінің да жұмыстарында қолданады (рис. 3.5). ОЖ-нің мұндай құрылымында қолданбалардың ядроға ұсынысы жылдам орындалады, себебі режимдер арасында қайтадан қосу болмайды, бірақ коррект істемейтін қолданбалардан ОЖ модулдері иелеген жадтың сенімді аппараттық қорғауы жоқ болады. NetWare жасаушылары өзінің ОЖ-сі сенімділігінің төмендеуіне әдейі барған, себебі жұмсалатын арнайы қолданбалар саны шектелген болғандықтан оларды әрбірін мұқият өңдеу жолымен бұл архитектуралық кемшілікті компенсация етуге мүмкін болған.
Бір режимде артықшылық режимін сүйемелдемейтін процессорлер үшін жасалған ОЖ-лер ядросы және қолданбалары жұмыс орындайды. Осындай процессор түріндегі IBM фирмасы дербес компьютерлерінің негіздерін салған кең таралған Intel 8088/86 процессоры болды. Осы компьютерлер үшін Microsoft фирмасы жасаған MS-DOS ОЖ-сі msdos.sys және io.sys жүйе ядросын жасаған екі модулден құрастырылған еді. Осы модулдерге жүйелік шақыруларымен command.com командалық интерпретатор, жүйелік утилиталар және қолданбалар үндеу етер еді. MS-DOS архитектурасы 3.2 суретте келтірілген ОЖ архитектурасына сай келеді. Коррект жазылмаған қолданбалар MS-DOS (және MSX, CP/M оған ұқсас дербес компьютерлердің ОЖ-лер) негізгі модулдерін бұзуы мүмкін болсада, кейбір кездері мұндай болғанда, бірақ MS-DOS қолдану облысы ОЖ сенімділігіне жоғары талаптарды қоймаған да еді.
Ескертпе
Кейінгі Intel процессорлерінің версияларында (80286 дан бастап) артықшылық режимінде істеу мүмкіншілігінің пайда болуы MS-DOS-ты жасаушылары жағынан пайдаланылмады. Бұл ОЖ осы түрдегі процессорлерде әрдайым реал режим деп аталушы режимде жұмыс орындайды. Бұл режимде 80286 процессоры 8086/88 процессорының жұмысын эмуляция етеді. Реал режимды пайдаланушы режимінің синонимы, ал артықшылық режимі оның альтернативасы деп есептеуге болмайды. Реал режим процессорлер кейінгі моделдерінің ертенгі 8086/88моделдермен сай келуі үшін амалға асырылған еді. Оған альтернатива етіп процессор қорғалынған режим қарастырылады. Мұнда кейінгі моделдер барлық мүмкіндіктері амалға асырылып сонымен төрт деңгейлі артықшылық режимі да.
Дәріс № 14
ОЖ-нің көп қабатты құрылымы (структурасы).
Ядро негізінде істейтін ОЖ-ні үш иерархиялық жайласқан қабаттардан құрастырылған жүйе ретінде қарастыруға болады: төменгі қабатты аппаратура құрастырады, ортадағысы – ядро, ал утилиталар, өңдеуші программалар және қолданбалар – жоғары қабат болады . Есептеу жүйесінің қабатты структурасын концентрик айналалар көрінісінде бейнелеу мүмкін. Сонымен әр бір қабат шекарадас қабатпенғана әсер етуі мүкіндігіндігін көрсетіледі. Ақиқаттан ОЖ-нің Мұндай ұйымдастырылуы қолданбалардың аппаратурамен тікелей қарым-қатынас ете алмай ядро қабаты жәрдемінде ғана қарым-қатынас ете алады.
Қөпдеңгейлі жақындау универсал болып Кез келген күрделі жүйелердің декомпозиция етуінің эффектив әдісі болып табылады, сонымен программалардың да. Осы жақындауға байланыс жүйе қабаттар иерархияларынан құрастырылады. Әрбір қабат жоғары қабатқа оған қандайда бір функциялар жиынын орындап қызмет етеді. Бұл функциялар жиыны қабаттар ара интерфейсты жасайды. Төмендегі қабаттар функциялары негізінде кейінгі иерархиялы жоғарыдағы қабат өзінің күрделі және қуатты өзінің функцияларын жасайды. Олар өз кезегімен жоғары деңгейдегі қабаттар үшін примитив болып қуатты функцияларын жасау үшін жұмсалады. Қатал ережелер қабаттар арасындағы қарым-қатынасқа тиісті болып қабат ішінде модульдер арасында Кез келген күйде болуы мүмкін. Ерекше модуль өзінің жұмысын өзі орындауы, немесе өзінің қабатындағы басқа модулге немесе төмендегі деңгейдегі модульге қабат арасындағы интерфейс жәрдемімен үндеуі мүмкін.
Жүйенің мұндай ұйымдастырылуы көп лайықтылықтарға ие. Ол жүйені жетілдіруді едәуір оңайлатып алдын ала қабаттардың функцияларын төменнен жоғарыға және қабаттар ара интерфейстерін анықтауға мүмкіншілік жасайды. Кейіннен төменнен жоғарыға қарап оларды амалға асырғанда жайлап қабаттар функцияларының қуаттарын асыру мүмкіндіктеріне алып келеді. Одан басқа жүйені модернизация еткенде қабаттар ішіндегі модульдерді өзгертіп басқа қабаттарда өзгерту қажет болмайды, егер модулдің өзгеруі қабаттар ара интерфейсты өзгертпесе.
Ядро күрделі көпфункционалды комплекс болғандықтан көпқабатты жақындау ядро структурасына да таралады. Ядро төмендегі қабаттардан құрастырылуы мүмкін:
ОЖ-ні аппараттық сүйемелдеу саймандары. Осы кезге дейін ОЖ туралы программалар комплексы деп қаралған еді, бірақ ОЖ-нің кейбір функциялары аппараттық саймандар жәрдемінде де орындалына алады. Сондықтан кейбір кездерде ОЖ анықтамасын программалар және аппараттық саймандар жиыны деп те кездесуге болады (3.8 сурет). Табиғи ОЖ-ге компьютердің барлық аппараттық саймандарын енгізбейді, ал тікелей есептеу процесстерін ұйымдастыруда қатысатын аппараттық саймандар қарастырылады, яғни артықшылық режимін, үзу жүйелерін, процесстер контекстын қайтып қосатын, жад облыстарын қорғайтын саймандар.
Машина бағынышты ОЖ компонентері. Бұл қабатты компьютер аппараттық платформасының ерекшеліктерін өз ішіне алатын программалық модулдер ұйымдастырады. Идеал жағдайда бұл қабат ядроның жоғарғы қабатынан аппараттың ерекшеліктерін толығымен экрандайды (жасырады). Бұл жағдай жоғары қабаттарды машинаге байланбаған барлық түрдегі аппараттық платформалар үшін бір түр нақты ОЖ-мен сүйемелденетін модульдерден құрастыруға мүмкіндік жасайды. Экрандырушы қабатқа мысал етіп Windows NT ОЖ-сінің HAL қабатын көрсетсе болады.
Ядроның негізгі механизмдері. Бұл қабат ядроның ең примитив амалдарын орындайды: процесстер контекстерын программалық қайтадан қосу, үзулердің диспетчеризациясын, беттерді жадтан дискіге көшіру және кері ж.т.б. Осы қабаттың модулдері ресурстардың үлестіру шешімдерін қабылдамайды, олар жоғары деңгейдегі қабаттарда қабылдаған шешімдерді амалға асырады, сондықтан оларды жоғары қабаттағы модулдер орындау механизмдері деп атауға мүмкін. Мысалы, осы мезетте орындалып тұрған А ағымды процессті үзіп B Процессті бастау шешімін жоғары қабаттағы процесстер менеджері қабылдайдыда негізгі механизмдер қабатына ағымды процесс контекстінен B процесс контекстіне өту директивасы ұзатылады.
Ресурстар менеджері. Бұл қабат қуатты функционал модулдерден құрастырылып есептеу жүйенің негізгі ресурстарын басқаратын стратегик мәселелерді амалға асырады. Әдетте бұл қабатта процесстер, енгізу-шығару, файлдық жүйелер және оперативтік жад менеджерлері (диспетчерлер деп те аталады) жұмыс орындайды. Менеджерлерге ажырату басқаша да болуы мүмкін, мысалы файлдық жүйе менеджері енгізу-шығару менеджерімен бірлестіріледі, ал пайдаланушылардың жүйеге енуін басқару сонымен ерекше объекттерге жету ерекше қауіпсіздік менеджеріне тапсырады. Әр бір менеджер еркін және пайдаланылған керекті түрдегі ресурстарын есепке алып отырып керек кезінде қолданбалардың сұранысыны байланысты жоспарлап тұрады. Мысалы, виртуал жад менеджері оперативтік жадтағы беттерді дискіге және кері көшірулерді басқарады. Менеджер беттерге үндеу интенсивтігін, олардың жадда болу уақытын, мәліметтерді қолданатын процесстер жағдайларын және көп түрлі параметрлерді қүзетіп уақыт уақтымен олардың негізінде қайсы беттерді жадтан шығару қайсыларын жүктеу керек екенін шешіп тұру керек. Қабылданған шешімдерді орындау үшін менеджер төменгі негізгі қабаттағы механизмдерге нақты қайсы бетті шығару, қайсысын енгізу керектігін үндейді. Менеджерлер ішкі қабатында тығыз байланыстар болып олар процессті орындау үшін бір кезде бірнеше ресурстарына – процессорге, жад облысына нақты файлға немесе енгізу-шығару құрылғыға жету фактын көрсетеді. Мысалы, Процессті жасаған кезде процесстер менеджері жад менеджеріне үндеп одан процесс кодтары және мәліметтері үшін керекті жад облысын сүрап алады.
Жүйелі шақырулардың интерфейсі. Бұл қабат ядроның ең жоғары қабаты болып қолданбалармен және жүйе утилиталарымен байланыс жасайды. Бұл қабат ОЖ-нің қолданбалық программалық интерфейсін құрастырады. Жүйелік шақыруларды күтуші API функциялары жүйе ресурстарына ыңғайлы және компакт формада олардың физикалық жайласу деталдерін көрсетпей жетуді жасайды. Мысалы, UNIX ОЖ-сінде fd = open("/doc/a, txt", ORDONLY) жүйелік шақыру жәрдемінде қолданба /doc каталогында жайласқан a.txt файлын ашады, ал read(fd. buffer, count) жүйелі шақыру жәрдемінде осы файлдан едәуір байттар санын оқып buffer деп аталушы жад облысына жазып қояды. Осындай комплекс амалдарды орындау үшін жүйелік шақырулар ресурстар менеджерлері қабаты жәрдеміне үндейді, сонымен бір жүйелік шақыруларды орындау үшін бірнеше үндеу қажет болуы мүмкін.
ОЖ ядросының келтірілген мұндай қабаттарға бөлінуі жеткілікті шартты да болады. Реал жүйеде қабаттар саны және олар арасында функциялардың таратылуы басқа да болуы мүмкін. Бір түрдегі аппараттық платформаға арналған, мысалы, NetWare ОЖ-сінде, машина-байланысты модулдер әдетте ерекшеленбей негізгі механизмдермен және бір бөлігі менеджер ресурстарымен бірлесіп кетеді. Негізгі механизмдер де ерекше қабатқа хатталмауы де мүмкін. Мұндай кезде ресурстарының менеджерлері ресурстарды жоспарлаумен бірге өздерінің жоспарларын өздері амалға асырады.
Кері жағдайда болуы мүмкін, ядро көп қабаттардан құрастырылады. Мысалы ресурстар менеджерлері ядроның бір қабаты болып өз кезегімен көп қабатты структураға ие болуы мүмкін. Алдын ала бұл енгізу-шығару менеджеріне тиісті, оның төменгі қабаты құрылғылардың драйверінен құрылған болып, мысалы қатты диск немесе желі адаптерінің драйверлері, жоғарғы қабаттар информацияны логикалық ұйымдастыруымен жұмыс орындайтын файлдық жүйелер немесе желі қызметтерінің протоклдарынан құрастырылады.
Реал ОЖ-де қабаттар өзара әсер тәсілдері жоғарыда баяндалған схемадан таюы мүмкін. Ядро жұмысын жылдамдату мақсатында кейбір кездерде жоғары қабаттан төменгі қабаттар функцияларына тікелей арадағы қабаттарға қарамастан үндеу мүмкін. Осындай дұрыс емес өзара әсерге типтік мысал етіп жүйелі шақырудағы бастапқы өңдеуді көрсетсе болады. Көп аппараттық платформаларда жүйелік шақыруды амалға асыру үшін программалық үзу инструкциясы жұмсалады. Осымен қолданба амалда негізгі механизмдер қабатында жайласқан үзулерді бастапқы өңдейтін модулін шақырады, ал бұл модуль жүйелі шақырулар қабатынан керекті функцияны шақырады. Жүйелі шақырулар функциялардың өздері де кей кезде иерархиялық қабаттар субординациясын тікелей ядро негізгі механизмдеріне үндеп бұзады.
Ядроның қабаттар санын таңдау жауапты және күрделі жұмыс: қабаттар саны көбейуі ядро жұмыс жылдамдығын қабаттар ара байланыстар есебіне төмендетеді, ал қабаттар санының кемеюі жүйенің кеңейтілуін және логикасын төмендетеді. Әдетте эволюциялық даму ұзын жолын өткен ОЖ-лер, мысалы UNIX көп версиялары көп болмаған анық ажыратылған қабаттарға ие тәртібсіз құрастырылған ядроға ие болады, ал салыстырмалы жас ОЖ-лер ядролары, Windows NT –ге ұқсас, көп қабаттарға бөлініп олар ара қатынасу жоғары деңгейде формалданған.
Дәріс №15 Микроядролық архитектура.Концепция
Микроядролық архитектура ОЖ-нің классикалық құруына альтернатив әдіс болып табылады. Классикалық архитектура деп бұл жағдайда жоғарыда қаралған ОЖ-нің структуралық құрылымына айтылады. Оған сай ОЖ-нің барлық негізгі функциялары көпқабатты ядроны құрастырып артықшылық режимінде орындалады. Сонымен ОЖ-нің кейбір көмекші функциялары қолданба көрінісінде жасалып пайдаланушы режимінде орындалады пайдаланушы программаларына ұқсас (жүйелік утилиталарға немесе өңдеуші программаларға айланып). Пайдаланушы режимінің әрбір қолданбасы өзінің адрестік кеңістігінде орындалып басқа қолданбалар әсерінен қорғанған болады. Артықшылық режимінде орындалатын ядро коды қолданбалар жадтарының облыстарына жете алады, бірақ өзі толығымен олардан қорғанған. Қолданбалар ядроға жүйелі функцияларды орындау сұраныстармен үндейді.
Микроядролық архитектурасының маңызы мынадай. Артықшылық режимде ОЖ-нің өте кіші, микроядро деп аталушы, бөлімі жұмыс істеуге қалдырылады (3.10 сурет). Микроядро ОЖ-нің қалған бөлімдерінен және қолданбалардан қорғалған. Микроядро құрамына әдетте машина-байланысты модулдер, сонымен ядроның негізгі (бірақ барлығыны емес) функциялары енгізіледі. Бұл функциялар процесстерді басқару, үзулерді өңдеу, виртуал жадтарды басқару, мәліметтерді тарату, құрылғылар регистрлерін жүктеу немесе оқу мен байланысты енгізу-шығару құрылғыларды басқару амалдар болады. Микроядро функциялар жиыны әдеттегі ядро негізгі функциялары механизміне сай келеді. ОЖ-нің мұндай функцияларын пайдаланушы кеңістігінде орындау қиын егер мүмкін болмаса.
Қалған барлық жоғары деңгейлі ядро функциялары пайдаланушы режимінде істейтін қолданба көрінісінде пішімделеді. Жүйелік функциялардың қайсы бірін артықшылық режимге қайсы бірін пайдаланушы режиміне өткізу туралы бір мәнді шешім жоқ. Жалпы жағдайда әдеттегі ядро үзіліссіз бөлімі болған ресурстердің көп менеджерлері – файлдық жүйе, виртуал жад және процесстерді басқаратын қосалқы жүйелер, қорғану менеджері ж.т.б. перифериялық модулдерге айналдырылып пайдаланушы режимінде орындалады.
Пайдаланушы режимінде істейтін ресурстар менеджерлері әдеттегі утилиталардан және ОЖ өңдейтін программалардан принципиал айырмашылыққа ие, микроядролық архитектурада барлық бұл программалар компоненттері қолданба күйінде пішімделседе. Утилиталар және өңдеуші программалар негізінде пайдаланушылар жағынан шақырылады. Бір қолданбаға басқа қолданба функциялары (процедуралары) орындалуы керек болған жағдайлар өте кем кездеседі. Сондықтан классикалық архитектураға ие ОЖ-лерде бір қолданба басқа қолданба функцияларын шақыру механизмдері жоқ.
Бүкіл басқа жағдай келіп шығады егер қолданба пішімінде ОЖ-нің бір бөлімі жасалса. Анықтама бойынша мұндай қолданбаның негізгі мақсаты басқа қолданбалардың сұраныстарын орындау, мысалы, процесстерді жасау, жадты ажырату, ресурске жету құқығын тексеру ж.т.б. Сондықтан пайдаланушы режиміне шығарылған ресурстер менеджерлері ОЖ-нің серверлері деп аталады, яғни олардың негізгі мақсаты жергілікті модулдер және ОЖ-нің басқа модулдерінің қазметтерін орындау. Айқын, микроядро архитектурасын амалға асырудың керекті шарты операциялық жүйеде бір процесс процедураларын басқасынан шақырудың оңай және эффектив әдісі болуында. Осындай механизмді сүйемелдеу микроядроның басты мәселелерінің бірі болып табылады.
ОЖ функцияларына үндеу серверлер күйінде пішімделген болып схематик төмендегідей көрінеді (3.11 сурет). Қолданбалық программа немесе ОЖ-нің басқа компоненты клиент болып тиісті серверге хабарды жіберіп қандайда бір функцияны орындауын сұранады. Хабарлардың қолданбалар арасында тікелей таратылуы мүмкін емес, себебі олар адрестық кеңістігі бір-бірінен изоляцияланған. Артықшылық режимінде істейтін микроядро осы қолданбалардың әр бірінің әдрестік кеңістіктеріне жете алады, сондықтан ол делдал болып қызмет ете алады. Микроядро алдын ала керекті серверге шақырылатын процедура атына және параметрлеріне ие хабарды жібереді, кейіннен сервер сұралған операцияны орындайды, содан кейін ядро клиентке нәтижені басқа хабар жәрдемінде жеткізеді. Сонымен ОЖ-нің микроядро жұмысы таныс клиент-сервер моделіне сай келіп транспорттық ролін микроядро орындайды.
Микроядро архитектурасының үстемділігі және кемшіліктері.
Микроядро концепциясына негізделген ОЖ-лер жоғары деңгейде осы кезгі ОЖ-лерге қойылған талаптардың көбісін қанағаттандырады: көшірілуі, кеңейтілінуі, сенімділігі мен және таратылған қолданбаларды сүемелдеу мүмкіншіліктерімен. Осы жетістіктері үшін өнімділігінің төмендеуімен төлеу керек болады, осы қасиеті микроядро архитектурасының негізгі кемшілігі деп қаратстырылады.
Көшірілуінің жоғары деңгейі машина-бағынышты барлық коды микроядрода изоляцияланған болып жаңа процессорға көшірілгенде кем өзгерістерді енгізу керек боладыда және олар барлығы бірге жиылған.
Кеңейтілінуі микроядролық ОЖ өте тиісті болады. Әдеттегі жүйелерде бір қабатты жою және алмастыру қабаттар арасындағы интерфейстердің өте көптігіне және шекараларының дәл болмағандығы үшін өте қиынға соғады. Жаңа функцияларды қосу барларын өзгерту ОЖ-ні жақсы білуді және көп уақыт талап етеді. Сонымен бірге микроядро интерфейстерінің анық берілуі және санының кемдігі ОЖ-нің тәртібті өсуіне және эволюциясына алып келеді. Жаңа қосалқы жүйенің қосылуы жаңа қолданбаны жасауды талап етіп микроядро бұтіндігін бұзбайды. Микроядролық структура қосу мен бірге операциялық жүйе компоненттерін кемейтуге де мүмкіндік жасайды, бұл есе пайдалы да болуы мүмкін. Мысалы барлық пайдаланушыларға да қорғану саймандары, немесе таралған есептерді сүйемелдеу қажет болмауы мүмкін, әдеттегі ядродан оларды алып тастау мүмкін болмайдыда. Әдетте традициялық ОЖ-лер ядроға сыртқы құрылғылар драйверлерін динамикалық қосу және алып тастау мүмкіндігіне ие - компьютерге қосылатын сыртқы құрылғылардың жиі өзгеріп тұруы себебі ядро енгізу-шығару қосымша жүйесі драйверлерді компьютер жұмыс орындап тұрған кездеде жүктеу және шығару мүмкіндігіне ие, бірақ мұның үшін ол арнайы жасалады (мысалы, UNIX тегі STREAMS немесе Windows NT дегі енгізу-шығару орталары). Микроядролық жақындадуда ОЖ-нің конфигурациялануы еш қандай проблемалар тудырмайды – бастапқы жүйенің конфигурациясын өңдейтін файлды өзгертіп немесе керек болмаған серверлерды әдеттегі әдіспен тоқтатып қойса болады.
Микроядролық архитектураны қолдануы ОЖ сенімділігін жоғарылатады. Әр бір сервер ерекше процесс етіп өзінің жад облысында жасаладыда сонымен ОЖ-нің басқа серверлерінен қорғалады. Бұл әдеттегі ОЖ-лерде күзетілместен ядро модулдері бір-біріне әсер етуі мүмкін. Егер ерекше сервер тоқтап қалса ол қалған серверлерді тоқтатпастан және бұзбастан қайтадан іске қосылуы мүмкін. Одан басқа серверлер пайдаланушы режимінде орындалғандықтан олар тікелей аппаратураға жете алмайдыда микроядро сақталған және істеп тұрған жадты өзгерте алмайды. ОЖ-нің сенімділігін арттыратын тағыда бір потенциал мүмкіншілік әдеттегі ядроға қарағанда микроядро код көлемінің кемеюі. Бұл программалау қателіктерінің эхтімалдығын төмендетеді.
Микроядролық модель таратылған есептерді орындауға қол келеді, себебі желіге ұқсас механизмдерді қолданады: хабарларды жіберу жолымен клиенттер және серверлер өзара әсер етеді. Микроядролық ОЖ серверлері бір және бірнеше түрлі компьютерде жұмыс орындай алады. Бұл жағдайда қолданбадан хабарды алған соң микроядро оны өзі өңдеп жергілікті сервеге жіберуі мүмкін немесе желі арқылы басқа компьютерде істеп тұрған микроядроға жіберуі мүмкін. Таралған өңдеуге өту ОЖ жұмысында өте кем өзгерістерді талап етеді – жергілікті транспорт желілікке өткізіледі.
Өнімділік. ОЖ-нің классикалық ұйымдастырылуында жүйелік шақырулардың орындалуы режимдердің екі рет алмасуымен амалға асырылады, ал микроядролық ұйымдастырылуында – төрт рет. Сонымен бірге, микроядро негізіндегі ОЖ басқа тең жағдайда классикалық ядроға қарағанда өнімділгі төмен болады. Осы себебке байланыс микроядролық жақындау жариялануына қарамастан кең таралмады.
Осы кемшіліктің салмақты екендігі Windows NT – нің даму тарихы көрсете алады. 3.1 және 3.5 версияларында терезелер диспетчерлері, графикалық кітапханасы және жоғары деңгейлі графикалық құрылғылардың драйверлері пайдаланушы режиміндегі сервер құрамына енгізілген еді және осы модульдер функцияларының шақырылуы микроядро схемасында амалға асырылар еді. Бірақ Windows NT жетілдірушілері мұндай графикалық интерфейс функцияларына үндеу механизмі жиі қолданатын қолданбаның жұмысын баяулатуын және өткір конкуренттік күресте зайыптығын өте тез түсінді. Нәтижеде Windows NT 4.0 версиясына өте маңызды өзгерістер енгізілді – жоғарыдағы атап өтілген барлық модулдер ядроға енгізілді, сонымен бұл ОЖ идеал микроядро архитектурасынын ұзақтасты, бірақ оның өнімділігі кескін артты.
Бұл мысал ОЖ-нің микроядролық жақындауды қолданамын деген жетілдірушілердің кездесетін басты проблеманы кескіндетеді – микроядроға нені енгізу керек нені пайдаланушы кеңістігіне шығару керек. Идеал жағдайда микроядро хабарларды жеткізетін, аппаратурамен өзара әсер ететін саймандардан құрастырылуы мүмкін, сонымен артықшылық қорғау механизмдеріне жету саймандарынан да. Бірақ көп жетілдірушілер әр сапарда ядро функцияларын минимизация ету принципын қолдана бермейді, жиі өнімділікті асыру мақсатында. Нәтижеде ОЖ-нің реализациясы спектр күйінде болып бір шекарасында минимал мүмкін болған микроядроға ие жүйелер, ал басқа шегінде – ядросы көп функцияларды орындайдын Windows NT ұқсас жүйелер.
ОЖ-лердің көп архитектуралық ерекшеліктері жүйелік программистерге тікелей тиісті болса көп көлданбалық орталар концепциясы ақырғы пайдаланушылар талаптарымен байланыс – ОЖ-нің басқа ОЖ-лер үшін жазған қолданбаларды орындай алуы. ОЖ-лердің мұндай қасиеті сай келуі деп аталады.
Екілік сай келуі және бастапқы тексте сай келуі
Екілік деңгейде және бастапқы текст деңгейіндегі сай келулерін ажырату қажет. Қолданбалар әдетте ОЖ-де орындалатын файл түрінде кодтардың және мәліметтердәі екілік санақ жүйесіндегі бейнелері түрінде сақталады. Екілік сай келуі орындалатын программаны алып басқа ОЖ-де орындата алуымен амалға асырылады.
Бастапқы текст деңгейінде сай келуі үшін тиісті компилятордың программа орындалатын компьютердің программалық қамтамасыз етуінде бар болуын талап етеді, сонымен кітапхана деңгейінде және жүйелік шақыруларда да. Сонымен бар бастапқы текстерді қайтадан жаңа орындалатын модульге компиляция ету қажет.
Бастапқы текстер деңгейінде сай келуі осы текстері бар болған қолданбаны жетілдірушілер үшін маңызды. Бірақ ақырғы пайдаланушылар үшін практикада екілік сай келуі маңызды, себеббі осы жағдайда олар бір коммерциялық өнімден түрлі ОЖ-лерде және түрлі машиналарыде пайдалана алады. MS DOS үшін өз кезінде пакет (мысалы, Lotus 1-2-3) сатып алған пайдаланушыға оған жаққан осы пакетты қандайда бір өзгеріссіз мысалы Windows NT басқаруында істейтін жаңа машинаде орындалу мүмкіндігі маңызды.
Жаңа ОЖ бар болған ОЖ-лер мен екілік немесе бастапқы тексте сай келуі көп факторларға байланыс. Солардың ең бастысы — жаңа ОЖ істейтін процесор архитектурасы. Егер процесор сол командалар жиынын (қосымшалары да болуы мүмкін) және адрес тер диапазонын жүмсаса, онда екілік сай келуі оңай жетіледі. Мұның үшін кейінгі шарттар орындалуы жеткілікті:
қолданба ие болған АРІ функцияларын шақыруын ОЖ сүйемелдеуі қажет;
орындалатын файл ишкі структурасы осы ОЖ-нің орындайтын файл структурасына сай келуі керек.
Түрлі архитектураға ие процессорларда ОЖ-лердің екілік сай келуін амалға асару өте күрделі. Жоғарыда келтірілген шарттардан басқа екілік кодты эмуляция етуді ұйымдастыру қажет.
Айтайық, мысалы, IBM PC ге сай келген компьютерге арналған DOS-программаны Macintosh компьютерінде орындау керек болсын. Macintosh компьютері Motorola 680x0 процессоры негізінде жасалған, ал IBM PC —Intel 80x86 процессоры негізінде. Motorola процессоры Intel процессорының архитектурасынан ерекше архитектураға ие (командалар жүйесі, регистрлар құрамы ж.т.б.), сондықтан оған осы процесор инструкцияларына ие DOS-программасының екілік коды түсініксіз. Macintosh компьютері басында оған түсініксіз болған машина инструкцияларын интерпретация етуі үшін онда арнайы программалық қамтамасыз орындалуы керек. Оны эмулятор деп атайды.
Эмулятор кетпе-кет әр бір Intel екілік инструкциясын алып программалық әдіспен оны қандай амалдарды орындауын дешифрлап кейіннен Motorola процессорының эквивалент процесор инструкцияларында жазылған қосалқы программасын шақырып орындауы керек. Motorola процессорінде анық Intel-дің осындай регистрлері, жалаушалары және ішкі арифметикалы-логикалық құрылғысы болмағандықтан ол өзінің регистрлер және жад жәрдемінде барлық осы элементтердің жұмысын иммитация (эмуляция) етуі керек. Эмуляция етілген регистрлер және жалаушалар әр бір команданы орындағандан соң абсолют Intel процессорыныкендей болуы керек.
Бұл қарапайым бірақ жай жұмыс, себебі Intel процессорының командасы жылдам орындалады Motorola процессорының эмуляция еткен командалар тізіміне қарағанда.
Кітапханаларды трансляциялау
Мұндай жағдайдан шығу қолданбалық программалық орталарды қолдану болады. Қолданбалық программалау ортаны пішімдейтін қурастырушылардың бірі қолданбалық программалау интерфейсі АРІ дің өзінің қолданбаларына беретін функциялар жиыны болады. Біреудің программаларын орындау уақытын қысқарту үшін қолданбалық орталар кітапхана функцияларына үндеуді имитация етеді.
Осы жақындаудың эффективтіғы көп осы күнгі программалардың Windows, Mac немесе UNIX Motif типындағы GUI (пайдаланушының графикалық интерфейсі) басшылығында жұмыс орындауына байланысты. Сонда қолданбалар қөп уақытын кейбір жақсы алдын ала айтылатын амалдарға сарыптайды. Олар тынымсыз GUI кітапханасын шақыруды орындап терезелермен манипуляция және басқа амалдарды орындайды. Осы күндері әдеттегі программаларда 60-80 % үақыты GUI функцияларын және басқа кітапханаларды шақыруға сарыпталады. Қолданбалардың осы қасиеті өзі қолданбалық орталардың программаны командаларын эмуляция етуге жіберген көп уақытын компенсация етеді. Әдейі проекттелген программалы қолданбалық орта өзінің құрамында өзінің кодында жазылған GUI ишкі кітапханаларын имитациялаушы кітапханаларға ие. Сонымен басқа операциялық жүйенің АРІ сымен орындалатын программа шамалы удеуленуі жетіледі. Кейбір кездері осындай жақындау трансляциялау деп айтылады баяу әр бір команда кодын эмуляция ету процесстен айыру үшін.
Мысалы, Macintosh-та істейтін Windows-программасы үшін Intel 80x86 процессор командасын интерпретация еткенде өнімділік өте төмен болуы мүмкін. Бірақ терезе ашу GUI функциясын шақырған кезде Windows ортасын амалға асырушы ОЖ модулі осы шақыруды ұстап алып оны Motorola 680x0 процессоры үшін қайтадан компиляция етілген терезе ашу қосалқы программасына жіберуі мүмкін. Нәтижеде осы код бөлімдерінде программа істеу жылдамдығы жоғарыланып өзінің процессорінде істеу жылдамдығына жетеді де артып кетуі мүмкін.
Бір ОЖ үшін жазылған программа басқа ОЖ рамкасында орындалуы мүмкін болуы үшін АРІ ның сай келуін қамтамасыз етуі жеткілікті емес. Түрлі ОЖ-лерде қолданатын концепциялар бір-бірімен қайшыласта болуы мүмкін. Мысалы, бір ОЖ-де қолданбаға енгізу-шығару құрылғыларды тікелей басқаруға рұқсат етілуі мүмкін, басқасында есе бұл амал ОЖ-нің қызметі болады. Әр бір ОЖ өзінің ресурстарды қорғайтын механизмдерге, қателерді және төтенші жағдайларды өңдейтін өзіндік алгоритмдерге, процесстің арнайы структурасына және жадты басқару схемасына, өзінің файлдарға жету семантикасына және пайдаланушының графикалық интерфейсіне ие болуы мүмкін. Сай келуді қамтамасыз ету үшін бір ОЖ рамкасында компьютер ресурстарын басқаратын бірнеше тәсілдерді конфликтсыз бар болуын ұйымдастыру ету керек.
