Контрольні запитання та завдання
1. Перелічіть причини, за якими ядро ОС має виконуватися в привілейованому режимі процесора.
2. Чи може процесор переходити у привілейований режим під час виконання програми користувача? Чи може така програма виконуватися виключно в привілейованому режимі?
3. У чому полягає головний недолік традиційної багаторівневої архітектури? Чи має такий недолік архітектура з виділенням рівнів у монолітному ядрі.
4. Чому перехід до використання мікроядрової архітектури може спричинити зниження продуктивності ОС?
5. Автор Linux Лінус Торвальдс стверджує, що мобільність Linux має поширюватися на системи з «прийнятною» (reasonable) архітектурою. Які апаратні засоби повинна підтримувати така архітектура?
6. Наведіть переваги і недоліки реалізації взаємодії прикладної програми з операційною системою в Linux і Windows XP.
7. Чи не суперечить використання модулів ядра принципам монолітної архітектури Linux? Поясніть свою відповідь.
8. Перелічіть переваги і недоліки архітектури ОС, відповідно до якої віконна і графічна підсистеми в Windows XP виконуються в режимі ядра.
9. Чому деякі діагностичні утиліти Windows XP складаються з прикладної програми і драйвера пристрою?
Розділ З
Керування процесами і потоками
· Означення процесу та потоку
· Реалізація та використання моделі процесів і багатопотоковості
· Подання процесів і потоків в операційній системі
· Створення та завершення процесів і потоків
|
|
· Керування процесами та потоками в UNIX
· Керування процесами та потоками у Windows ХР
У цьому розділі розглянемо дві основні абстракції операційної системи, які описують виконання програмного коду – процеси і потоки. Буде вивчено особливості їхньої реалізації в операційній системі, стани, в яких вони можуть перебувати, базові механізми роботи з ними (засоби створення, завершення, припинення виконання тощо).
У викладі орієнтуватимемося на сучасні ОС, для яких потоки є фундаментальними абстракціями системи нарівні з процесами.
Базові поняття процесів і потоків 3.1.1. Процеси і потоки в сучасних ОС
У сучасній операційній системі одночасно виконуються код ядра (що належить до його різних підсистем) і код програм користувача. При цьому відбуваються різні дії: одні програми і підсистеми виконують інструкції процесора, інші зайняті введенням-виведенням, ще деякі очікують на запити від користувача або інших застосувань. Для спрощення керування цими діями в системі доцільно виділити набір елементарних активних елементів і визначити інтерфейс взаємодії ОС із цими елементами. Коли активний елемент системи зв'язати із програмою, що виконується, ми прийдемо до поняття процесу.
|
|
Дамо попереднє означення процесу.
Під процесом розуміють абстракцію ОС, яка об'єднує все необхідне для виконання однієї програми в певний момент часу.
Програма – це деяка послідовність машинних команд, що зберігається на диску, в разі необхідності завантажується у пам'ять і виконується. Можна сказати, що під час виконання програму представляє процес.
Однозначна відповідність між програмою і процесом встановлюється тільки в конкретний момент часу: один процес у різний час може виконувати код декількох програм, код однієї програми можуть виконувати декілька процесів одночасно.
Для успішного виконання програми потрібні певні ресурси. До них належать:
· ресурси, необхідні для послідовного виконання програмного коду (передусім процесорний час);
· ресурси, що дають можливість зберігати інформацію, яка забезпечує виконання програмного коду (регістри процесора, оперативна пам'ять тощо).
Ці групи ресурсів визначають дві складові частини процесу:
· послідовність виконуваних команд процесора;
· набір адрес пам'яті (адресний простір), у якому розташовані ці команди і дані для них.
Виділення цих частин виправдане ще й тим, що в рамках одного адресного простору може бути кілька паралельно виконуваних послідовностей команд, що спільно використовують одні й ті ж самі дані. Необхідність розмежування послідовності команд і адресного простору підводить до поняття потоку.
|
|
Потоком (потік керування, нитка, thread) називають набір послідовно виконуваних команд процесора, які використовують загальний адресний простір процесу. Оскільки в системі може одночасно бути багато потоків, завданням ОС є організація перемикання процесора між ними і планування їхнього виконання. У багатопроцесорних системах код окремих потоків може виконуватися на окремих процесорах.
Тепер можна дати ще одне означення процесу.
Процесом називають сукупність одного або декількох потоків і захищеного адресного простору, у якому ці потоки виконуються.
Захищеність адресного простору процесу є його найважливішою характеристикою. Код і дані процесу не можуть бути прямо прочитані або перезаписані іншим процесом; у такий спосіб захищаються від багатьох програмних помилок і спроб несанкціонованого доступу. Природно, що неприпустимим є тільки прямий доступ (наприклад, запис у пам'ять за допомогою простої інструкції перенесення даних); обмін даними між процесами принципово можливий, але для цього мають бути використані спеціальні засоби, які називають засобами міжпроцесової взаємодії (див. розділ 6). Такі засоби складніші за прямий доступ і працюють повільніше, але при цьому забезпечують захист від випадкових помилок у разі доступу до даних.
|
|
На відміну від процесів потоки розпоряджаються загальною пам'яттю. Дані потоку не захищені від доступу до них інших потоків за умови, що всі вони виконуються в адресному просторі одного процесу. Це надає додаткові можливості для розробки застосувань, але ускладнює програмування.
Захищений адресний простір процесу задає абстракцію виконання коду на окремій машині, а потік забезпечує абстракцію послідовного виконання команд на одному виділеному процесорі.
Адресний простір процесу не завжди відповідає адресам оперативної пам'яті. Наприклад, у нього можуть відображатися файли або регістри контролерів введення-виведення, тому запис за певною адресою в цьому просторі призведе до запису у файл або до виконання операції введення-виведення. Таку технологію називають відображенням у пам'ять (memory mapping).
Дата добавления: 2018-04-05; просмотров: 896; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!