Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вступ, ст 22-93.doc
Скачиваний:
5
Добавлен:
02.09.2019
Размер:
1.62 Mб
Скачать

Процесори

Ключове поняття операційної системи - процес. Процесом, по суті, називають програму в момент виконання. З кожним процесом зв'язується його адресний простір - список адрес в пам'яті від деякого мінімуму (Зазвичай нуля) до деякого максимуму, які процес може прочитати і в які він може писати. Адресний простір містить саму програму, дані до неї та її стек. З кожним процесом зв'язується якийсь набір регістрів, включаючи лічильник команд, вказівник стека і інші апаратні регістри, плюс вся інша інформація, необхідна для запуску програми. Ми більш детально розглянемо поняття процесу в розділі 2, але зараз для того, щоб інтуїтивно усвідомити, що це таке, згадаємо про системи, працюють у режимі поділу часу. Припустимо, періодично операційна система вирішує зупинити роботу одного процесу і запуску іншого, тому що перший витратив відведену для нього частину робочого часу центрального процесора в минулу секунду. Якщо процес був припинений подібним чином, пізніше він повинен бути запущений заново з того ж стану, в якому його зупинили. Отже, всю інформацію про процес потрібно де-небудь явно зберегти на час його призупинення. Наприклад, процес може мати відкритими для читання декілька файлів одночасно. Пов'язаний з кожним файлом покажчик дає поточну позицію (Тобто номер байта або записи, які будуть прочитані наступними). При тимчасове припинення процесу всі покажчики потрібно зберегти так, щоб команда читання, виконана після відновлення процесу, прочитала правильні дані. У багатьох операційних системах вся інформація про кожному процесі, додаткова до вмісту його власного адресного простору, зберігається в таблиці операційної системи. Ця таблиця називається таблицею процесів і являє собою масив (або зв'язаний список) структур, по одній на кожен існуючий в даний момент процес. Таким чином, припинений процес складається з власного адресного простору, зазвичай званого чином пам'яті (core image, core в перекладі означає «сердечник», на честь використовувалася давним-давно пам'яті на магнітних сердечниках), і компонентів таблиці процесу, що містить, окрім інших величин, його регістри. Головними системними викликами, які керують процесами, є виклику виклики, пов'язані зі створенням і закінченням процесів. Розглянемо типовий приклад. Процес, званий інтерпретатором команд або оболонкою (shell), читає

команди з терміналу. Користувач щойно надрукував команду, яка містить

запит на компіляцію програми. Тепер оболонка повинна створити новий процес, який запустить компілятор. Коли процес закінчить компіляцію, він виконає системний виклик, що завершує його власну роботу.

Якщо процес може створювати кілька інших процесів (що називаються

дочірніми процесами), а ці процеси, в свою чергу, теж можуть створити дочірні процеси, перед нами постає дерево процесів, зображене на рис. 1.12.

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

Рис. 1.12. Дерево процесу. Процес А створив два дочірніх процесу В і С.

Процес В створив три дочірніх процесу D, Е і F

Інші системні виклики призначаються для запитів про надання додаткової пам'яті (або звільнення не використовується пам'яті), очікуванні завершення дочірніх процесів та накладення однієї програми на іншу. Час від часу необхідно передавати інформацію працює процесу так, щоб він не простоював в очікуванні отримання цієї інформації. Наприклад, процес, пов'язаний з іншим процесом на віддаленому комп'ютері, робить це, посилаючи повідомлення по мережі. Щоб запобігти можливості втрати повідомлення або відповіді на нього, відправник може вимагати від власної операційної системи повідомлення, якщо після закінчення певного інтервалу очікування не буде отримано підтвердження про отримання повідомлення. У цьому випадку він зможе повторити відправлення повідомлення. Після установки таймера програма продовжить виконання іншої роботи.

Якщо після закінчення певної кількості секунд відповіді немає, операційна

система посилає процесу сигнал тривоги. Сигнал викликає тимчасову зупинку роботи процесу незалежно від того, що процес робить в даний момент; зберігає його регістри в стеку і запускає спеціальну процедуру обробки сигнал (наприклад, передавальну повторно імовірно втрачене повідомлення). Після завершення обробки сигналу працює процес запускається заново в тому стані, в якому він перебував до сигналу. Сигнали є програмними аналогами апаратних переривань і можуть бути згенеровані з різних причин, а не тільки через закінчення будь-якого інтервалу часу. Багато апаратні переривання (наприклад, викликані виконанням неприпустимою команди або використанням неправильної адреси) також перетворення перетворяться в сигнали процесу, в якому сталася помилка. Кожному користувачеві, якому дозволено користуватися системою, системний адміністратор присвоює UID (User IDentification - ідентифікатор

користувача). У кожного працюючого процесу є ідентифікатор користувача,

запустив його. Дочірній процес отримує той же самий UID, що і його батько.

Користувачі можуть ставати членами груп, кожна з яких має ідентифікатор групи (GID, Group IDentification). Користувач з особливим ідентифікатором UID, званий в UNIX «Суперкористувачем» (superuser), має особливі повноваження і може ігнорувати безліч правил захисту. У величезних системах тільки системний

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

Однак безліч звичайних користувачів (особливо студенти) витрачають значну

значну кількість часу та праці на те, щоб знайти пролом в системі, яка

дозволить їм стати супер без пароля.

Ми вивчимо процеси, взаємодія між ними та пов'язані з ними питання в главі 2.