Як операційна система може працювати на тому ж мікросхемі, яким вона повинна керувати?


17

З моїх ознайомлень з операційними системами (читання основного матеріалу у Вікіпедії, технічних сайтах тощо) я дізнався, що Операційна система - це програма, яка дозволяє програмам та програмам ефективно та безпечно взаємодіяти з обладнанням.

Однак мене бентежить питання про те, як Операційна система контролює роботу комп'ютера, коли він сам повинен працювати.

Що я маю на увазі? Що ж, я б уявив, як працює Операційна система, - це те, що на комп’ютері було б два процесора. Один, який постійно працює з ОС, і інший, який ОС використовує для запуску комп'ютера. Однак виявляється, що ОС працює на тому ж процесорі, що і інші процеси. Це схоже на те, що менеджер повинен працювати на тій же виробничій лінії, що і його працівники, і користуватися електроінструментами отримує лише тоді, коли з ними працює інший працівник. Він не був би дуже ефективним керівником, оскільки не мав би можливості видавати доручення, якщо його працівник навіть трохи недисциплінований.

Тож як може бути, що ОС працює лише частину часу на тому ж процесорі, який доводиться ділити між усіма іншими процесами? Як це закінчується розробкою?


1
Керівник не повинен використовувати електроінструменти своїх працівників! Натомість він повинен переконатися, що у працівників є інструменти робочої сили.
MSalters

Відповіді:


15

Сучасні процесори певною мірою обізнані про ОС. Вони надають деякі "електроінструменти" для першого, хто на них претендує. Зазвичай це завантажувач, який потім передає управління ОС. Зазвичай йдеться про "режим ядра" проти "режим користувача" або "кільце 0" проти "кільце 3", щоб розрізняти один процес з додатковими привілеями та рештою.

Ці "електроінструменти" є певними привілеями для управління ресурсами: Керуйте пам’яттю, доступом до обладнання та тим, як довго можна виконувати код користувача без перерв.

ЦП виконує ОС зі своїми спеціальними привілеями, коли відбувається одне з наступних подій:

  1. Процес користувальницького режиму явно передає елемент управління процесом в режимі ядра. Це називається систематичним викликом .
  2. Процес в режимі ядра може використовувати свої спеціальні привілеї для реєстрації певних подій (наприклад, зовнішнє обладнання посилає спеціальний сигнал до центрального процесора або процес користувальницького простору намагається отримати доступ до зарезервованого ресурсу). Коли таке рівномірне, ЦП негайно зупиняє процес користувальницького режиму і передає управління процесом режиму ядра. Зазвичай один говорить з перерви .

Тож ОС може працювати на одній мікросхемі, оскільки чіп побудований для цього. Він може зарезервувати спеціальні пільги для себе. Процесор може в будь-який час перервати всі інші фрагменти коду без цих спеціальних привілеїв і передати управління в ОС.

Деякі чіпи з дуже обмеженою підтримкою (наприклад, мікроконтролер ) не мають такої підтримки для спеціального привілейованого коду. Ці чіпи зазвичай працюють без ОС. Запускається лише одна велика програма, яка може отримати доступ до обладнання безпосередньо, повинна реагувати на апаратні перерви та мати доступ до будь-яких ресурсів у будь-який час. Якщо в цій програмі є одна помилка, зазвичай вся справа виходить з ладу.


17

У своїй найпримітивнішій формі операційні системи покладаються на добре сприйняті процеси і час від часу передають управління операційній системі. Якщо процес не є належним чином, тоді дійсно може статися, що операційна система замерзне.

Однак у більшості процесорів є перерви : переривання призупиняє поточний процес (випередження) і передає управління назад операційній системі. Ви можете запланувати переривання, які трапляються через певні проміжки часу, або викликати їх зовні (наприклад, натискання кнопки скидання).

В основному, процесор перемикається вперед і назад між запуском ОС і запущеними процесами з надзвичайно швидкою швидкістю. Крім того, у процесора є "режим користувача" та "режим ядра". Процеси запускаються в режимі користувача, а ОС працює в режимі ядра. Запуск у режимі користувача не дозволяє виконувати обмежені команди (наприклад, IO). Якщо процес хоче записати на диск, він повинен попросити ОС зробити це. ОС переходить у режим ядра і виконує запис від імені процесу (після того, як переконається, що процес має необхідні дозволи).


7
@Imray Насправді, до процесора ОС - це ще один біт коду. Однак процесор має багато функцій, розроблених для використання творцями ОС.
Том ван дер Занден

3
Я не знаю, чи "обізнана" - це правильна термінологія, але у процесора немає підстав існувати, крім запуску ОС. Це, безумовно, не зовсім незалежно. Насправді процесор повністю покладається на ОС, щоб керувати різними режимами і в іншому випадку говорити йому, що робити.
Мохер

2
@Mohair Є чимало мікроконтролерів, які взагалі працюють без ОС, чи вважаються вони процесорами?
Том ван дер Занден

2
"чи вважають це процесорами?" Звичайно, вони так і роблять. Так само зробив 6502 в моєму першому комп’ютері, хоча він не мав чітких кілець користувача та ядра, і ви могли pokeз командного рядка працювати всілякі негаразди.
dmckee --- кошеня колишнього модератора

2
@TomvanderZanden як саме це робить the CPU switches back and forth between running the OS and running processes? Що запускає вимикач?
jnovacho

1

Для запуску простору користувача та простору коду ядра вам не потрібні два різних процесора для мікропроцесора. В основному це працює таким чином, коли ви включаєте комп'ютер на завантажувальний завантажувач Bios (код 512 Кб на диску, який закінчується підписом завантажувача 55aa), щоб утрамбовувати та завантажувати цей завантажувач, ваше ядро ​​завантажується в таран і працює назавжди, поки ви не вимкнете комп'ютер. І ваше ядро ​​управляє пам'яттю і не дозволяє вашому коду ядра, який сидить на операційній пам’яті, не буде перезаписаний кодом простору користувача. Для цього існують системні виклики, на які виклик коду простору користувача, використовуючи ці системні виклики, і додайте код вашого простору користувачів, щоб переправити та почати його виконувати. В операційних системах ця концепція досліджується як управління пам’яттю. Ось посилання, яке ви можете прочитати, це дуже добре для початку https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf


0

На основі інших відповідей легше зрозуміти, якщо ви думаєте, що саме ядро ​​- це не процес, а код управління. Будь-який користувальницький процес може перейти з режиму користувача в режим ядра та виконувати код ядра (приватні інструкції), використовуючи деяку частину простору ядра. Тоді процес може повернутися до режиму користувача та запуститися в просторі користувача знову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.