Ядро аперацыйнай сістэмы

Ядро (англ.: kernel) — асноўны кампанент большасці камп’ютарных аперацыйных сістэм. У пэўным сэнсе яно з’яўляецца мостам паміж праграмамі і фактычнай апрацоўкай дадзеных, якая адбываецца на апаратным узроўні. Абавязкі ядра ўключаюць кіраванне рэсурсамі сістэмы (камунікацыі паміж апаратнай часткай і праграмным забеспячэннем).[1] Звычайна ў якасці асноўнага кампанента аперацыйнай сістэмы ядро забяспечвае найніжэйшы ўзровень абстракцыі для рэсурсаў (асабліва працэсара і прылад уводу/вываду), якімі павінна распараджацца праграмнае забеспячэнне, каб выконваць свае функцыі. Звычайна гэтыя аб’екты робяць даступнымі для праграмных працэсаў праз механізм сувязі паміж працэсамі (англ.: inter-process communication) і сістэмныя выклікі (англ.: system calls).

Ядро злучае праграмы з апаратнай часткай камп’ютара

Розныя ядры па-рознаму выконваюць задачы аперацыйнай сістэмы, у залежнасці ад іх распрацоўкі і рэалізацыі. У той час як маналітныя ядры выконваюць увесь код аперацыйнай сістэмы ў адной і той жа адраснай прасторы, каб павялічыць прадукцыйнасць сістэмы, мікраядры запускаюць большасць сэрвісаў аперацыйнай сістэмы ў карыстальніцкай адраснай прасторы, як серверы, у якасці меры па павышэнню эксплуатацыйнай надзейнасці і модульнасці аперацыйнай сістэмы.[2] Паміж гэтымі дзвюма крайнасцямі ёсць шырокі дыяпазон варыянтаў.

Тыпы архітэктур ядраў аперацыйных сістэм правіць

Маналітнае ядро правіць

Маналітнае ядро ўяўляе сабой багаты набор абстракцый абсталявання. Усе часткі маналітнага ядра працуюць у адной адраснай прасторы. Гэта такая схема аперацыйнай сістэмы, пры якой усе кампаненты яе ядра з’яўляюцца складовымі часткамі адной праграммы і ўжываюць агульныя структуры даных і ўзаемадзейнічаюць адзін з адным шляхам непасрэднага выкліка працэдур. Маналітнае ядро — старэйшы спосаб арганізацыі аперацыйных сістэм. Прыкладам сістэм з маналітным ядром з’яўляецца большасць UNIX-сістэм.

  • Перавагі: Хуткасць работы, спрошчаная распрацоўка модуляў.
  • Недахопы: Так як усё ядро працуе ў адной адраснай прасторы, збой у адным з кампанентаў можа парушыць працаздольнасць усёй сістэмы.

Прыклады: Традыцыйныя ядры UNIX (такія як BSD), Linux; ядро MS-DOS, ядро KolibriOS.

Некаторыя старыя маналітныя ядры, у асаблівасці сістэм класа UNIX/Linux, патрабавалі перакампіляцыі пры любой змене склада абсталявання. Большасць сучасных ядраў дазваляюць падчас работы падгружаць модулі, якія выконваюць частку функцый ядра. У гэтым выпадку кампаненты аперацыйнай сістэмы з’яўляюцца не самастойнымі модулямі, а складовымі часткамі адной вялікай праграмы, якая завецца маналітным ядром (monolithic kernel), якое ўяўляе сабой набор працэдур, кожная з якіх можа выклікаць адвольную. Усе працэдуры працуюць у прывілеяваным рэжыме.

Модульнае ядро правіць

Модульнае ядро — сучасная, удасканаленая мадыфікацыя архітэктуры маналітных ядраў аперацыйных сістэм.

У адрозненні ад «класічных» маналітных адраў, модульныя ядры, як правіла, не патрабуюць поўнай перакампіляцыі ядра пры змяненні складу апаратнага забеспячэння камп’ютара. Замест гэтага модульныя ядры прапануюць той ці іншы механізм падгрузкі модуляў ядра, які падтрымлівае пэўнае апаратнае забеспячэнне (напрыклад, драйверы). Пры гэтым падгрузка модуляў можа быць як дынамічнай (выконвацца «на лёце», без перазагрузкі АС, у працуючай сістэме), так і статычнай (выконваецца пры перазагрузцы АС пасля пераканфігуравання сістэмы на загрузку пэўных модуляў).

Мікраядро правіць

Мікраядро прапануе толькі элементарныя функцыі кіравання працэсамі і мінімальны набор абстракцый для працы з абсталяваннем. Большая частка работы ажыццяўляецца з дапамогай спецыяльных карыстальніцкіх працэсаў, якія завуцца сервісамі. Рашучым крытэрыям «мікраядравасці» з’яўляецца размяшчэнне ўсіх ці амаль усіх драйвераў і модуляў у сервісных працэсах, часам з яўнай немагчымасцю загрузкі любых модуляў пашырэнняў у мікраядро, а таксама распрацоўкі такіх пашырэнняў.

  • Перавагі: Устойлівасць да збояў абсталявання і памылак у кампанентах сістэмы. Асноўная перавага мікраядравай архітэктуры — высокая ступень модульнасці ядра аперацыйнай сістэмы. Гэта істотна спрошчвае даданне ў яго новых кампанентаў. У мікраядравай аперацыйнай сістэме можна, не прыпыняючы яе работы, загружаць і выгружаць новыя драйверы, файлавыя сістэмы і г. д. Істотна спрошчваецца працэс адладкі кампанентаў ядра, так як новая версія драйвера можа загружацца без перазапуску ўсёй аперацыйнай сістэмы. Кампаненты ядра аперацыйнай сістэмы нічым прынцыпова не адрозніваюцца ад карыстальніцкіх праграм, таму для іх адладкі можна выкарыстоўваць звычайныя сродкі. Мікраядравая архітэктура павышае надзейнасць сістэмы, бо памылка на ўзроўні непрывілеяванай праграмы меней небяспечна, чым адмова на ўзроўні рэжыма ядра.
  • Недахопы: Перадача даных паміж працэсамі патрабуе дадатковых выдаткаў.

Класічнае мікраядро прапануе толькі вельмі невялікі шэраг нізкаўзроўневых прымітываў, ці сістэмных выклікаў, якія рэалізуюць базавыя сервісы аперацыйнай сістэмы.

  • Сервісныя працэсы (у прынятай у сямействе UNIX тэрміналогіі — «дэманы») актыўна ўжываюцца ў самых разнастайных АС для задач тыпа запуску праграм па раскладу (UNIX і Windows NT), вядзення журналаў падзей (UNIX і Windows NT), цэнтралізаванай праверкі пароляў і захоўвання пароля бягучага інтэрактыўнага карыстача ў адмыслова абмежаванай вобласці памяці (Windows NT). Тым не менш, не варта лічыць АС мікраядравай толькі з-за ўжывання такой архітэктуры.

Прыклады: Symbian OS; Windows CE; OpenVMS; Mach, GNU/Hurd; Mac OS X; QNX; AIX; Minix; ChorusOS; AmigaOS; MorphOS.

Экзаядро правіць

Экзаядро — ядро аперацыйнай сістэмы, якое ажыццяўляе толькі функцыі ўзаемадзеяння паміж працэсамі, бяспечнага выдаткавання і вяртання рэсурсаў. Мяркуецца, што API для прыкладных праграм будуць даступнымі знешнім адносна ядра бібліятэкам (адкуль і назва архітэктуры).

Магчымасць доступу да прылад на ўзроўні кантролераў дазволіць больш эфектыўна вырашаць некаторыя задачы, якія дрэнна ўпісваюцца ў межы ўніверсальнай АС, напрыклад, рэалізацыя СКБД будзе мець доступ да дыска на ўзроўні сектароў дыска, а не файлаў і кластараў, што станоўча адаб’ецца на хуткадзеянні.

Нанаядро правіць

Нанаядро — архітэктура ядра аперацыйнай сістэмы, у межах якой надзвычай спрошчанае і мінімалістычнае ядро выконвае толькі адну задачу — апрацоўку апаратных перапыненняў, якія генеруюцца прыладамі камп’ютара. Пасля апрацоўкі перапыненняў ад апаратуры нанаядро дасылае інфармацыю аб выніках апрацоўкі (напрыклад, атрыманыя з клавіятуры сімвалы) вышэйлегламу праграмнаму забяспечанню з дапамогай того ж механізма перапыньванняў. Прыкладам з’яўляецца KeyKOS Архівавана 21 чэрвеня 2011. — самая першая АС на нанаядры. Першая версія выйшла яшчэ ў 1983-м годзе.

Гібрыднае ядро правіць

Гібрыдныя ядры — гэта мадыфікаваныя мікраядры, якія дазваляюць для паскарэння работы запускаць «неістотныя» часткі ў прасторы ядра. Прыклад: ядры АС Windows сямейства NT.

Камбінацыя розных падыходаў правіць

Усе разгледжаныя падыходы да будавання аперацыйных сістэм маюць свае перавагі і недахопы. У большасці выпадкаў сучасныя аперацыйныя сістэмы ўжываюць разнастайныя камбінацыі гэтых падыходаў. Так, напрыклад, зараз ядро «Linux» уяўляе сабой маналітную сістэму з асобнымі элементамі модульнага ядра. Пры кампіляцыі ядра можна дазволіць дынамічную загрузку і выгрузку вельмі многіх кампанентаў ядра — так званых модуляў. У момант загрузкі модуля яго код загружаецца на ўзроўні сістэмы і звязваецца з астатняй часткай ядра. Унутры модуля могуць выкарыстоўвацца любыя функцыі, якія экспартуюцца ядром.

Існуюць варыянты АС GNU, у якіх замест маналітнага ядра выкарыстоўваецца ядро Mach (такое ж, як у Hurd), а паверх яго круцяцца ў карыстальніцкай прасторы тыя ж самыя працэсы, якія пры ўжыванні Linux былі б часткамі ядра. Іншым прыкладам змешанага падыхода можа з’яўляцца магчымасць запуску аперацыйнай сістэмы з маналітным ядром пад кіраваннем мікраядра. Так уладкавана 4.4BSD і MkLinux, заснаваныя на мікраядры Mach. Мікраядро забяспечвае кіраванне віртуальнай памяццю і работу нізкаўзроўневых драйвероў. Усе астатнія функцыі, у тым ліку ўзаемадзеянне з прыкладнымі праграмамі, ажыццяўляюцца маналітным ядром. Дадзены падыход сфармаваўся ў выніку спроб выкарыстаць перавагі сікраядравай архітэктуры, захоўваюцы па магчымасці добра адладжаны код маналітнага ядра.

Змешанае ядро, у прынцыпе, павінна аб’ядноўваць перавагі маналітнага ядра і мікраядра: здавалася б, мікраядро і маналітнае ядро — крайнасць, а змешанае — залатая сярэдзіна. У іх магчыма дадаваць драйверы прыладаў двума спосабамі: і ўнутр ядра, і ў карыстальніцкую прастору. Але на практыцы канцэпцыя змешанага ядра часта падкрэслівае не толькі перавагі, але і недахопы абодвух тыпаў ядраў.

Прыклады: Windows NT, DragonFly BSD.

Зноскі

  1. Wulf, W. (1974). "HYDRA: the kernel of a multiprocessor operating system" (PDF). Communications of the ACM. 17 (6): 337–345. doi:10.1145/355616.364017. ISSN 0001-0782. Архівавана з арыгінала (PDF) 19 красавіка 2006. Праверана 19 жніўня 2012. {{cite journal}}: Невядомы параметр |coauthors= ігнараваны (прапануецца |author=) (даведка); Невядомы параметр |deadurl= ігнараваны (прапануецца |url-status=) (даведка); Невядомы параметр |month= ігнараваны (даведка); Пададзена больш чым адно значэнне |author= і |last= specified (даведка) Архіўная копія(недаступная спасылка). Архівавана з першакрыніцы 26 верасня 2007. Праверана 19 жніўня 2012.Архіўная копія(недаступная спасылка). Архівавана з першакрыніцы 26 верасня 2007. Праверана 19 жніўня 2012.
  2. Roch, Benjamin. Monolithic kernel vs. Microkernel (PDF)(недаступная спасылка) (2004). Архівавана з першакрыніцы 1 лістапада 2006. Праверана 19 жніўня 2012.