Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Операциялық жүйелер_Муратбеков_2015.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

Ядро артықшылық режимінде.

Қолданбалар орындауын сенімді басқару үшін ОЖ-лер қолданбаларға қараған­да белгілі артықшылыққа ие болуы қажет. Бо­лмаса коррект іс­темейтін қолданба ОЖ жұмысына араласып оның кодтар бір болігін бұзуы мүмкін. Өндірушілердің барлық қызметтері зая кетеді, егер олардың ше­шім­дері қолданбалардан қорғанмаған болса, қандай олар элегант және эф­фектив болма­сын. Операциялық жүйе мультипрограммалық режимінде қол­данбалардың компьютер ресурстарына таласқан кезде арбитр ролін орындау үшін ерекше мүмкіндіктеріне де ие болуы қажет. Бірде бір қол­дан­ба ОЖ-нің хабарысыз жад қосымша облыстары­на ие болуы, процес­сор­ды ажыратылған уақыттан артықша иелеп тұруы, біргелікте пайдала­на­тын сыртқы құрылғыларды ере­к­­ше ба­с­қаруы мүмкін емес.

ОЖ артықшылықпен қамтамасыз ету арнайы аппараттық сүйемелдеуісіз мүм­кін емес. Компьютер аппаратурасы ең кемінде жұмыстың екі режимін сүйемелдеуі керек – пайдаланушы режимі (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 лер де, және белгілі модифика­ция­лармен Win­dows NT –де.

Кейбір жағдайларда ОЖ өңдеушілері осы классикалық архи­тектура варианты­нан шегініп ядро және қолданбалардың жұмы­сын бір түр режимде ұйымдастырады. Сонымен Novell компа­ниясының NetWare арнайы кеңінен таныс ОЖ-сі Intel x86/ Pen­­tium процессорының артықшылығын ядро жұмысында да өзінің арнайы қолдан­ба­лардың – NLM жүктелетін модулдерінің да жұ­мыстарында қолданады (рис. 3.5). ОЖ-нің мұндай құрылымында қолданбалардың ядроға ұсынысы жылдам орындала­ды, себебі ре­жимдер арасында қайтадан қосу болмайды, бірақ коррект істе­мей­тін қолданбалардан ОЖ модулдері иелеген жад­тың сенімді аппараттық қорғауы жоқ болады. NetWare жасаушы­лары өзінің ОЖ-сі сенімділігінің төмендеуіне әдейі бар­ған, себебі жұмсала­тын арнайы қолданбалар саны шектелген болғандықтан оларды әрбірін мұқият өңдеу жолымен бұл архитектуралық кемшілікті компенсация етуге мүмкін болған.

Бір режимде артықшылық режимін сүйемелдемейтін про­цессорлер үшін жа­салған ОЖ-лер ядросы және қолданбалары жұ­мыс орындайды. Осындай процессор түріндегі IBM фирмасы дер­бес компьютерлерінің негіздерін салған кең таралған In­tel 8088/86 процессоры болды. Осы компьютерлер үшін Mic­rosoft фирмасы жасаған 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, co­unt) жүйелі ша­қыру жәрдемінде осы файлдан едәуір байттар санын оқып buffer деп аталушы жад облысына жазып қояды. Осындай комплекс амалдарды орындау үшін жүйелік ша­қы­рулар ресурстар менеджерлері қабаты жәрдеміне үндейді, сонымен бір жүйелік шақыруларды орындау үшін бірнеше үндеу қажет болуы мүмкін.

ОЖ ядросының келтірілген мұндай қабаттарға бөлінуі жеткі­лікті шартты да бо­лады. Реал жүйеде қабаттар саны және олар ара­сында функциялардың таратылуы басқа да болуы мүмкін. Бір түрдегі аппараттық платформаға арналған, мысалы, Net­Ware ОЖ-сінде, машина-байланысты модулдер әдетте ерекшеленбей негізгі меха­низм­дермен және бір бөлігі менеджер ресурстарымен бірле­сіп кетеді. Негізгі меха­ни­зм­дер де ерекше қабатқа хатталмауы де мүмкін. Мұндай кезде ресурстарының менеджерлері ресурстарды жоспарлаумен бірге өздерінің жоспарларын өздері амалға асыра­ды.

Кері жағдайда болуы мүмкін, ядро көп қабаттардан құрасты­рылады. Мысалы ресурстар менеджерлері ядроның бір қабаты бо­­лып өз кезегімен көп қабатты струк­тураға ие болуы мүмкін. Алдын ала бұл енгізу-шығару менеджеріне тиісті, оның төменгі қабаты құрылғылардың драйверінен құрылған болып, мысалы қатты диск немесе желі адаптерінің драйверлері, жоғарғы қабат­тар информацияны логикалық ұйымдастыруымен жұмыс орын­дайтын файлдық жүйелер немесе желі қызметтері­нің протоклда­рынан құрастырылады.

Реал ОЖ-де қабаттар өзара әсер тәсілдері жоғарыда баяндал­ған схемадан та­юы мүмкін. Ядро жұмысын жылдамдату мақса­тын­да кейбір кездерде жоғары қабат­тан төменгі қабаттар функ­цияларына тікелей арадағы қабаттарға қарамастан үндеу мүмкін. Осындай дұрыс емес өзара әсерге типтік мысал етіп жүйелі ша­қырудағы бастапқы өңдеуді көрсетсе болады. Көп аппараттық платформаларда жүйелік шақы­ру­ды амалға асыру үшін прог­раммалық үзу инструкциясы жұмсалады. Осымен қол­данба амал­да негізгі механизмдер қабатында жайласқан үзулерді бастапқы өңдейтін модулін шақырады, ал бұл модуль жүйелі шақырулар қабатынан керекті функцияны шақырады. Жүйелі шақырулар функциялардың өздері де кей кезде иерархиялық қа­баттар субор­динациясын тікелей ядро негізгі механизмдеріне үндеп бұзады.

Ядроның қабаттар санын таңдау жауапты және күрделі жұ­мыс: қабаттар саны көбейуі ядро жұмыс жылдамдығын қабаттар ара байланыстар есебіне төмендетеді, ал қабаттар санының кеме­юі жүйенің кеңейтілуін және логикасын төмендетеді. Әде­т­те эво­люциялық даму ұзын жолын өткен ОЖ-лер, мысалы UNIX көп вер­сиялары көп болмаған анық ажыратылған қабаттарға ие тәр­тібсіз құрастырылған ядроға ие болады, ал салыстырмалы жас ОЖ-лер ядролары, Windows NT –ге ұқсас, көп қабаттарға бөлініп олар ара қатынасу жоғары деңгейде формалданған.

Дәріс №15 Микроядролық архитектура.Концепция

Микроядролық архитектура ОЖ-нің классикалық құруына альтернатив әдіс болып табылады. Классикалық архитектура деп бұл жағдайда жоғарыда қаралған ОЖ-нің структуралық құрылы­мы­на айтылады. Оған сай ОЖ-нің барлық негізгі фу­нкциялары көпқабатты ядроны құрастырып артықшылық режимінде орын­далады. Сонымен ОЖ-нің кейбір көмекші функциялары қолданба көрінісінде жасалып пайдаланушы режимінде орындалады пай­даланушы программаларына ұқсас (жүйелік утилиталарға немесе өңдеуші программаларға айланып). Пайдаланушы режимінің әрбір қолданбасы өзінің адрестік кеңістігінде орындалып басқа қолданбалар әсері­нен қорғанған болады. Артықшылық режимін­де орындалатын ядро коды қолданба­лар жадтарының облыстарына жете алады, бірақ өзі толығымен олардан қорғанған. Қолданба­лар ядроға жүйелі функцияларды орындау сұраныстармен үндейді.

Микроядролық архитектурасының маңызы мынадай. Артық­шылық режимде ОЖ-нің өте кіші, микроядро деп аталушы, бөлі­мі жұмыс істеуге қалдырылады (3.10 сурет). Микроядро ОЖ-нің қалған бөлімдерінен және қолданбалардан қорғалған. Микроядро құрамына әдетте машина-байланысты модулдер, сонымен ядро­ның не­гізгі (бірақ барлығыны емес) функциялары енгізіледі. Бұл функциялар процесстерді басқару, үзулерді өңдеу, виртуал жад­тар­ды басқару, мәліметтерді тарату, құрылғы­лар регистрлерін жү­ктеу немесе оқу мен байланысты енгізу-шығару құрылғыларды басқару амалдар болады. Микроядро функциялар жиыны әдеттегі ядро негізгі фун­кциялары механизміне сай келеді. ОЖ-нің мұн­дай функцияларын пайдаланушы ке­ңістігінде орындау қиын егер мүмкін болмаса.

Қалған барлық жоғары деңгейлі ядро функциялары пайдала­ну­шы режимінде істейтін қолданба көрінісінде пішімделеді. Жү­йелік функциялардың қайсы бірін ар­тықшылық режимге қайсы бірін пайдаланушы режиміне өткізу туралы бір мәнді шешім жоқ. Жалпы жағдайда әдеттегі ядро үзіліссіз бөлімі болған ресу­рс­тердің көп менеджерлері – файлдық жүйе, виртуал жад және процесстерді басқаратын қосалқы жүйелер, қорғану менеджері ж.т.б. перифериялық модулдерге айналдырылып пай­даланушы режимінде орындалады.

Пайдаланушы режимінде істейтін ресурстар менеджерлері әдеттегі утилита­лар­дан және ОЖ өңдейтін программалардан при­нципиал айырмашылыққа ие, мик­ро­ядролық архитектурада бар­лық бұл программалар компоненттері қолданба күйі­нде пішім­дел­седе. Утилиталар және өңдеуші программалар негізінде пай­даланушы­лар жағынан шақырылады. Бір қолданбаға басқа қол­дан­ба функциялары (процедуралары) орындалуы керек болған жағдайлар өте кем кездеседі. Сондықтан классика­лық архитекту­раға ие ОЖ-лерде бір қолданба басқа қолданба функцияларын ша­қы­ру механизмдері жоқ.

Бүкіл басқа жағдай келіп шығады егер қолданба пішімінде ОЖ-нің бір бөлімі жасалса. Анықтама бойынша мұндай қолдан­баның негізгі мақсаты басқа қолданба­лар­дың сұраныстарын ор­ындау, мысалы, процесстерді жасау, жадты ажырату, ре­сурске жету құқығын тексеру ж.т.б. Сондықтан пайдаланушы режиміне шығарыл­ған ресурстер менеджерлері ОЖ-нің серверлері деп ата­лады, яғни олардың негізгі мақсаты жергілікті модулдер және ОЖ-нің басқа модулдерінің қазметтерін орындау. Айқын, микроядро ар­хи­тектурасын амалға асырудың керекті шарты операциялық жү­йеде бір процесс процедураларын басқасынан шақырудың оңай және эффектив әдісі болуында. Осындай механизмді сүйемелдеу микроядроның басты мәселелері­нің бірі болып табылады.

ОЖ функцияларына үндеу серверлер күйінде пішімделген бо­лып схематик тө­мендегідей көрінеді (3.11 сурет). Қолданбалық программа немесе ОЖ-нің басқа ком­поненты клиент болып тиісті серверге хабарды жіберіп қандайда бір функцияны орын­дауын сұра­нады. Хабарлардың қолданбалар арасында тікелей таратылуы мү­мкін ем­ес, себебі олар адрестық кеңістігі бір-бірінен изоляциялан­ған. Артықшылық режи­мін­де істейтін микроядро осы қолданба­лардың әр бірінің әдрестік кеңістіктеріне жете алады, сондықтан ол делдал болып қызмет ете алады. Микроядро алдын ала керекті серверге шақырылатын процедура атына және параметрлеріне ие хабарды жібереді, кейіннен сервер сұралған операцияны орын­дай­ды, содан кейін ядро клиен­т­ке нәтижені басқа хабар жәрде­мін­де жеткізеді. Сонымен ОЖ-нің микроядро жұмы­сы таныс кли­ент-сервер моделіне сай келіп транспорттық ролін микроядро ор­ы­ндай­ды.

Микроядро архитектурасының үстемділігі және кемшіліктері.

Микроядро концепциясына негізделген ОЖ-лер жоғары де­ңгейде осы кезгі ОЖ-лерге қойылған талаптардың көбісін қана­ғат­тандырады: көшірілуі, кеңейтілінуі, сенімділігі мен және та­ратылған қолданбаларды сүемелдеу мүмкіншіліктерімен. Осы жетістіктері үшін өнімділігінің төмендеуімен төлеу керек болады, осы қасиеті микроядро архитектурасының негізгі кемшілігі деп қаратстырылады.

Көшірілуінің жоғары деңгейі машина-бағынышты барлық коды микроядрода изоляцияланған болып жаңа процессорға кө­шірілгенде кем өзгерістерді енгізу керек боладыда және олар бар­лығы бірге жиылған.

Кеңейтілінуі микроядролық ОЖ өте тиісті болады. Әдеттегі жүйелерде бір қабатты жою және алмастыру қабаттар арасында­ғы интерфейстердің өте көптігіне және шекараларының дәл бол­мағандығы үшін өте қиынға соғады. Жаңа функция­лар­ды қосу барларын өзгерту ОЖ-ні жақсы білуді және көп уақыт талап ете­ді. Со­нымен бірге микроядро интерфейстерінің анық берілуі және санының кемдігі ОЖ-нің тәртібті өсуіне және эволюциясына ал­ып келеді. Жаңа қосалқы жүйенің қосы­луы жаңа қолданбаны жа­сауды талап етіп микроядро бұтіндігін бұзбайды. Микрояд­ролық структура қосу мен бірге операциялық жүйе компоненттерін ке­мейтуге де мүмкіндік жасайды, бұл есе пайдалы да болуы мүм­кін. Мысалы барлық пайдалану­шы­ларға да қорғану саймандары, немесе таралған есептерді сүйемелдеу қажет бол­мауы мүмкін, әдеттегі ядродан оларды алып тастау мүмкін болмайдыда. Әдетте тра­дициялық ОЖ-лер ядроға сыртқы құрылғылар драйверлерін динамикалық қосу және алып тастау мүмкіндігіне ие - компьютерге қосылатын сыртқы құрылғылардың жиі өзгеріп тұруы себебі ядро енгізу-шығару қосымша жүйесі драйверлерді компьютер жұмыс орындап тұрған кездеде жүктеу және шығару мүмкіндігіне ие, бі­рақ мұның үшін ол арнайы жасалады (мысалы, UNIX тегі STRE­A­MS немесе Windows NT дегі енгізу-шығару орталары). Микро­яд­ро­лық жақындадуда ОЖ-нің конфигурациялануы еш қандай проблемалар тудырмайды – бастапқы жүйенің конфигурациясын өңдей­тін файлды өзгертіп немесе керек болмаған серверлерды әдеттегі әдіспен тоқтатып қойса болады.

Микроядролық архитектураны қолдануы ОЖ сенімділігін жоғарылатады. Әр бір сервер ерекше процесс етіп өзінің жад облысында жасаладыда сонымен ОЖ-нің басқа серверлерінен қор­ғалады. Бұл әдеттегі ОЖ-лерде күзетілместен ядро модулде­рі бір-біріне әсер етуі мүмкін. Егер ерекше сервер тоқтап қалса ол қал­ған серверлерді тоқтатпастан және бұзбастан қайтадан іске қосы­луы мүмкін. Одан басқа серверлер пайдаланушы режимінде ор­ындалғандықтан олар тікелей аппаратураға жете алмайдыда микроядро сақталған және істеп тұрған жадты өзгерте алмайды. ОЖ-нің сенімділігін арттыратын тағыда бір потенциал мүмкіншілік әдеттегі ядроға қарағанда микроядро код көлемінің кемеюі. Бұл программалау қателіктерінің эхтімалдығын төмендетеді.

Микроядролық модель таратылған есептерді орындауға қол келеді, себебі же­ліге ұқсас механизмдерді қолданады: хабарлар­ды жіберу жолымен клиенттер және серверлер өзара әсер етеді. Микроядролық ОЖ серверлері бір және бірнеше түрлі компью­терде жұмыс орындай алады. Бұл жағдайда қолданбадан хабарды алған соң микроядро оны өзі өңдеп жергілікті сервеге жіберуі мүмкін немесе желі арқылы басқа компьютерде істеп тұрған микроядроға жіберуі мүмкін. Таралған өңдеуге өту ОЖ жұмысында өте кем өзгерістерді талап етеді – жергілікті транспорт желілікке өткі­зі­леді.

Өнімділік. ОЖ-нің классикалық ұйымдастырылуында жүйелік шақырулардың орындалуы режимдердің екі рет алмасуымен амалға асырылады, ал микроядролық ұйымдастыры­луында – төрт рет. Сонымен бірге, микроядро негізіндегі ОЖ басқа тең жағдайда классикалық ядроға қарағанда өнімділгі төмен болады. Осы себебке байланыс микроядролық жақындау жариялануына қарамастан кең таралмады.

Осы кемшіліктің салмақты екендігі Windows NT – нің даму тарихы көрсете ала­ды. 3.1 және 3.5 версияларында терезелер ди­спетчерлері, графикалық кітапхана­сы және жоғары деңгейлі гра­фикалық құрылғылардың драйверлері пайдаланушы режиміндегі сервер құрамына енгізілген еді және осы модульдер функцияла­ры­ның шақырылуы микроядро схемасында амалға асырылар еді. Бірақ Windows NT жетіл­дірушілері мұндай графикалық интер­фейс функцияларына үндеу механизмі жиі қолданатын қолдан­баның жұмысын баяулатуын және өткір конкуренттік күресте зайыптығын өте тез түсінді. Нәтижеде Windows NT 4.0 версиясы­на өте маңызды өзгерістер енгізілді – жоғарыдағы атап өтілген барлық модулдер ядроға енгізілді, сонымен бұл ОЖ идеал микроядро архитектурасынын ұзақтасты, бірақ оның өнім­ділігі кескін артты.

Бұл мысал ОЖ-нің микроядролық жақындауды қолданамын деген жетілдіру­ші­лер­дің кездесетін басты проб­леманы кескін­де­теді – микроядроға нені енгізу керек нені пайдаланушы кеңістігі­не шығару керек. Идеал жағдайда микроядро хабарларды жеткі­зе­тін, аппаратурамен өзара әсер ететін саймандардан құрастыры­луы мүмкін, со­нымен артықшылық қорғау механизмдеріне жету саймандарынан да. Бірақ көп жетілдірушілер әр сапарда ядро функцияларын минимизация ету принципын қолда­на бермейді, жиі өнімділікті асыру мақсатында. Нәтижеде ОЖ-нің реализациясы спектр күйінде болып бір шекарасында минимал мүмкін болған микроядроға ие жүйелер, ал басқа шегінде – ядросы көп функцияларды орындайдын Win­dows 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 процессоры үшін қайтадан компиляция етілген терезе ашу қосалқы программасына жіберуі мүмкін. Нәтижеде осы код бөлімдерінде программа істеу жылдамдығы жоғарыланып өзінің процессо­рін­де істеу жылдам­ды­ғы­на жетеді де артып кетуі мүмкін.

Бір ОЖ үшін жазылған программа басқа ОЖ рамкасында орындалуы мүмкін болуы үшін АРІ ның сай келуін қамтамасыз етуі жеткілікті емес. Түрлі ОЖ-лерде қолданатын концепциялар бір-бірімен қайшыласта болуы мүмкін. Мысалы, бір ОЖ-де қол­данбаға енгізу-шығару құрылғыларды тікелей басқаруға рұқсат етілуі мүмкін, басқасында есе бұл амал ОЖ-нің қызметі болады. Әр бір ОЖ өзінің ресурстарды қорғайтын механизмдер­ге, қате­лерді және төтенші жағдайларды өңдейтін өзіндік алгоритмдерге, процесстің арнайы структурасына және жадты басқару схемасы­на, өзінің файлдарға жету семантикасына және пайдаланушының графикалық интерфейсіне ие болуы мүмкін. Сай келуді қамтама­сыз ету үшін бір ОЖ рамкасында компьютер ресурстарын басқа­ратын бірнеше тәсілдерді конфликтсыз бар болуын ұйымдастыру ету керек.