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

З пляцоўкі Вікіпедыя
Перайсці да: рух, знайсці
Ядро злучае праграмы з апаратнай часткай камп'ютара

Ядро (англ.: 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 — самая першая АС на нанаядры. Першая версія выйшла яшчэ ў 1983-м годзе.

Гібрыднае ядро[правіць | правіць зыходнік]

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

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

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

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

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

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


Зноскі

  1. Wulf, W.; E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, F. Pollack (June 1974). "HYDRA: the kernel of a multiprocessor operating system". Communications of the ACM 17 (6): 337–345. doi:10.1145/355616.364017. ISSN 0001-0782. http://www.cs.virginia.edu/papers/p337-wulf.pdf. 
  2. Roch, Benjamin Monolithic kernel vs. Microkernel (PDF) (2004). Архівавана з першакрыніцы 1 лістапада 2006.