Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pr_os_01.docx
Скачиваний:
17
Добавлен:
24.11.2019
Размер:
1.26 Mб
Скачать

[Ред.]Керування процесами

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

Для запуску програми ядро ​​зазвичай визначає адресний простір для процесів, завантажує програмний код у пам'ять, готує стек для програми і починає виконання програмного коду в заданому місці.

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

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

Інші операційні системи (зокрема на менших, менш потужних комп’ютерах) можуть використовувати кооперативну багатозадачність, де кожен процес виконується неперервно до тих пір, поки цей процес не пошле спеціальний запит до ядра, що дає дозвіл на початок виконання іншого процесу. Старі версії Windows та Mac OS використовували кооперативну багатозадачність, але зрештою, із зростанням потужності комп’ютерів, вони перейшли на витісняючу багатозадачність.

Операційна система також може мати підтримку багатопроцесорності; в цьому випадку програми і ниті можуть виконуватися на різних процесорах. Для цього ядро повинно бутиповторно використовуваним, що означає можливість запуску двох або більше частин коду одночасно.

[Ред.]Керування пам’яттю

Ядро має повний доступ до системної пам’яті і надає процесам безпечний доступ до неї у разі необхідності. Найчастіше першим кроком задля досягнення цього є створення віртуальної пам’яті, зазвичай це досягається за допомогою файлу підкачки та сегментної адресації пам’яті. Віртуальна адресація дозволяє ядру зробити певну фізичну адресу видимою під іншою віртуальною адресою. Простори віртуальних адрес можуть бути різними для різних процесів; пам’ять, до якої має доступ один процес під віртуальною адресою, може мати зовсім іншу віртуальну адресу в просторі адресу іншого процесу. Це дозволяє абстрагувати різні процеси один від одного, що запобігає використанню однієї ділянки пам’яті різними процесами.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]