Огляд операційних систем і ядер

Через неухильного зростання можливостей і не дуже якісного побудови деяких сучасних операційних систем, поняття операційної системи стало кілька невизначеним Багато користувачів вважають, що те, що вони бачать на екрані, – і є операційна система Зазвичай, і в цій книзі теж, підопераційною системою розуміється частина компютерної системи, яка відповідає за основні функції використання та адміністрування Це включає в себе ядро ​​і драйвери пристроїв, системний завантажувач (boot loader), командний процесор та інші інтерфейси користувача, а також базову файлову систему і системні утиліти Загалом, тільки необхідні компоненти Термін система позначає операційну систему і всі користувальницькі програми, які працюють під її управлінням

Звичайно, основно ї Темо ї це й книги будеядроопераційно й системи Інтерфейс користувача – це зовнішня частина операційної системи, а ядро ​​- вну-

3 Для тих, кому цікаво, дискусії з приводу відмінності вільного коду від відкритого доступна в

Інтерні т п про адресами http://wwwfsfor g і http://wwwopensourceorg

4 Ймовірно, вам потрібно прочитати ліцензію GNU GPL, якщо ви ще не читали її У файлі COPYING, в початково м коді ядра, є копальні я це й ліцензії У Інтерні т ліцен я доступна п про адресою http://wwwfsforg

тертя У своїй основі ядро ​​- це програмне забезпечення, яке надає базові функції для всіх інших частин операційної системи, займається управлінням апаратурою і розподіляє системні ресурси Ядро часто називають основною частиною(Core) абоконтролеромопераційної системи Типові компоненти ядра – обробники переривань, які обслуговують запити на переривання, планувальник, який розподіляє процесорний час між багатьма процесами, система управління памяттю, яка управляє адресним простором процесів, і системні служби, такі як мережева підсистема і підсистема взаємодії між процесами У сучасних системах з пристроями управління захищеною памяттю ядро ​​зазвичай займає привілейоване становище стосовно користувача програмам Це включає доступ до всіх областей захищеної памяті і повний доступ до апаратного забезпечення Стан системи, в якому знаходиться ядро, і область памяті, в якій знаходиться ядро, разом називаються простором ядра(Або режимом ядра, kernel-space) Відповідно, для користувача програми виконуються в просторах завдань (Режим користувача, режим завдань, user-space) Користувача програмам доступно лише деяку підмножину машинних ресурсів, вони не можуть виконувати деякі системні функції, безпосередньо звертатися до апаратури і робити інші недозволені речі При виконанні програмного коду ядра система знаходиться в просторі (режимі) ядра, на відміну від нормального виконання користувацьких програм, яке відбувається в режимі завдання

Прикладні програми, що працюють в системі, взаємодіють з ядром за допомогою інтерфейсу системних викликів(System call) (рис 11) Прикладна програма зазвичай викликає функції різних бібліотек, наприклад бібліотеки функціймови С, які, в свою чергу, звертаються до інтерфейсу системних викликів для того, щоб віддати наказ ядру виконати певні дії від їхнього імені Деякі бібліотечні виклики надають функції, для яких відсутній системний виклик, і тому звернення до ядра – це тільки один етап в більш складної функції Давайте розглянемо всім відому функцію print f () Ця функції забезпечує форматування і буферизацію даних і лише після цього один раз звертається до системного викликом writ e () для виводу даних на консоль Деякі бібліотечні функції відповідають функцій ядра один до одного Наприклад, бібліотечна функція open () не робить нічого, крім виконання системного виклику open () У той же час деякі бібліотечні функції, як, наприклад, strcp y (), треба думати, взагалі не використовують звернення до ядра Коли прикладна програма виконує системний виклик, то говорять, що ядро виконує роботу від імені прикладної програмиБільше того, кажуть, що прикладна програма виконує системний виклик в просторі ядра,а ядро ​​виконується в контексті процесуТакий тип взаємодії, коли прикладна програма входить до ядро через інтерфейс системних викликів, є фундаментальним способом виконання завдань

У функції ядра входить також управління системним апаратним забезпеченням Практично всі платформи, включаючи ті, на яких працює операційна система Linux, використовуютьпереривання(Interrupt) Коли апаратного пристрою необхідно якось взаємодіяти з системою, воно генерує переривання, яке перериває роботу ядра в асинхронному режіме5

5 Іншим іслова, заздалегідь невідомо, в який момент часу ця подія відбудеться і в якому стані буде т система в цей момент часу Прим* перев

Прикладна програма 1

Прикладна програма 2

Прикладна програма 3

Простір завдання

Інтерфейс системних викликів

Простір ядра

Підсистеми ядра

Драйвери пристроїв

Апаратне забезпечення

Рис11Взаимодействиемеждуприкладнымипрограммами,ядромиаппа-

ратним забезпеченням.

Зазвичай кожному типу переривань відповідає номер Ядро використовує номер переривання для виконання спеціального обробника переривання (interrupt handler), який обробляє переривання і відправляє на нього відповідь Наприклад, при введенні символу з клавіатури, контролер клавіатури генерує переривання, щоб дати знати системі, що в буфері клавіатури є нові дані Ядро визначає номер переривання, яке прийшло в систему і виконує відповідний обробник переривання Обробник переривання обробляє дані, що надійшли з клавіатури, і дасть знати контролеру клавіатури, що ядро ​​готово для прийому нових даних Для забезпечення синхронізації виконання ядро ​​звичайно може забороняти переривання: або всі переривання, або тільки переривання з певним номером У багатьох операційних системах обробники переривань не виконуються в контексті процесів Вони виконуються в спеціальному контексті переривання (Interrup context), який не повязаний ні з одним процесом Цей спеціальний контекст існує то тільки для того, щоб дати оброблювачу переривання можливість швидко відреагувати на переривання і закінчити роботу

Контексти виконання завдань повністю визначають всю широту можливих дій ядра Фактично, можна укласти, що в операційній системі Linux процесор в будь-який момент часу виконує один з трьох типів дій

• Робота від імені певного процесу в режимі ядра в контексті процесу

• Робота з обробки переривання в режимі ядра в контексті переривання, не повязаному з процесами

• Виконання коду користувальницької програми в режимі завдання

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*