wd wp Пошук:

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

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

Ядро (англ.: 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.

Зноскі

  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. Retrieved on 19 жніўня 2012.  Архівавана 26 верасня 2007.
  2. Roch, Benjamin. Monolithic kernel vs. Microkernel (нявызн.) (PDF) (недаступная спасылка) (2004). Архівавана з першакрыніцы 1 лістапада 2006. Праверана 19 жніўня 2012.
Тэмы гэтай старонкі (3):
Катэгорыя·Аперацыйная сістэма
Катэгорыя·Вікіпедыя·Старонкі з модулем Hatnote з чырвонай спасылкай
Катэгорыя·Старонкі з няправільным сінтаксісам спасылак на крыніцы