From Wikipedia, the free encyclopedia
Ядро (англ.: kernel) — асноўны кампанент большасці камп’ютарных аперацыйных сістэм. У пэўным сэнсе яно з’яўляецца мостам паміж праграмамі і фактычнай апрацоўкай дадзеных, якая адбываецца на апаратным узроўні. Абавязкі ядра ўключаюць кіраванне рэсурсамі сістэмы (камунікацыі паміж апаратнай часткай і праграмным забеспячэннем).[1] Звычайна ў якасці асноўнага кампанента аперацыйнай сістэмы ядро забяспечвае найніжэйшы ўзровень абстракцыі для рэсурсаў (асабліва працэсара і прылад уводу/вываду), якімі павінна распараджацца праграмнае забеспячэнне, каб выконваць свае функцыі. Звычайна гэтыя аб’екты робяць даступнымі для праграмных працэсаў праз механізм сувязі паміж працэсамі (англ.: inter-process communication) і сістэмныя выклікі (англ.: system calls).
Розныя ядры па-рознаму выконваюць задачы аперацыйнай сістэмы, у залежнасці ад іх распрацоўкі і рэалізацыі. У той час як маналітныя ядры выконваюць увесь код аперацыйнай сістэмы ў адной і той жа адраснай прасторы, каб павялічыць прадукцыйнасць сістэмы, мікраядры запускаюць большасць сэрвісаў аперацыйнай сістэмы ў карыстальніцкай адраснай прасторы, як серверы, у якасці меры па павышэнню эксплуатацыйнай надзейнасці і модульнасці аперацыйнай сістэмы.[2] Паміж гэтымі дзвюма крайнасцямі ёсць шырокі дыяпазон варыянтаў.
Маналітнае ядро ўяўляе сабой багаты набор абстракцый абсталявання. Усе часткі маналітнага ядра працуюць у адной адраснай прасторы. Гэта такая схема аперацыйнай сістэмы, пры якой усе кампаненты яе ядра з’яўляюцца складовымі часткамі адной праграммы і ўжываюць агульныя структуры даных і ўзаемадзейнічаюць адзін з адным шляхам непасрэднага выкліка працэдур. Маналітнае ядро — старэйшы спосаб арганізацыі аперацыйных сістэм. Прыкладам сістэм з маналітным ядром з’яўляецца большасць UNIX-сістэм.
Прыклады: Традыцыйныя ядры UNIX (такія як BSD), Linux; ядро MS-DOS, ядро KolibriOS.
Некаторыя старыя маналітныя ядры, у асаблівасці сістэм класа UNIX/Linux, патрабавалі перакампіляцыі пры любой змене склада абсталявання. Большасць сучасных ядраў дазваляюць падчас работы падгружаць модулі, якія выконваюць частку функцый ядра. У гэтым выпадку кампаненты аперацыйнай сістэмы з’яўляюцца не самастойнымі модулямі, а складовымі часткамі адной вялікай праграмы, якая завецца маналітным ядром (monolithic kernel), якое ўяўляе сабой набор працэдур, кожная з якіх можа выклікаць адвольную. Усе працэдуры працуюць у прывілеяваным рэжыме.
Модульнае ядро — сучасная, удасканаленая мадыфікацыя архітэктуры маналітных ядраў аперацыйных сістэм.
У адрозненні ад «класічных» маналітных адраў, модульныя ядры, як правіла, не патрабуюць поўнай перакампіляцыі ядра пры змяненні складу апаратнага забеспячэння камп’ютара. Замест гэтага модульныя ядры прапануюць той ці іншы механізм падгрузкі модуляў ядра, які падтрымлівае пэўнае апаратнае забеспячэнне (напрыклад, драйверы). Пры гэтым падгрузка модуляў можа быць як дынамічнай (выконвацца «на лёце», без перазагрузкі АС, у працуючай сістэме), так і статычнай (выконваецца пры перазагрузцы АС пасля пераканфігуравання сістэмы на загрузку пэўных модуляў).
Мікраядро прапануе толькі элементарныя функцыі кіравання працэсамі і мінімальны набор абстракцый для працы з абсталяваннем. Большая частка работы ажыццяўляецца з дапамогай спецыяльных карыстальніцкіх працэсаў, якія завуцца сервісамі. Рашучым крытэрыям «мікраядравасці» з’яўляецца размяшчэнне ўсіх ці амаль усіх драйвераў і модуляў у сервісных працэсах, часам з яўнай немагчымасцю загрузкі любых модуляў пашырэнняў у мікраядро, а таксама распрацоўкі такіх пашырэнняў.
Класічнае мікраядро прапануе толькі вельмі невялікі шэраг нізкаўзроўневых прымітываў, ці сістэмных выклікаў, якія рэалізуюць базавыя сервісы аперацыйнай сістэмы.
Прыклады: 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.
{{cite journal}}
: Пададзена больш чым адно значэнне |author=
і |last=
specified (даведка)Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.