Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Operatsiyni_sistemi_vidpovidi.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
561.15 Кб
Скачать
  1. Керування процесами в Unix. Події, сигнали, програмні канали.

Системний виклик exit

Для завершення процесу в UNIX-системах використовують системний виклик exit() Розглянемо реалізацію цього системного виклику в Linux. Під час його виконання відбуваються такі дії.

1. Стан процесу стає TASK ZOMBIE.

2. Процес повідомляє предків і нащадків про те, що він завершився (за допомогою спеціальних сигналів).

3. Звільняються ресурси, виділені під час виклику fork().

4. Планувальника повідомляють про те, що контекст можна перемикати.

Системний виклик waitpid()

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

Приклади сигналів

Назвемо сигнали, що визначені POSIX і підтримуються в Linux (у дужках поруч з ім'ям сигналу наведено його номер).

До синхронних сигналів належить, наприклад, сигнал SIGSEGV (11), який генерує система під час записування в захищену ділянку пам'яті.

До асинхронних сигналів належать:

• SIGHUP (1) — розрив зв'язку (наприклад, вихід користувача із системи);

• SIGINT і SIGQUIT (2,3) — сигнали переривання програми від клавіатури (генеруються під час натискання користувачем відповідно Ctrl+C і Ctrl+\);

• SIGKILL (9) — негайне припинення роботи програми (для такого сигналу не можна змінювати диспозицію);

• SIGUSR1 і SIGUSR2 (10,12) — сигнали користувача, які можуть використовувати прикладні програми;

• SIGTERM (15) — пропозиція програмі завершити її роботу (цей сигнал, на відміну від SIGKILL, може бути зігнорований).

Діями за замовчуванням для всіх зазначених сигналів, крім SIGSEGV, є припинення роботи програми (для SIGSEGV додатково генерується дамп пам'яті (соrе dump) — файл, у якому зберігається образ адресного простору процесу для наступного аналізу).

  1. Керування пам’яттю в ос Unix.

Перші реалізації системи UNIX (до 7ої версії) виконувалися на машині PDP-11 з 16 розрядного архітектурою і адресним простором, рівним 64 Кб. Деякі моделі підтрим. окремий адресний простір для розміщ. інструкцій і даних, проте в сукупності адресний простір процесу не міг перевищувати 128 Кб. Це обмеження призвело до розвитку різних технологій програмних оверлеїв. Механізми управ. пам'яттю в ранніх версіях UNIX обмеж. можливостями підкачки (swapping). Процеси завантаж. в оперативну пам'ять один за іншим. У певний момент часу у фізичній пам'яті машини могло поміститися мале число процесів, а система була для них спільно використовуваних ресурсом. Якщо необхідно було виконати інший процес, то один з існ. процесів повинен був бути вивантаженим з пам'яті. Такий процес копіювався в заздалегідь виділену область підкачки (swapping partition), яка містилася на диску. Деякий простір підкачки (swap space) виділявся для кожного процесу на стадії його ств., що гарантувало доступність області підкачки при необхідності її використання.

Технологія завантаж. сторінок за запитом (demand paging) з'явилася в системі UNIX після створення VAX-11/780 в 1978 році. Ця машина мала 32-розрядну архітектуру, 4-гігабайтний адресний простір і апаратну підтримку даної технології, тобто ОС 3BSD стала першою реалізацією UNIX, яка його підтримувала. А до середини 80-х років всі наявні тоді версії UNIX вже забезпечували завант. сторінок по запиту як основну методику управління пам'яттю, технологія підкачки ж відійшла на другий план. У системах завантаж. сторінок по запиту пам'ять і адресний простір процесу розділені на сторінки фікс. розміру, що містяться в пам'яті або вивантаж. по мірі необхідності. Сторінку фізичної пам'яті часто називають сторінковим кадром (page frame) або фізичним сторінкою (physical page). В один момент часу можуть виконув. відразу кілька процесів, при цьому у фізичній пам'яті розташ. лише деяка частина сторінок кожного з них. Кожна така програма вважає себе єдиною в системі. Програмні адреси віртуальні і розчленовуються машиною на номер стр. і зсув на цій сторінці. Апаратна частина разом з ОС виконує перетворення номера вірт. сторінки в номер фізичного сторінкового кадру і потім звертається у відповідну комірку пам'яті. Якщо потрібної сторінки немає в опер. пам'яті, її необхідно туди завантажити. В ідеальному випадку жодна зі сторінок не може бути розміщена в пам'яті до тих пір, поки вона не стане потрібною (поки на цю сторінку не зроблено посилання). Більшість сучасних систем UNIX роблять попередні розміщення деякої кількості сторінок в пам'яті (anticipatory paging), завантажуючи ті сторінки, на думку системи незабаром будуть викликані.

Схему завант. сторінок по запиту можна використ. як разом з технологією підкачки, так і як її заміни. Її переваги: - розмір програми обмежується тільки максим. об'ємом вірт. пам'яті, що на 32-розрядних машинах дорівнює 4 Гб; - первинне завант. програми відбувається швидко, оскільки для початку роботи програми не потрібно повністю розміщувати її в пам'ять компа; - одночасно в системі може бути завантажено відразу кілька програм, так як в певний момент часу лише невелика частина сторінок кожної з них повинна знаходитися в пам'яті; - переміщення окремих сторінок пам'яті набагато простіше для системи, ніж свопінг процесів або сегментів цілком.

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