Кіріспе

Windows NT ядросы Microsoft Windows NT операциялық жүйелер отбасысының архитектурасына шолу. Microsoft компаниясы жасаған және сатқан Windows NT операциялық жүйелер отбасысының архитектурасы екі негізгі компоненттен – пайдаланушы режимі мен ядролық режимнен тұратын қабатталған құрылым болып табылады. Бұл алдын ала жоспарланған, қайта кіретін көп тапсырмалы операциялық жүйе, ол бір процессорлы және симметриялық көп процессорлы (SMP) компьютерлермен жұмыс істеуге арналған. Кіріс/шығыс (I/O) сұраныстарын өңдеу үшін ол пакеттік I/O қолданады, ол I/O сұраныс пакеттерін (IRP) және асинхронды I/O пайдаланады. Windows XP-ден бастап Microsoft Windows-тың 64 биттік нұсқаларын ұсына бастады; осыған дейін осы операциялық жүйелердің тек 32 биттік нұсқалары ғана болды. Пайдаланушы режиміндегі бағдарламалар мен кіші жүйелер жүйелік ресурстарға қол жеткізу мүмкіндігімен шектеледі, ал ядролық режимде жүйелік жадқа және сыртқы құрылғыларға шектеусіз қол жеткізуге болады. Windows NT ядролық режимі компьютердің аппараттық және жүйелік ресурстарына толық қол жеткізеді. Windows NT ядросы – гибридті ядро; архитектурасы қарапайым ядроны, аппараттық абстракция қабатын (HAL), драйверлерді және барлық ядролық режимде жұмыс істейтін қызметтердің жиынтығын (жинап алғанда Executive деп аталады) қамтиды. Windows NT пайдаланушы режимі I/O менеджерін пайдалану арқылы I/O сұраныстарын тиісті ядролық режимдегі құрылғы драйверлеріне жіберуге қабілетті кіші жүйелерден тұрады. Windows NT пайдаланушы режимінің қабаты көптеген операциялық жүйелер үшін жазылған қосымшаларды іске қосатын «Орталық кіші жүйелер» және орталық кіші жүйелердің атынан жүйеге тән функцияларды орындайтын «Тұтас кіші жүйе» құрайды. Ядролық режим пайдаланушы режиміндегі қызметтер мен қосымшалардың операциялық жүйенің оларға қол жеткізуге рұқсаты жоқ маңызды бөлімдеріне қол жеткізуін болдырмайды. Executive барлық пайдаланушы режиміндегі кіші жүйелермен интерфейс арқылы I/O, объектілерді басқару, қауіпсіздік және процестерді басқарумен айналысады. Ядро аппараттық абстракция қабаты мен Executive арасында орналасқан, көп процессорлы синхрондауды, оқиғаларды кезекті түрде жоспарлау және орындауды, қателерді өңдеуді және ерекше жағдайларды жіберуді қамтамасыз етеді. Ядро сонымен қатар жүктеу кезінде құрылғы драйверлерін бастапқылауға жауапты. Ядролық режимдегі драйверлер үш деңгейде болады: жоғары деңгейдегі драйверлер, аралық деңгейдегі драйверлер және төменгі деңгейдегі драйверлер. Windows Driver Model (WDM) аралық қабатта орналасқан және негізінен Windows 98 мен Windows 2000 арасында екілік және бастапқы код деңгейінде үйлесімді болуы үшін жасалған. Ең төменгі деңгейдегі драйверлер – бұл құрылғыны тікелей басқаратын Windows NT құрылғы драйверлері немесе қосылатын (PnP) аппараттық шина болуы мүмкін.

Пайдаланушы режімі

Пайдаланушы режимі әр түрлі жүйелік процестер мен DLL-дерден тұрады. Пайдаланушы режиміндегі қолданбалар мен операциялық жүйе ядросының функциялары арасындағы интерфейс "орталық ішкі жүйе" деп аталады. Windows NT-де мұндай ішкі жүйелер бірнеше болуы мүмкін, әрқайсысы әртүрлі API жиынтығын іске асырады. Бұл механизм көптеген түрлі операциялық жүйелер үшін жазылған қолданбаларды қолдау мақсатында жасалған. Ешбір орталық ішкі жүйе тікелей аппараттық құралдарға қол жеткізе алмайды; аппараттық функцияларға қол жеткізу ядролық режимдегі процедураларды шақыру арқылы жүзеге асырылады. Негізгі үш орталық ішкі жүйе бар: Win32 ішкі жүйесі, OS/2 ішкі жүйесі және POSIX ішкі жүйесі.

Win32 ортасының кіші жүйесі

Win32 ортасының ішкі жүйесі 32 биттік Windows қолданбаларын іске қоса алады. Ол консольді, сондай-ақ мәтіндік терезелерді, барлық басқа орталық жүйелер үшін өшіру және қатаң қателерді басқаруды қамтиды. Ол сондай-ақ MS-DOS және 16 биттік Windows (Win16) қолданбаларын Windows NT-де іске қосуға мүмкіндік беретін Virtual DOS Machine (VDM) қолдауын қамтамасыз етеді. Жеке адрестік кеңістігінде жұмыс істейтін және MS-DOS 5.0 нұсқасын эмуляциялайтын арнайы MS-DOS VDM бар. Win16 бағдарламалары Win16 VDM-де іске қосылады. Әр бағдарлама әдепкі бойынша бір процесте, яғни бір адрестік кеңістікте іске қосылады, ал Win16 VDM әр бағдарламаға орындалу үшін жеке тізбек береді. Дегенмен, Windows NT пайдаланушыларға Win16 бағдарламасын жеке Win16 VDM-де іске қосуға мүмкіндік береді, бұл бағдарламаның алдын ала көп тапсырмалы жұмыс істеуіне мүмкіндік береді, себебі Windows NT тек бір іске қосылған қолданбаны қамтитын бүкіл VDM процесін алдын ала тоқтатады. Win32 ортасының ішкі жүйелік процесі (csrss.exe) терезелерді басқару функционалдығын да қамтиды, кейде «терезе менеджері» деп аталады. Ол кіріс оқиғаларын (мысалы, пернетақта мен тышқаннан) басқарады, содан кейін осы кірісті қабылдауы тиіс қолданбаларға хабарламалар жібереді. Әрбір қолданба осы хабарламаларға жауап ретінде өзінің терезелерін және мәзірлерін салуға немесе жаңартуға жауапты.

OS/2 ортасы кіші жүйесі

OS/2 ортасының кіші жүйесі 16 биттік таңбаларға негізделген OS/2 қолданбаларын қолдайды және OS/2 1.x нұсқасын эмуляциялайды, бірақ 32 биттік немесе графикалық OS/2 қолданбаларын, OS/2 2.x және одан кейінгі нұсқаларында қолданылатын, тек x86 машиналарында қолдамайды. Графикалық OS/2 1.x бағдарламаларын іске қосу үшін Windows NT Add-On Presentation Manager қосалқы жүйесі орнатылуы тиіс.

POSIX ортасы кіші жүйесі

POSIX ортасының кіші жүйесі POSIX.1 стандартына немесе оған байланысты ISO/IEC стандарттарына сәйкес жазылған бағдарламаларды қолдайды. Бұл кіші жүйе UNIX үшін Windows қызметтерінің құрамына кіретін Interix жүйесімен алмастырылды. Ал, серверлік қызмет желідегі басқа компьютерлерге жергілікті жүйе ұсынатын файлдық ресурстарға және ортақ принтерлерге қол жеткізуге мүмкіндік береді.

Жедел режім

Windows NT ядролық режимі компьютердің аппараттық және жүйелік ресурстарына толық қол жеткізеді және қорғалған жад аймағында кодты іске қосады. Ол жоспарлауды, жіптердің басымдығын анықтауды, жадты басқаруды және аппараттық құралдармен өзара әрекеттесуді басқарады. Ядролық режим пайдаланушы режиміндегі қызметтер мен қосымшалардың операциялық жүйенің оларға қол жеткізуге рұқсат етілмеген маңызды бөліктеріне кіруін қадағалайды; пайдаланушы режиміндегі процестер мұндай операцияларды өздерінен орындау үшін ядролық режимден сұрау керек. x86 архитектурасы төрт түрлі артықшылық деңгейін қолдайды (0-ден 3-ке дейін нөмірленеді), бірақ олардың тек екі шеткі деңгейі пайдаланылады. Пайдаланушы режиміндегі бағдарламалар CPL 3 бойынша, ал ядро CPL 0 бойынша іске қосылады. Бұл екі деңгей көбінесе «сақина 3» және «сақина 0» деп аталады. Мұндай дизайн шешімі тек екі артықшылық деңгейін қолдайтын RISC платформаларына кодты тасымалдауға мүмкіндік беру үшін жасалды, бірақ бұл аппараттық құралдарға тікелей қол жеткізуге тырысатын I/O артықшылық сегменттерін қамтитын OS/2 қосымшаларымен үйлесімділікті бұзады.

Жәндіктер

Ядро HAL мен Executive арасында орналасқан және көппроцессорлық синхрондауды, тақырыптар мен үзілістерді жоспарлау және жіберуді, қақпақтарды өңдеуді және ерекше жағдайларды жіберуді қамтамасыз етеді; сонымен қатар, ол операциялық жүйені іске қосу және жұмыс іске кіргізу үшін қажетті құрылғы драйверлерін бастапқы жүктеу үшін жауапты. Яғни, ядро дәстүрлі микроядроның дерлік барлық міндеттерін орындайды; Executive мен ядро арасындағы қатаң айырмашылық – бастапқы микроядро дизайнының ең айқын қалдығы, ал тарихи жобалау құжаттарында ядро компоненті "микроядро" деп аталады. Ядро көбінесе процестерді басқарушымен байланысады. Абстракция деңгейі соншалық, ядро процестерді басқарушыны ешқашан шақырмайды, тек керісінше (бірнеше ерекше жағдайларды қоспағанда, бірақ бұл функционалдық тәуелділікке әкелмейді).

Гибридті өзектің құрылысы

Windows NT дизайны Mach, архетипілік микроядролық жүйе сияқты көптеген мақсаттарды қамтиды, ең маңыздысы – оның құрылымы, белгілі интерфейстер арқылы байланыс жасайтын модульдер жиынтығы ретінде ұйымдастырылуы. Кішкентай микроядро, бірінші деңгейдегі үзілістерді басқару, жіптерді жоспарлау және синхронизация примитивтері сияқты негізгі функциялармен шектеледі. Бұл модульдер арасында байланыс үшін тікелей процедуралық шақыруларды немесе процестер аралық байланысты (IPC) пайдалану мүмкіндігін береді, соның салдарынан модульдер әртүрлі адрестік кеңістіктерде орналаса алады (мысалы, ядролық кеңістікте немесе серверлік процестерде). Mach жүйесімен ортақ басқа да жобалау мақсаттарына әртүрлі архитектураларды қолдау, көптеген операциялық жүйе тұлғаларын жүзеге асыруға мүмкіндік беретін абстракциялармен ядро және объектіге бағытталған ұйымдастыру кіреді. Windows-тағы негізгі операциялық жүйе тұлғасы – Windows API, ол әрқашан қолданылады. Windows тұлғасын іске асыратын эмуляция кіші жүйесі Клиент/Сервер орындау кіші жүйесі (csrss.exe) деп аталады. NT 4.0 нұсқасынан бұрынғы нұсқаларында бұл жүйелік процесс терезе менеджерін, графикалық құрылғы интерфейсін және графикалық құрылғы драйверлерін де қамтыды. Алайда, өнімділікті арттыру мақсатында, 4.0 және одан кейінгі нұсқаларда бұл модульдер (көбінесе монолиттік жүйелерде де, тіпті ішкі графикалық қолдауы жоқ жүйелерде де пайдаланушы режимінде іске қосылады) ядролық режимдегі кіші жүйе ретінде жұмыс істейді.

Ядролық режимдегі драйверлер

Windows NT аппараттық құрылғылармен өзара әрекеттесу үшін ядролық режимдегі құрылғы драйверлерін пайдаланады. Әр драйвердің операциялық жүйенің қалған бөлігіне экспортталатын анықталған жүйелік және ішкі процедуралары бар. Барлық құрылғылар пайдаланушы режиміндегі код үшін I/O менеджерінде файлдық нысан ретінде көрінеді, бірақ I/O менеджерінің өзі құрылғыларды файлдық, құрылғылық немесе драйверлік нысандар ретінде анықтайтын құрылғылық нысандар ретінде қарастырады. Ядролық режимдегі драйверлер үш деңгейде болады: жоғары деңгейлі драйверлер, аралық деңгейлі драйверлер және төмен деңгейлі драйверлер. FAT және NTFS файлдық жүйелеріне арналған драйверлер сияқты жоғары деңгейлі драйверлер аралық драйверлерге сүйенеді. Аралық драйверлер төменгі және жоғары деңгейлі сүзгі драйверлерінің арасында орналасқан функциялық драйверлерден немесе құрылғы үшін негізгі драйверлерден тұрады. Функциялық драйвер бұдан әрі автобус драйверіне – автобус контроллеріне, адаптерге немесе көпірге қызмет көрсететін драйверге – сүйенеді, онда өзі мен функциялық драйвердің арасында қосымша автобус сүзгі драйвері болуы мүмкін. Аралық драйверлер жұмыс істеу үшін төменгі деңгейлі драйверлерге сүйенеді. Windows драйверлік моделі (WDM) аралық қабатта орналасқан. Ең төменгі деңгейлі драйверлер – құрылғыны тікелей басқаратын Windows NT құрылғы драйверлері немесе PnP аппараттық шинасы болуы мүмкін. Бұл төменгі деңгейлі драйверлер тікелей аппаратты басқарады және басқа драйверлерге тәуелді болмайды.

Жабдықтық абстракция қабаты

Windows NT аппараттық абстракция қабаты (HAL) – компьютердің физикалық жабдығы мен операциялық жүйенің қалған бөлігі арасындағы қабат. Ол жабдықтағы айырмашылықтарды жасыру және ядроны іске қосу үшін тұрақты платформаны қамтамасыз ету мақсатымен жасалған. HAL-ға I/O интерфейстерін, үзіліс басқарушыларын және көп процессорларды басқаратын жабдыққа қатысты код кіреді. Дегенмен, оның мақсатына және архитектурадағы орнына қарамастан, HAL толығымен ядроның астында орналасқан қабат емес, ядро атқарушыдан төмен орналасқандай: HAL-дың барлық белгілі нұсқалары белгілі бір деңгейде ядроға, тіпті атқарушыға тәуелді болады. Практикалық тұрғыда, бұл ядро мен HAL нұсқалары бірге жұмыс істеуге арналған үйлесімді жиынтықтар түрінде келеді дегенді білдіреді. Атап айтқанда, аппараттық абстракциялау нұсқаулар жиынтығын абстракциялауды қамтымайды, ол көбінесе портативтілік кең ұғымына жатады. Нұсқаулар жиынтығын абстракциялау, қажет болған жағдайда (мысалы, x86 нұсқаулар жиынтығының әртүрлі өңдеулерін басқару немесе математикалық копроцессорды эмуляциялау), ядро арқылы немесе аппараттық виртуализация көмегімен жүзеге асырылады.

Жүктелу реті

Жүгірту реттілігі Vista нұсқаларынан бұрын NTLDR арқылы, ал Vista және одан кейінгі нұсқаларда Windows Boot Manager арқылы басталады. Жүктеуіш жүктеу дискісіндегі файлдық жүйеге қатынауға, ntoskrnl.exe-ді іске қосуға және жүктелу кезіндегі құрылғы драйверлерін жадқа жүктеуге жауапты. Барлық жүктеу және жүйе драйверлері жүктелгеннен кейін, ядро сессия менеджері кіші жүйесін іске қосады. Сессия менеджері Win32 кіші жүйесінің маңызды ядролық және пайдаланушы режиміндегі қызметтерін, мысалы, Клиент/Сервер орындалу уақыты кіші жүйесін іске қосады. Сессия сонымен қатар winlogon процесін іске қосып, пайдаланушыларға тіркелуге және олардың шоттарын пайдалануға мүмкіндік береді.