Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори СПОС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
145.46 Кб
Скачать
  1. Основні можливості та функції базового інтерфейсу управління сигналами. Диспозиція сигналу процесу.

  1. передача сигналів

  2. оперування диспозиції сигналів процесу

  3. оперування маскою сигналів потоку

  4. отримання набору сигналів обробки (активне чекання сигналів)

  5. пасивне чекання сигналів

  6. оперування набором сигналів

На надходження сигналу процес може реагувати одним із 3-х способів(спосіб реакції процесу на сигнал називають диспозицією сигналу):

  • Викликати оброблювач сигналу

  • Проігнорувати сигнал, який у цьому випадку «зникне» і не виконає жодної дії

  • Використати диспозицію, передбачену за замовчуванням(така диспозиція задана для кожного сигналу, найчастіше це – завершення процесу).

Процес може задавати диспозицію для кожного сигналу окремо.

  1. Загальний порядок генерування та доставки сигналів процесу. Типи та властивості сигналів.

Сигнал являє собою асинхронне повідомлення що посилається процесу щоб проінформувати його про подію яка відбулась.

Генерація або посилка сигналу.

Сигнал відправляється, коли відбувається певна подія, про настання якого повинен бути повідомлений процес. Сигнал вважається доставленим, коли процес, якому був відправлений сигнал, отримує його і виконує його обробку. У проміжку між цими двома подіями сигнал очікує доставки.

Сигнал може надсилатися одним процесом іншому і буде доставлений, якщо обидва процеси - одного користувача або сигнал посланий від імені користувача root. Сигнали посилаються також ядром.

Посилка сигналів

Для посилки сигналів з командного інтерпретатора використовується команда kill. Вона має наступний синтаксис: kill [-сигнал] pid ... Ця команда посилає зазначений сигнал (за замовчуванням - SIGTERM) всім процесам із зазначеними id. У деяких випадках процесу буває потрібно надіслати сигнал самому собі, це можна зробити за допомогою системного виклику raise.

Наприклад:

Завершить процеси, що мають id 142 и 157:

kill 142 157

Послати сигнал обриву (SIGHUP) процесу з ідентифікатором 507:

            kill-s HUP 507

Доставка

Доставка сигналу відбувається після того, як ядро ​​від імені процесу викликає системну процедуру issig (), яка перевіряє, чи існують які очікують доставки сигнали, адресовані даному процесу. Процедура issig () викликається ядром в трьох випадках:

  • Безпосередньо перед поверненням з режиму ядра в користувацький режим після обробки системного виклику або переривання.

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

  • Відразу ж після пробудження після сну з пріоритетом, що допускає переривання сигналом.

Якщо процедура issig () виявляє очікування доставки сигналу, ядро ​​викликає функцію доставки сигналу, яке виконує дію за умовчанням або викликає спеціальну функцію sendsig (), що запускає обробник сигналу, зареєстрований процесом. Функція sendsig () повертає процес в користувальницький режим, передає управління обробникові сигналу, а потім відновлює контекст процесу для продовження перерваного сигналом виконання.

У Unix є 31 тип сигналів, які можна розділити на групи:

  • сигнали, пов'язані з обладнанням, такі як: сигнали про помилки на шинах передачі даних, помилки при виконанні арифметичних операцій, помилках доступу до пам'яті т.п.;

  • сигнали, пов'язані з програмними подіями: сигнал завершення процесу, сигнали від інтервального таймера, сигнали, якими процеси обмінюються між собою і т.п.;

  • сигнали, пов'язані з уведенням-висновком, що сигналізують про події в потоках вводу-виводу;

  • сигнали управління завданнями: призупинення та пуску процесів у групі, сигнали про події в процесі-нащадку і т.п.;

  • сигнали управління ресурсами, що повідомляють про перевищення процесом лімітів використання ресурсів;

  • сигнали про події на легковагих процесах, оброблювані модулями бібліотеки ниток.

Наприклад:

Тип сповіщення:

SIGCHLD Дочірній процес завершений або зупинений

Тип управління:

SIGKILL Безумовне завершення

SIGSTOP Зупинка виконання процесу

Тип виключення:

SIGBUSН неправильне звернення до фізичної пам’яті