Ядро́ (англ. Kernel) — центральна частина операційної системи, що реалізовує інтерфейс між прикладними процесами та обладнанням комп'ютера. Завантажується в оперативну пам'ять комп'ютера і безпосередньо взаємодіє з апаратурою, забезпечуючи керування апаратними засобами (при цьому використовуються драйвери (модулі ядра) підключеного в систему обладнання), підтримку одночасної роботи багатьох користувачів (багатокористувацький режим), підтримку паралельного виконання багатьох процесів в системі (багатозадачність). Зазвичай ядро робить ці об'єкти доступними для прикладних процесів через і системних викликів.
Кожна операційна система реалізує ці завдання по-різному, залежно від своєї реалізації та дизайну. Наприклад, монолітні ядра виконують весь код операційної системи для збільшення продуктивності в одному адресному просторі, мікроядра запускають більшість служб операційної системи в просторі користувача як сервери, що спрямовані на підвищення експлуатаційної надійності та модульності операційної системи.
Складові частини ядра операційної системи
Основне завдання ядра — керування ресурсами комп'ютера та керування їхньою доступністю іншим програмам для запуску і використання. Як правило, основними ресурсами ядра є:
- Центральний процесор — головна частина комп'ютерної системи, відповідає за функціонування та виконання програм. Ядро бере на себе відповідальність за прийняття рішень про кількість процесорного часу, який виділяється для запущених програм.
- Оперативна пам'ять. Пам'ять використовується для зберігання команд і даних процесів. Як правило, обидва ці елементи повинні бути в пам'яті для можливості виконання програми. Одним з головних обов'язків ядра є керування ресурсами оперативної пам'яті комп'ютера. Наприклад, у сучасних операційних системах ядро надає процесам віртуальний адресний простір, що може бути розміром більшим ніж доступна оперативна пам'ять.
- Будь-які пристрої введення та виведення (I/O), підключені до комп'ютера, такі як клавіатура, миша, дисководи, принтери, монітори тощо. Ядро виділяє можливість запиту від програм для виконання операцій вводу/виводу відповідного пристрою і надає користувачеві зручні абстракції основних функцій пристрою.
Ключові аспекти, необхідні для керування ресурсами є визначення домену виконання (адресного простору), а також механізму захисту, який використовується для роботи з доступом до ресурсів домену. Ядра також зазвичай надають методи для синхронізації і взаємодії між процесами (так механізм міжпроцесної взаємодії або IPC). Ядро може виконувати ці функції самостійно або покладатися на деякі процеси, які запускаються ним забезпечення умов для інших процесів, хоча у цьому випадку ядро повинне надати деякі засоби IPC, щоб дозволити цим спеціальним процесам доступ до внутрішньої структури прикладних процесів. Нарешті, ядро має забезпечити запущені програми методами, які дозволяють робити запити на доступ до цих об'єктів.
Керування процесами
Основним завданням ядра є можливість виконання програм і їхня підтримка за допомогою апаратних абстракцій. Процес визначає, до яких частин пам'яті може отримати доступ застосунок. (часто поняття «застосунок», «процес» і «програма» використовуються як синоніми). Керування процесами у ядрі має враховувати вбудовані апаратні засоби для захисту пам'яті.
Для запуску програми ядро зазвичай визначає адресний простір для процесів, завантажує програмний код у пам'ять, готує стек для програми і починає виконання програмного коду в заданому місці.
Багатозадачність ядра дозволяє давати користувачеві ілюзію того, що число процесів, які можуть одночасно працювати на комп'ютері більше, ніж максимальне число процесів, що комп'ютер фізично здатний одночасно виконувати. Як правило, максимальна кількість одночасних процесів у системі дорівнює кількості процесорів.
У витискальній багатозадачності ядро надає кожному процесу деяку фіксовану кількість часу, при цьому швидко перемикаючись між кожним процесом так, що у користувача виникає відчуття одночасності виконання цих процесів. Кількість часу, яка виділяється для кожного процесу визначається за допомогою алгоритму планування виконання задач. Цей алгоритм також визначає пріоритетність виконання процесів. Ядро зазвичай цим процесам деякий інтерфейс для взаємодії між собою: так звані засоби взаємодії між процесами, а основними підходами є спільна пам'ять, обмін повідомленнями і виклик віддалених процедур.
Інші операційні системи (зокрема на менших, менш потужних комп'ютерах) можуть використовувати кооперативну багатозадачність, де кожен процес виконується неперервно до тих пір, поки цей процес не пошле спеціальний запит до ядра, що дає дозвіл на початок виконання іншого процесу. Старі версії Windows та Mac OS використовували кооперативну багатозадачність, але зрештою, із зростанням потужності комп'ютерів, вони перейшли на витискальну багатозадачність.
Операційна система також може мати підтримку багатопроцесорності; в цьому випадку програми і нитки можуть виконуватися на різних процесорах. Для цього ядро повинно бути повторно використовуваним, що означає можливість запуску двох або більше частин коду одночасно.
Керування пам'яттю
Ядро має повний доступ до системної пам'яті і надає процесам безпечний доступ до неї у разі необхідності. Найчастіше першим кроком задля досягнення цього є створення віртуальної пам'яті, зазвичай це досягається за допомогою файлу підкачування та сегментної адресації пам'яті. Віртуальна адресація дозволяє ядру зробити певну фізичну адресу видимою під іншою віртуальною адресою. Простори віртуальних адрес можуть бути різними для різних процесів; пам'ять, до якої має доступ один процес під віртуальною адресою, може мати зовсім іншу віртуальну адресу в просторі адресу іншого процесу. Це дозволяє абстрагувати різні процеси один від одного, що запобігає використанню однієї ділянки пам'яті різними процесами.
На багатьох системах віртуальна адреса може посилатися на дані, що ще не завантажені. Шар абстракції, забезпечений віртуальним адресуванням, дозволяє операційній системі використовувати інші накопичувачі даних, такі як тверді диски або флеш-пам'ять. В результаті операційна система дозволяє використовувати більше пам'яті, ніж фізично є на комп'ютері.
Віртуальне адресування також дозволяє створення віртуальних розділів пам'яті у двох розділених областях, одна з який зарезервована для ядра, а друга для прикладних програм (). Застосунки не мають можливості доступу до пам'яті простору ядра, що досягається використанням спеціальних захисних механізмів процесора.
Керування пристроями
Для виконання корисних функцій ядру потрібно мати доступ до периферійних пристроїв, які керуються ним за допомогою драйверів. Наприклад, для того, щоб показати щось на екрані, програма спочатку надсилає запит до ядра, яке перенаправляє його до драйверу відеокарти, який відповідальний за фактичне відображення пікселів.
Ядро повинне зберігати список усіх наявних пристроїв. Цей список може бути відомий заздалегідь (наприклад у вбудованих системах, де ядро переписується кожен раз при зміні апаратного забезпечення), сконфігурований користувачем (найчастіше на старих системах або системах, які не призначені для персонального користування) або знайдений операційною системою під час часу виконання.
В системах plug and play менеджер пристроїв спочатку сканує різні порти, а потім робить спробу розпізнати підключені пристрої і знайти для них потрібний драйвер.
Реалізація керування пристроями дуже відрізняється в різних операційних системах, але, в усякому випадку, ядро повинне надати інтерфейс вводу/виводу, щоб дозволити драйверам мати доступ напряму до пристрою через якийсь порт або ділянку пам'яті.
Системні виклики
Щоб дійсно виконати потрібну роботу, процес має мати доступ до служб, наданих ядром. Реалізація цього інтерфейсу різна у кожному ядрі, але більшість ядер надає бібліотеку на C і програмний інтерфейс до неї, яка в свою чергу звертається до функцій ядра. Метод, за допомогою якого здійснюється звертання до ядра дуже варіюється в залежності від реалізації. Якщо застосовується ізоляція пам'яті, то користувацький процес не має прямого доступу до ядра, тому що це було би порушенням правил доступу центрального процесора. Серед наявних методів виділяються:
- Використовуючи симульоване програмно переривання. Цей метод доступний на більшості апаратних платформ, а тому дуже поширений.
- Використовуючи шлюз виклику. Шлюз виклику — спеціальна адреса у пам'яті ядра у місці, відомому процесору. Коли процесор помічає виклик до цієї адреси, він натомість перенаправляє його до цільового місця без порушення правил доступу. Такий метод потребує апаратної підтримки, але апаратне забезпечення для нього досить поширене.
- Використовуючи спеціальну інструкцію системного виклику. Цей спосіб потребує специфічної апаратної підтримки. Інструкції системних викликів (syscall, sysenter) наявні у сучасних моделях процесорів x86 і активно використовуються сучасними ОС.
- Використовуючи чергу в пам'яті. Програма, що робить велику кількість запитів, але не має потреби чекати результату кожного із них може додавати ці запити в спеціальну ділянку оперативної пам'яті, яка періодично сканується ядром.[]
Підходи до проектування ядра
Монолітне ядро
У монолітному ядрі усі служби операційної системи запускаються в одній області пам'яті із ниттю ядра. Цей підхід забезпечує глибокий і потужний доступ до апаратних засобів. Деякі фахівці, такі як розробник операційної системи UNIX Кен Томпсон, дотримуються думки, що «реалізація монолітного ядра значно простіша ніж мікроядра». Основним недоліком монолітних ядер є залежність між системними компонентами — помилка у системному драйвері може призвести до збою всієї ОС — цей факт робить великі ядра складними у підтримці.
Мікроядро
Мікроядро складається із простої абстракції над апаратним забезпеченням, включаючи набір примітивів чи системних викликів для реалізації таких мінімальних служб ОС як керування пам'яттю, багатозадачність та інтерфейс міжпроцесної взаємодії. Інші служби, включаючи ті, що зазвичай забезпечуються ядром, реалізовуються як застосунки простору користувача і називаються серверами. Мікроядра легше підтримувані, ніж монолітні ядра, але дуже велика кількість системних викликів та перемикань контексту можуть сповільнити систему, бо вони зазвичай мають більші накладні витрати.
При використанні мікроядра, всю решту операційної системи можна реалізувати як звичайні прикладні програми, що дозволяє використання мов програмування високого рівня. Також можна використовувати різні ОС на одному мікроядрі, динамічно міняти ОС в реальному часі та запускати більше за одну ОС одночасно.
Порівняння монолітних та мікроядер
Із зростанням розміру ядра, все більше проблем стають очевидними. Перш за все це збільшені вимоги до об'єму оперативної пам'яті. Це дещо пом'якшується удосконаленням системи віртуальної пам'яті, але не всі комп'ютерні архітектури підтримують її. Щоб зменшити системні вимоги ядра також дуже ефективним є видалення невикористовуваного коду, але це може бути досить складною задачею при не очевидних взаємозалежностях між компонентами.
До початку 1990-х, внаслідок недоліків монолітних ядер у порівнянні з мікроядрами, монолітні ядра вважалися застарілими більшістю дослідників. Саме тому розробка ядра Linux як монолітного ядра стала темою відомої дискусії між Лінусом Торвальдсом та Ендрю Танембаумом. Суть цієї суперечки представлена у статті .
Гібридне ядро
Гібридні ядра є компромісом між монолітними та мікроядрами. Це припускає запуск деяких служб (наприклад мережевого стеку та файлової системи) у просторі ядра для зменшення накладних витрат традиційного мікроядра, але більшість служб запускаються у просторі користувача.
Наноядро
Для зменшення вимог до оперативної пам'яті, наноядро делегує практично всі служби, включаючи найбільш основні, такі як контролери переривань і таймер, до драйверів пристроїв.
Екзоядро
Екзоядро — це тип ядра, що не абстрагує апаратні засоби у теоретичну модель, замість цього воно розподіляє всі апаратні ресурси, включаючи процесорний час, пам'ять та блоки диску, між усіма програмами. Програма, запущена на екзоядрі може використовувати бібліотеку операційної системи для симуляції абстракцій розповсюджених ОС чи розробки програмо-залежних абстракцій для кращої швидкодії.
Історія розвитку різних типів ядер
Ранні ядра операційних систем
Щиро кажучи, ОС чи ядро не є передумовою можливості запуску програмного забезпечення на комп'ютері. Програми можна виконати на «голому залізі» за умови, що автор програми готовий пожертвувати шаром апаратної абстракції та доступом до можливостей ОС. Більшість комп'ютерів у період 1950—1960 років працювали саме таким чином і їх потрібно було перезапускати при закінченні виконання кожної програми. Зрештою були написані невеликі допоміжні програми, такі як програма-завантажувач і зневаджувач, які залишалися у пам'яті між запуском різних застосунків. Це і стало початком зародження розвитку ядер операційної системи.
У 1969 році була представлена RC 4000 Multiprogramming System, що включала невелике ядро «на якому можна створити ядра операційних систем для різних цілей у впорядкований спосіб». Сьогодні такий метод називається мікроядерним підходом.
Операційні системи з розподілом часу
Протягом десятиліття, що передувало появі Unix, обчислювальна потужність комп'ютерів значно зросла — до етапу, коли операторам комп'ютера потрібні були нові шляхи використання вільних ресурсів на їхніх машинах. Однією з основних подій у цей період стала розробка ОС з розподілом часу, які дозволяли багатьом користувачам одночасно працювати за одним комп'ютером, почергово отримуючи фрагменти обчислювального часу.
Впровадження ОС із розподілом часу зіткнулося із безліччю проблем. Однією з них було те, що значно почастішали випадки злому таких систем для присвоєння собі більшої кількості обчислювального часу. З цієї причини безпека та керування доступом стали основними пріоритетами проекту Multics у 1965 році. Іншим поточним питанням був правильний розподіл ресурсів між користувачами: було помічено, що більшість часу користувач просто дивиться на екран, не використовуючи наданих ресурсів, а тому пріоритет повинен надаватися активним користувачам. Нарешті, системи як правило надавали багатошарову ієрархію пам'яті, розділення цього цінного ресурсу привело до сильних зрушень у системах віртуальної пам'яті.
Amiga
Amiga, платформа розроблена компанією Commodore International і випущена у 1985 році була в числі перших (і найуспішніших) домашніх комп'ютерів на мікроядерній операційній системі. AmigaOS мала невелике, проте потужне ядро, яке реалізовувало витискальну багатозадачність на апаратній платформі, подібній до Apple Macintosh (на якій використовувалася кооперативна багатозадачність) і мало розвинену систему динамічних бібліотек, що дозволяло легке розширення.
Unix
Під час стадії проектування Unix програмісти вирішили створити систему, яка моделювала би кожен високорівневий пристрій, доступний ОС, як звичайний файл. Наприклад принтери представлялися як файли, що доступні за певною фіксованою адресою, і коли відбувався запис у файл, то це було сигналом принтеру до роздрукування введеного тексту. Така віртуалізація доступу до пристроїв дозволяла користувачам керувати всією системою, використовуючи звичайні утиліти керування файловою системою. Розширенням цієї парадигми у Unix стала концепція конвеєра, що дозволяє покрокове розбиття процесу, пропускаючи дані файлу через низку однозадачних консольних програм.
Згідно з концепцією Unix, операційна система складається із двох частин: великого набору службових програм, що виконують більшість операцій, і ядра ОС, що запускає програми. За цією концепцією, із позиції програмування, єдиною відмінністю між ними є те, що ядро запускається у режимі супервізора і слугує завантажувачем та керівною програмою для невеликих службових застосунків, що складають решту системи.
Через деякий час ця концепція була дещо змінена, бо трактування всього як файлу чи потоку байтів було не так зручно застосовне, як раніше. Хоча комп'ютерний термінал і можна розглядати як файл або потік байтів, це саме не можна зробити для графічного інтерфейсу користувача. Ще одною проблемою було мережеве сполучення. Навіть якщо його можна порівняти із доступом до файлу на високому рівні, то низькорівнева пакетно-орієнтована архітектура повинна бути призначена для окремих шматків даних, а не всього файлу. Зі зростанням можливостей комп'ютерів операційні системи Unix та побудовані на її базі стали перенасичені програмним кодом. Якщо ядра у 70-80-ті роки мали не більше 100 000 рядків коду, то сучасні Unix-подібні ОС, такі як Linux мають понад 13 мільйонів рядків коду.
Сучасні ОС, похідні від Unix, як правило базуються на монолітних ядрах з можливістю завантаження модулів. Ця група включає Linux та варіанти BSD, такі як FreeBSD, DragonFly BSD, OpenBSD і NetBSD.
Mac OS
Mac OS вперше було представлено у 1984 році. Вона була основною операційною системою персонального комп'ютера Macintosh від Apple Computer. Хоча перші випуски Mac OS не мали таких основних можливостей як багатозадачність та ієрархічна файлова система, ці недоліки були усунуті до версії Mac OS 9. Mac OS X має повністю відмінне гібридне ядро від попередніх версій, яке має назву XNU і є частиною проекту Darwin.
Microsoft Windows
Перша версія Microsoft Windows була представлена у 1985 році як додаток до MS-DOS. Через залежність від іншої ОС, перші версії Windows прийнято називати операційним середовищем (на відміну від поняття операційної системи). Повноцінною ОС Windows стала з появою серії Windows 9x, що включала такі покращення як 32-бітне адресування та витискальну багатозадачність. Паралельно з основною, Microsoft також розробляла серію Windows NT, що була призначена для дуже досвідчених і бізнес користувачів.
Windows XP, випущена у жовтні 2001 року, з'єднувала у собі ці дві серії, об'єднуючи стабільність ядра NT із зручністю користування Windows 9x. Windows NT архітектурно вважається гібридним ядром, де служба графічного інтерфейсу та деякі інші допоміжні програми вбудовані в ядро, а решта служб запускається у просторі користувача.
Див. також
Це незавершена стаття про операційні системи. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття не містить . (січень 2016) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Yadro angl Kernel centralna chastina operacijnoyi sistemi sho realizovuye interfejs mizh prikladnimi procesami ta obladnannyam komp yutera Zavantazhuyetsya v operativnu pam yat komp yutera i bezposeredno vzayemodiye z aparaturoyu zabezpechuyuchi keruvannya aparatnimi zasobami pri comu vikoristovuyutsya drajveri moduli yadra pidklyuchenogo v sistemu obladnannya pidtrimku odnochasnoyi roboti bagatoh koristuvachiv bagatokoristuvackij rezhim pidtrimku paralelnogo vikonannya bagatoh procesiv v sistemi bagatozadachnist Zazvichaj yadro robit ci ob yekti dostupnimi dlya prikladnih procesiv cherez i sistemnih viklikiv Yadro sluzhit mostom mizh prikladnim programnim i aparatnim zabezpechennyam komp yutera Kozhna operacijna sistema realizuye ci zavdannya po riznomu zalezhno vid svoyeyi realizaciyi ta dizajnu Napriklad monolitni yadra vikonuyut ves kod operacijnoyi sistemi dlya zbilshennya produktivnosti v odnomu adresnomu prostori mikroyadra zapuskayut bilshist sluzhb operacijnoyi sistemi v prostori koristuvacha yak serveri sho spryamovani na pidvishennya ekspluatacijnoyi nadijnosti ta modulnosti operacijnoyi sistemi Skladovi chastini yadra operacijnoyi sistemiOsnovne zavdannya yadra keruvannya resursami komp yutera ta keruvannya yihnoyu dostupnistyu inshim programam dlya zapusku i vikoristannya Yak pravilo osnovnimi resursami yadra ye Centralnij procesor golovna chastina komp yuternoyi sistemi vidpovidaye za funkcionuvannya ta vikonannya program Yadro bere na sebe vidpovidalnist za prijnyattya rishen pro kilkist procesornogo chasu yakij vidilyayetsya dlya zapushenih program Operativna pam yat Pam yat vikoristovuyetsya dlya zberigannya komand i danih procesiv Yak pravilo obidva ci elementi povinni buti v pam yati dlya mozhlivosti vikonannya programi Odnim z golovnih obov yazkiv yadra ye keruvannya resursami operativnoyi pam yati komp yutera Napriklad u suchasnih operacijnih sistemah yadro nadaye procesam virtualnij adresnij prostir sho mozhe buti rozmirom bilshim nizh dostupna operativna pam yat Bud yaki pristroyi vvedennya ta vivedennya I O pidklyucheni do komp yutera taki yak klaviatura misha diskovodi printeri monitori tosho Yadro vidilyaye mozhlivist zapitu vid program dlya vikonannya operacij vvodu vivodu vidpovidnogo pristroyu i nadaye koristuvachevi zruchni abstrakciyi osnovnih funkcij pristroyu Klyuchovi aspekti neobhidni dlya keruvannya resursami ye viznachennya domenu vikonannya adresnogo prostoru a takozh mehanizmu zahistu yakij vikoristovuyetsya dlya roboti z dostupom do resursiv domenu Yadra takozh zazvichaj nadayut metodi dlya sinhronizaciyi i vzayemodiyi mizh procesami tak mehanizm mizhprocesnoyi vzayemodiyi abo IPC Yadro mozhe vikonuvati ci funkciyi samostijno abo pokladatisya na deyaki procesi yaki zapuskayutsya nim zabezpechennya umov dlya inshih procesiv hocha u comu vipadku yadro povinne nadati deyaki zasobi IPC shob dozvoliti cim specialnim procesam dostup do vnutrishnoyi strukturi prikladnih procesiv Nareshti yadro maye zabezpechiti zapusheni programi metodami yaki dozvolyayut robiti zapiti na dostup do cih ob yektiv Keruvannya procesami Osnovnim zavdannyam yadra ye mozhlivist vikonannya program i yihnya pidtrimka za dopomogoyu aparatnih abstrakcij Proces viznachaye do yakih chastin pam yati mozhe otrimati dostup zastosunok chasto ponyattya zastosunok proces i programa vikoristovuyutsya yak sinonimi Keruvannya procesami u yadri maye vrahovuvati vbudovani aparatni zasobi dlya zahistu pam yati Dlya zapusku programi yadro zazvichaj viznachaye adresnij prostir dlya procesiv zavantazhuye programnij kod u pam yat gotuye stek dlya programi i pochinaye vikonannya programnogo kodu v zadanomu misci Bagatozadachnist yadra dozvolyaye davati koristuvachevi ilyuziyu togo sho chislo procesiv yaki mozhut odnochasno pracyuvati na komp yuteri bilshe nizh maksimalne chislo procesiv sho komp yuter fizichno zdatnij odnochasno vikonuvati Yak pravilo maksimalna kilkist odnochasnih procesiv u sistemi dorivnyuye kilkosti procesoriv U vitiskalnij bagatozadachnosti yadro nadaye kozhnomu procesu deyaku fiksovanu kilkist chasu pri comu shvidko peremikayuchis mizh kozhnim procesom tak sho u koristuvacha vinikaye vidchuttya odnochasnosti vikonannya cih procesiv Kilkist chasu yaka vidilyayetsya dlya kozhnogo procesu viznachayetsya za dopomogoyu algoritmu planuvannya vikonannya zadach Cej algoritm takozh viznachaye prioritetnist vikonannya procesiv Yadro zazvichaj cim procesam deyakij interfejs dlya vzayemodiyi mizh soboyu tak zvani zasobi vzayemodiyi mizh procesami a osnovnimi pidhodami ye spilna pam yat obmin povidomlennyami i viklik viddalenih procedur Inshi operacijni sistemi zokrema na menshih mensh potuzhnih komp yuterah mozhut vikoristovuvati kooperativnu bagatozadachnist de kozhen proces vikonuyetsya neperervno do tih pir poki cej proces ne poshle specialnij zapit do yadra sho daye dozvil na pochatok vikonannya inshogo procesu Stari versiyi Windows ta Mac OS vikoristovuvali kooperativnu bagatozadachnist ale zreshtoyu iz zrostannyam potuzhnosti komp yuteriv voni perejshli na vitiskalnu bagatozadachnist Operacijna sistema takozh mozhe mati pidtrimku bagatoprocesornosti v comu vipadku programi i nitki mozhut vikonuvatisya na riznih procesorah Dlya cogo yadro povinno buti povtorno vikoristovuvanim sho oznachaye mozhlivist zapusku dvoh abo bilshe chastin kodu odnochasno Keruvannya pam yattyu Yadro maye povnij dostup do sistemnoyi pam yati i nadaye procesam bezpechnij dostup do neyi u razi neobhidnosti Najchastishe pershim krokom zadlya dosyagnennya cogo ye stvorennya virtualnoyi pam yati zazvichaj ce dosyagayetsya za dopomogoyu fajlu pidkachuvannya ta segmentnoyi adresaciyi pam yati Virtualna adresaciya dozvolyaye yadru zrobiti pevnu fizichnu adresu vidimoyu pid inshoyu virtualnoyu adresoyu Prostori virtualnih adres mozhut buti riznimi dlya riznih procesiv pam yat do yakoyi maye dostup odin proces pid virtualnoyu adresoyu mozhe mati zovsim inshu virtualnu adresu v prostori adresu inshogo procesu Ce dozvolyaye abstraguvati rizni procesi odin vid odnogo sho zapobigaye vikoristannyu odniyeyi dilyanki pam yati riznimi procesami Na bagatoh sistemah virtualna adresa mozhe posilatisya na dani sho she ne zavantazheni Shar abstrakciyi zabezpechenij virtualnim adresuvannyam dozvolyaye operacijnij sistemi vikoristovuvati inshi nakopichuvachi danih taki yak tverdi diski abo flesh pam yat V rezultati operacijna sistema dozvolyaye vikoristovuvati bilshe pam yati nizh fizichno ye na komp yuteri Virtualne adresuvannya takozh dozvolyaye stvorennya virtualnih rozdiliv pam yati u dvoh rozdilenih oblastyah odna z yakij zarezervovana dlya yadra a druga dlya prikladnih program Zastosunki ne mayut mozhlivosti dostupu do pam yati prostoru yadra sho dosyagayetsya vikoristannyam specialnih zahisnih mehanizmiv procesora Keruvannya pristroyami Dlya vikonannya korisnih funkcij yadru potribno mati dostup do periferijnih pristroyiv yaki keruyutsya nim za dopomogoyu drajveriv Napriklad dlya togo shob pokazati shos na ekrani programa spochatku nadsilaye zapit do yadra yake perenapravlyaye jogo do drajveru videokarti yakij vidpovidalnij za faktichne vidobrazhennya pikseliv Yadro povinne zberigati spisok usih nayavnih pristroyiv Cej spisok mozhe buti vidomij zazdalegid napriklad u vbudovanih sistemah de yadro perepisuyetsya kozhen raz pri zmini aparatnogo zabezpechennya skonfigurovanij koristuvachem najchastishe na starih sistemah abo sistemah yaki ne priznacheni dlya personalnogo koristuvannya abo znajdenij operacijnoyu sistemoyu pid chas chasu vikonannya V sistemah plug and play menedzher pristroyiv spochatku skanuye rizni porti a potim robit sprobu rozpiznati pidklyucheni pristroyi i znajti dlya nih potribnij drajver Realizaciya keruvannya pristroyami duzhe vidriznyayetsya v riznih operacijnih sistemah ale v usyakomu vipadku yadro povinne nadati interfejs vvodu vivodu shob dozvoliti drajveram mati dostup napryamu do pristroyu cherez yakijs port abo dilyanku pam yati Sistemni vikliki Dokladnishe Sistemnij viklik Shob dijsno vikonati potribnu robotu proces maye mati dostup do sluzhb nadanih yadrom Realizaciya cogo interfejsu rizna u kozhnomu yadri ale bilshist yader nadaye biblioteku na C i programnij interfejs do neyi yaka v svoyu chergu zvertayetsya do funkcij yadra Metod za dopomogoyu yakogo zdijsnyuyetsya zvertannya do yadra duzhe variyuyetsya v zalezhnosti vid realizaciyi Yaksho zastosovuyetsya izolyaciya pam yati to koristuvackij proces ne maye pryamogo dostupu do yadra tomu sho ce bulo bi porushennyam pravil dostupu centralnogo procesora Sered nayavnih metodiv vidilyayutsya Vikoristovuyuchi simulovane programno pererivannya Cej metod dostupnij na bilshosti aparatnih platform a tomu duzhe poshirenij Vikoristovuyuchi shlyuz vikliku Shlyuz vikliku specialna adresa u pam yati yadra u misci vidomomu procesoru Koli procesor pomichaye viklik do ciyeyi adresi vin natomist perenapravlyaye jogo do cilovogo miscya bez porushennya pravil dostupu Takij metod potrebuye aparatnoyi pidtrimki ale aparatne zabezpechennya dlya nogo dosit poshirene Vikoristovuyuchi specialnu instrukciyu sistemnogo vikliku Cej sposib potrebuye specifichnoyi aparatnoyi pidtrimki Instrukciyi sistemnih viklikiv syscall sysenter nayavni u suchasnih modelyah procesoriv x86 i aktivno vikoristovuyutsya suchasnimi OS Vikoristovuyuchi chergu v pam yati Programa sho robit veliku kilkist zapitiv ale ne maye potrebi chekati rezultatu kozhnogo iz nih mozhe dodavati ci zapiti v specialnu dilyanku operativnoyi pam yati yaka periodichno skanuyetsya yadrom dzherelo Pidhodi do proektuvannya yadraMonolitne yadro Dokladnishe Monolitne yadro U monolitnomu yadri usi sluzhbi operacijnoyi sistemi zapuskayutsya v odnij oblasti pam yati iz nittyu yadra Cej pidhid zabezpechuye glibokij i potuzhnij dostup do aparatnih zasobiv Deyaki fahivci taki yak rozrobnik operacijnoyi sistemi UNIX Ken Tompson dotrimuyutsya dumki sho realizaciya monolitnogo yadra znachno prostisha nizh mikroyadra Osnovnim nedolikom monolitnih yader ye zalezhnist mizh sistemnimi komponentami pomilka u sistemnomu drajveri mozhe prizvesti do zboyu vsiyeyi OS cej fakt robit veliki yadra skladnimi u pidtrimci Mikroyadro Dokladnishe Mikroyadro Mikroyadro skladayetsya iz prostoyi abstrakciyi nad aparatnim zabezpechennyam vklyuchayuchi nabir primitiviv chi sistemnih viklikiv dlya realizaciyi takih minimalnih sluzhb OS yak keruvannya pam yattyu bagatozadachnist ta interfejs mizhprocesnoyi vzayemodiyi Inshi sluzhbi vklyuchayuchi ti sho zazvichaj zabezpechuyutsya yadrom realizovuyutsya yak zastosunki prostoru koristuvacha i nazivayutsya serverami Mikroyadra legshe pidtrimuvani nizh monolitni yadra ale duzhe velika kilkist sistemnih viklikiv ta peremikan kontekstu mozhut spovilniti sistemu bo voni zazvichaj mayut bilshi nakladni vitrati Pri vikoristanni mikroyadra vsyu reshtu operacijnoyi sistemi mozhna realizuvati yak zvichajni prikladni programi sho dozvolyaye vikoristannya mov programuvannya visokogo rivnya Takozh mozhna vikoristovuvati rizni OS na odnomu mikroyadri dinamichno minyati OS v realnomu chasi ta zapuskati bilshe za odnu OS odnochasno Porivnyannya monolitnih ta mikroyader Iz zrostannyam rozmiru yadra vse bilshe problem stayut ochevidnimi Persh za vse ce zbilsheni vimogi do ob yemu operativnoyi pam yati Ce desho pom yakshuyetsya udoskonalennyam sistemi virtualnoyi pam yati ale ne vsi komp yuterni arhitekturi pidtrimuyut yiyi Shob zmenshiti sistemni vimogi yadra takozh duzhe efektivnim ye vidalennya nevikoristovuvanogo kodu ale ce mozhe buti dosit skladnoyu zadacheyu pri ne ochevidnih vzayemozalezhnostyah mizh komponentami Do pochatku 1990 h vnaslidok nedolikiv monolitnih yader u porivnyanni z mikroyadrami monolitni yadra vvazhalisya zastarilimi bilshistyu doslidnikiv Same tomu rozrobka yadra Linux yak monolitnogo yadra stala temoyu vidomoyi diskusiyi mizh Linusom Torvaldsom ta Endryu Tanembaumom Sut ciyeyi superechki predstavlena u statti Gibridne yadro Dokladnishe Gibridne yadro Gibridni yadra ye kompromisom mizh monolitnimi ta mikroyadrami Ce pripuskaye zapusk deyakih sluzhb napriklad merezhevogo steku ta fajlovoyi sistemi u prostori yadra dlya zmenshennya nakladnih vitrat tradicijnogo mikroyadra ale bilshist sluzhb zapuskayutsya u prostori koristuvacha Nanoyadro Dokladnishe Nanoyadro Dlya zmenshennya vimog do operativnoyi pam yati nanoyadro deleguye praktichno vsi sluzhbi vklyuchayuchi najbilsh osnovni taki yak kontroleri pererivan i tajmer do drajveriv pristroyiv Ekzoyadro Dokladnishe Ekzoyadro Ekzoyadro ce tip yadra sho ne abstraguye aparatni zasobi u teoretichnu model zamist cogo vono rozpodilyaye vsi aparatni resursi vklyuchayuchi procesornij chas pam yat ta bloki disku mizh usima programami Programa zapushena na ekzoyadri mozhe vikoristovuvati biblioteku operacijnoyi sistemi dlya simulyaciyi abstrakcij rozpovsyudzhenih OS chi rozrobki programo zalezhnih abstrakcij dlya krashoyi shvidkodiyi Istoriya rozvitku riznih tipiv yaderRanni yadra operacijnih sistem Shiro kazhuchi OS chi yadro ne ye peredumovoyu mozhlivosti zapusku programnogo zabezpechennya na komp yuteri Programi mozhna vikonati na golomu zalizi za umovi sho avtor programi gotovij pozhertvuvati sharom aparatnoyi abstrakciyi ta dostupom do mozhlivostej OS Bilshist komp yuteriv u period 1950 1960 rokiv pracyuvali same takim chinom i yih potribno bulo perezapuskati pri zakinchenni vikonannya kozhnoyi programi Zreshtoyu buli napisani neveliki dopomizhni programi taki yak programa zavantazhuvach i znevadzhuvach yaki zalishalisya u pam yati mizh zapuskom riznih zastosunkiv Ce i stalo pochatkom zarodzhennya rozvitku yader operacijnoyi sistemi U 1969 roci bula predstavlena RC 4000 Multiprogramming System sho vklyuchala nevelike yadro na yakomu mozhna stvoriti yadra operacijnih sistem dlya riznih cilej u vporyadkovanij sposib Sogodni takij metod nazivayetsya mikroyadernim pidhodom Operacijni sistemi z rozpodilom chasu Protyagom desyatilittya sho pereduvalo poyavi Unix obchislyuvalna potuzhnist komp yuteriv znachno zrosla do etapu koli operatoram komp yutera potribni buli novi shlyahi vikoristannya vilnih resursiv na yihnih mashinah Odniyeyu z osnovnih podij u cej period stala rozrobka OS z rozpodilom chasu yaki dozvolyali bagatom koristuvacham odnochasno pracyuvati za odnim komp yuterom pochergovo otrimuyuchi fragmenti obchislyuvalnogo chasu Vprovadzhennya OS iz rozpodilom chasu zitknulosya iz bezlichchyu problem Odniyeyu z nih bulo te sho znachno pochastishali vipadki zlomu takih sistem dlya prisvoyennya sobi bilshoyi kilkosti obchislyuvalnogo chasu Z ciyeyi prichini bezpeka ta keruvannya dostupom stali osnovnimi prioritetami proektu Multics u 1965 roci Inshim potochnim pitannyam buv pravilnij rozpodil resursiv mizh koristuvachami bulo pomicheno sho bilshist chasu koristuvach prosto divitsya na ekran ne vikoristovuyuchi nadanih resursiv a tomu prioritet povinen nadavatisya aktivnim koristuvacham Nareshti sistemi yak pravilo nadavali bagatosharovu iyerarhiyu pam yati rozdilennya cogo cinnogo resursu privelo do silnih zrushen u sistemah virtualnoyi pam yati Amiga Dokladnishe AmigaOS Amiga platforma rozroblena kompaniyeyu Commodore International i vipushena u 1985 roci bula v chisli pershih i najuspishnishih domashnih komp yuteriv na mikroyadernij operacijnij sistemi AmigaOS mala nevelike prote potuzhne yadro yake realizovuvalo vitiskalnu bagatozadachnist na aparatnij platformi podibnij do Apple Macintosh na yakij vikoristovuvalasya kooperativna bagatozadachnist i malo rozvinenu sistemu dinamichnih bibliotek sho dozvolyalo legke rozshirennya Unix Dokladnishe Unix Diagrama zv yazku mizh Unix podibnimi operacijnimi sistemami Pid chas stadiyi proektuvannya Unix programisti virishili stvoriti sistemu yaka modelyuvala bi kozhen visokorivnevij pristrij dostupnij OS yak zvichajnij fajl Napriklad printeri predstavlyalisya yak fajli sho dostupni za pevnoyu fiksovanoyu adresoyu i koli vidbuvavsya zapis u fajl to ce bulo signalom printeru do rozdrukuvannya vvedenogo tekstu Taka virtualizaciya dostupu do pristroyiv dozvolyala koristuvacham keruvati vsiyeyu sistemoyu vikoristovuyuchi zvichajni utiliti keruvannya fajlovoyu sistemoyu Rozshirennyam ciyeyi paradigmi u Unix stala koncepciya konveyera sho dozvolyaye pokrokove rozbittya procesu propuskayuchi dani fajlu cherez nizku odnozadachnih konsolnih program Zgidno z koncepciyeyu Unix operacijna sistema skladayetsya iz dvoh chastin velikogo naboru sluzhbovih program sho vikonuyut bilshist operacij i yadra OS sho zapuskaye programi Za ciyeyu koncepciyeyu iz poziciyi programuvannya yedinoyu vidminnistyu mizh nimi ye te sho yadro zapuskayetsya u rezhimi supervizora i sluguye zavantazhuvachem ta kerivnoyu programoyu dlya nevelikih sluzhbovih zastosunkiv sho skladayut reshtu sistemi Cherez deyakij chas cya koncepciya bula desho zminena bo traktuvannya vsogo yak fajlu chi potoku bajtiv bulo ne tak zruchno zastosovne yak ranishe Hocha komp yuternij terminal i mozhna rozglyadati yak fajl abo potik bajtiv ce same ne mozhna zrobiti dlya grafichnogo interfejsu koristuvacha She odnoyu problemoyu bulo merezheve spoluchennya Navit yaksho jogo mozhna porivnyati iz dostupom do fajlu na visokomu rivni to nizkorivneva paketno oriyentovana arhitektura povinna buti priznachena dlya okremih shmatkiv danih a ne vsogo fajlu Zi zrostannyam mozhlivostej komp yuteriv operacijni sistemi Unix ta pobudovani na yiyi bazi stali perenasicheni programnim kodom Yaksho yadra u 70 80 ti roki mali ne bilshe 100 000 ryadkiv kodu to suchasni Unix podibni OS taki yak Linux mayut ponad 13 miljoniv ryadkiv kodu Suchasni OS pohidni vid Unix yak pravilo bazuyutsya na monolitnih yadrah z mozhlivistyu zavantazhennya moduliv Cya grupa vklyuchaye Linux ta varianti BSD taki yak FreeBSD DragonFly BSD OpenBSD i NetBSD Mac OS Dokladnishe Mac OS Mac OS vpershe bulo predstavleno u 1984 roci Vona bula osnovnoyu operacijnoyu sistemoyu personalnogo komp yutera Macintosh vid Apple Computer Hocha pershi vipuski Mac OS ne mali takih osnovnih mozhlivostej yak bagatozadachnist ta iyerarhichna fajlova sistema ci nedoliki buli usunuti do versiyi Mac OS 9 Mac OS X maye povnistyu vidminne gibridne yadro vid poperednih versij yake maye nazvu XNU i ye chastinoyu proektu Darwin Microsoft Windows Dokladnishe Microsoft Windows Persha versiya Microsoft Windows bula predstavlena u 1985 roci yak dodatok do MS DOS Cherez zalezhnist vid inshoyi OS pershi versiyi Windows prijnyato nazivati operacijnim seredovishem na vidminu vid ponyattya operacijnoyi sistemi Povnocinnoyu OS Windows stala z poyavoyu seriyi Windows 9x sho vklyuchala taki pokrashennya yak 32 bitne adresuvannya ta vitiskalnu bagatozadachnist Paralelno z osnovnoyu Microsoft takozh rozroblyala seriyu Windows NT sho bula priznachena dlya duzhe dosvidchenih i biznes koristuvachiv Windows XP vipushena u zhovtni 2001 roku z yednuvala u sobi ci dvi seriyi ob yednuyuchi stabilnist yadra NT iz zruchnistyu koristuvannya Windows 9x Windows NT arhitekturno vvazhayetsya gibridnim yadrom de sluzhba grafichnogo interfejsu ta deyaki inshi dopomizhni programi vbudovani v yadro a reshta sluzhb zapuskayetsya u prostori koristuvacha Div takozhLinux yadro Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016