Операциялык системалардын архитектурасы

6.1. Операциялык системаларды куруунун принциптери

Операциялык системаларды куруунун эң маанилүү принциптери болуп төмөнкүлөр саналат: модулдук принциби, виртуалдаштыруу принциби, мобилдүүлүк принциби (көчүрүү принциби), шайкештик принциби, ачыктык принциби, операциялык системаны генерациялоо принциби. программалык камсыздоо компоненттери. Белгилей кетчү нерсе, бул принциптердин бардыгы эле иштеп жаткан операциялык системаларда ишке ашырылбайт.

  • Модулдуулук принциби. Иштетүү системасы көптөгөн программалык модулдардан куралган. Модуль деп кабыл алынган модулдар аралык интерфейстерге ылайык жасалган системанын функционалдык жактан толук элементи түшүнүлөт.

Аныктама боюнча, модул зарыл болсо, аны башкасына алмаштыруунун оңой жолун камсыз кылат. Модулдуулук принциби системанын технологиялык жана эксплуатациялык касиеттерин чагылдырат. Аны колдонуунун эң чоң эффектиси принциби бир эле учурда операциялык системага, тиркеме программаларына жана аппараттык жабдыктарга жайылганда жетишүүгө болот. Модулдуулук принциби UNIX системаларынын негизги принциптеринин бири болуп саналат.

  • Виртуалдаштыруу принциби. Ар кандай операциялык система ресурстарды бөлүштүрүүнүн жана процессти башкарууну белгилүү бир эрежелер боюнча уюштуруунун каражаты болуп, реалдуу аппараттык жана башка ресурстарды колдонуучудан жана анын тиркемелеринен жашырат, аларды кандайдыр бир абстракция менен алмаштырат. Операциялык система биздин компьютер жөнүндө түшүнүгүбүздү олуттуу түрдө өзгөртөт. Аны виртуалдаштырып, функционалдуулукту, башкаруунун жөнөкөйлүгүн, параллелдүү эсептөөлөрдү уюштуруу үчүн инструменттерди камсыз кылууну ж.б.у.с. Операциялык системанын аркасында биз компьютерди ансыздан таптакыр башкача кабыл алабыз. Виртуалдаштыруу принцибинин бир аспектиси программалардын тышкы түзүлүштөрдөн көз карандысыздыгы болуп саналат. Программанын бул түзүлүштөр менен байланышы аны түзүү процессинде эмес, аткарууну пландаштыруу мезгилинде жүргүзүлөт. Натыйжада, жаңы аппарат менен иштөөдө программаны кайра компиляциялоо талап кылынбайт.

·        Мобилдүүлүк принциби. Мобилдүүлүк операциялык системаны башка аппараттык платформага оңой порттоо мүмкүнчүлүгүн билдирет. Мобилдик операциялык тутум, адатта, системалык программалык камсыздоону түзүү үчүн атайын жогорку деңгээлдеги тилди колдонуу менен иштелип чыгат.

Бул тилдердин бири - UNIX операциялык системасынын кийинки версиясын жазуу үчүн атайын түзүлгөн Си тили. Акыркы жылдарда C++ тили да ушул максаттар үчүн колдонулууда, анткени объектиге багытталган программалоо идеялары колдонуу үчүн гана эмес, системалык программалоо үчүн да жемиштүү болуп чыкты.

·       Шайкештик принциби. Бул принципти сактоо операциялык системанын башка системалар үчүн же ушул операциялык системанын мурунку версиялары үчүн, ошондой эле башка аппараттык платформа үчүн жазылган программаларды иштетүү мүмкүнчүлүгүнө кепилдик берет.

·       Ачыктык принциби. Бул принцип кээде системанын кеңейүү принциби катары чечмеленет. Ачык операциялык система колдонуучулар жана система адистери тарабынан талдоо үчүн жеткиликтүү. Операциялык системаны кеңейтүү үчүн эң сонун мүмкүнчүлүктөр микроядро технологиясын колдонуу менен операциялык системаны кардар-сервер катары структуралаштыруу ыкмасын камсыз кылат.

Бул ыкмага ылайык операциялык система артыкчылыктуу башкаруу программасы менен артыкчылыксыз кызматтардын – «серверлердин» жыйындысы катары курулган. Жаңы кызматтар кошулуп же эскилери өзгөртүлгөндө операциялык системанын өзөгү өзгөрүүсүз кала берет. Ачык операциялык системаларга биринчи кезекте UNIX системалары жана Linux кирет.

·       муун принциби.Бул принципке ылайык, системанын өзөгүн баштапкы көрсөтүү эсептөө борборунун конкреттүү конфигурациясынын жана чечиле турган милдеттердин диапазонунун негизинде ыңгайлаштыруу мүмкүнчүлүгүн камсыз кылууга тийиш. ОС генерациялоо деп анын өзүнчө программалык модулдардан чогултуу түшүнүлөт. Генерациялоо процесси атайын генератор программасы аркылуу ишке ашырылат.

Бүгүнкү күндө персоналдык компьютерлерди колдонууда генерациялоо принциби Linux менен иштөөдө гана кездешет. Бул системада кандайдыр бир даяр ядрону колдонуу гана эмес, ошондой эле ушул конкреттүү жеке компьютер жана анда чечилүүчү милдеттер үчүн оптималдуу боло турган ядрону генерациялоого (компиляциялоого) болот. Башка операциялык системаларда система орнотуу стадиясында тиешелүү жабдуулардын курамына конфигурацияланган,

6.2. Операциялык системанын интерфейстери

Операциялык система ар дайым компьютердик жабдык менен колдонуучунун милдеттери менен интерфейсинин ролун аткарат.

Системалык жана колдонмо программалоо интерфейстери (API) төмөнкү милдеттерди аткаруу үчүн иштелип чыккан:

1. Төмөнкү негизги функциялардын топтомун камтыган процессти башкаруу:

1.  ишти баштоо, тындыруу жана аткаруудан алып салуу;

2.   тапшырманын артыкчылыктуулугун коюу же өзгөртүү;

3.   милдеттердин өз ара аракеттенүүсү;

4.   алыскы процедураларды чакыруу (Remote Procedure Call).

2.  Эстутум башкаруу:

1.  эстутум блогун бөлүп берүүнү өтүнүү;

2.   эстутум бошотуу;

3.   эс тутум блогунун параметрлерин өзгөртүү (мисалы, эстутум процесс тарабынан кулпуланышы же бөлүшүлүшү мүмкүн);

4.   файлдарды эс тутумга салыштыруу (бардык системаларда жок).

3.  I/O башкаруу:

1.   виртуалдык түзүлүштөрдү башкаруу өтүнүчү (эске сала кетели, киргизүү/чыгарууну башкаруу операциялык системанын өзүнүн артыкчылыктуу функциясы жана эч бир колдонуучунун тапшырмасы түзмөктөрдү түздөн-түз башкара албашы керек);

2.   файл операциялары (файлдарга уюшулган маалыматтарды түзүү, өзгөртүү жана жок кылуу үчүн файлды башкаруу системасына суроо-талаптар).

Акыркы жылдарда колдонуучунун графикалык интерфейстери (GUI) абдан популярдуу болуп, анда чычкан тибиндеги манипуляторлор тартылган. Курсорду объектке көрсөтүп, чычкан баскычын басуу кандайдыр бир иш-аракеттерге алып келет. Мындай интерфейстин подсистемасы колдонуучунун "буйруктарын" операциялык системага чалууларга которот деп айта алабыз.

GUI башкаруусу киргизүү/чыгарууну башкаруу тапшырмасынын өзгөчө учуру болуп саналат жана операциялык тутумдун өзөгүнүн функцияларына кирбейт, бирок кээ бир учурларда ОС иштеп чыгуучулар GUI функцияларын негизги тутум API'сине кайрылышат.

API деген жалпы терминди (Application Program Interface - Application Programming Interface) төмөнкү тармактарга бөлүүгө болот:

·      RTL (Run Time Library) китепканаларына тиешелүү жогорку деңгээлдеги интерфейс катары API;

·       Операциялык системаны жеткирүүгө камтылган тиркемелердин жана системалык программалардын API;

·       Башка API'лер.

Программалоо тутумунун деңгээлинде API функцияларын ишке ашырууда бул функциялар колдонуучуга тиешелүү программалоо тилинин функцияларынын китепканасы түрүндө берилет. Адатта, бул RTL китепканасы. Албетте, бул учурда API функцияларын чакыруунун натыйжалуулугу операциялык тутумдун функцияларына түз жетүү менен караганда бир аз төмөн болот. Себеби, көптөгөн API функцияларын аткаруу үчүн, RTL китепканасы дагы эле иштөө тутумунун функцияларына чалууларды жасашы керек.

Бирок, бул учурда программанын баштапкы кодунун портативдүүлүгү эң жогору болуп чыгат, анткени бардык функциялардын синтаксиси жана семантикасы программалоо тилине көз каранды жана компьютер системасынын архитектурасына көз каранды эмес.

API функциялары операциялык системанын модулдарынын деңгээлинде ишке ашырылганда, натыйжада түзүлгөн программа түздөн-түз операциялык системага тиешелүү. Ошондуктан, API функцияларын аткаруунун эң чоң эффективдүүлүгү APIди ишке ашыруунун бардык башка варианттарына салыштырмалуу жетишилет. Мындай схеманын кемчилиги – бул алынган программалык коддун гана эмес, ошондой эле баштапкы программалык коддун да портативдиктин дээрлик толук жоктугу.

Тышкы китепканаларды колдонуу менен API функцияларын ишке ашырууда бул функциялар колдонуучуга үчүнчү тараптын иштеп чыгуучусу тарабынан түзүлгөн процедуралардын жана функциялардын китепканасы түрүндө берилет. Программалоо системасы китепкананын объектинин кодун алынган программага туташтыруу үчүн гана жооп берет. Аткаруу эффективдүүлүгү жагынан APIди ишке ашыруунун бул ыкмасы эң начар иштейт, анткени тышкы китепкана операциялык тутумдун функцияларына да, программалоо тилинин RTL функцияларына да жетет.

Эгерде баштапкы коддун портативдүүлүгү жөнүндө сөз кыла турган болсок, анда бул жерде бир гана талап бар - колдонулган тышкы китепкана колдонмо программасы багытталган компьютер тутумунун архитектурасынын каалаганында болушу керек. Ошондо портативдикке жетишүүгө болот. Бул тышкы китепкана кандайдыр бир кабыл алынган стандартты канааттандырса жана программалоо системасы бул стандартты колдосо мүмкүн.

Мисалы, POSIX стандартына ылайык келген китепканалар C программалоо системаларынын көпчүлүгүндө бар.Ал эми колдонмо программасы ушул стандарттын китепканаларын гана колдонсо, анда анын баштапкы коду көчмө болот. Дагы бир мисал, X-Windows графикалык чөйрө стандартын колдогон белгилүү XLib GUI китепканасы.

POSIX (Компьютер чөйрөсү үчүн портативдик операциялык система интерфейси) стандарты IEEE (Электр жана электроника инженерлери институту) стандарты болуп саналат, ал ачык операциялык системалар үчүн система интерфейстерин, анын ичинде кабыктарды, утилиталарды жана инструменттерди камтыйт. Стандарт UNIX системаларына негизделген, бирок башка операциялык системаларда ишке ашырылышы мүмкүн.