- •Анотація
- •1 Середовище програмування ос unix
- •1.1 Структура ос unix
- •1.2 Створення програми
- •1. Препроцесор
- •2. Транслятор
- •2.1 Компілятор
- •2.2 Асемблер
- •3. Редактор зв'язків(Компонувальником)
- •1.3 Формати об'єктних файлів
- •2 Використання файлової системи unix
- •2.1 Основні поняття
- •2.1.1 Типи та іменування файлів
- •2.1.2 Права доступу до файлів
- •2.1.3 Cистемные структури керування файлами
- •2.1.4 Системні виклики роботи з файлами
- •2.2 Створення та відкриття файлів
- •2.2.1 Системний виклик open
- •2.2.2 Системний виклик create
- •2.2.3 Системний виклик close
- •2.3 Читання та зипис в файл
- •2.3.1 Системний виклик read
- •2.3.2 Системний виклик write
- •2.4 Позіціонування у файлі
- •2.4.1 Системний виклик lseek
- •2.4.2 Системні виклики pread і pwrite
- •2.4.3 Системні виклики readv і writev
- •2.5 Контрольні операції над файлами
- •2.5.1 Системні виклики stat, fstat і lstat
- •2.5.2 Контроль прав доступу до файлу
- •2.5.3 Функція fcntl
- •2.5.4 Системні виклики truncate і ftruncate
- •2.6 Управління каталогами
- •2.6.1 Створення і видалення
- •2.6.2 Читання каталога
- •2.6.3 Зміна каталога
- •2.7 Управління посиланнями
- •2.7.1 Управління жорсткими посиланнями
- •2.7.2 Управління символічними посиланнями
- •2.7.3 Перейменування файлів і каталогів
- •3 Керування процесами ос unix
- •3.1 Процеси ос unix
- •3.2 Сисвизови створення процесів
- •3.3 Завершення процесу
- •3.4 Взаємодія процесів в ос unix
- •3.5 Сигнали
- •3.5.1 Поняття сигналу
- •3.5.2 Розробка оброблювачів сигналів
- •3.5.3 Генерація сигналів
- •3.5.4 Посилка сигналів іншим процесам
- •3.5.5 Блокування сигналів
- •3.5.6 Очікування сигналу
- •3.6 Трасування процесу.
- •3.7 Канали й fifo-Файли
- •3.7.1 Поняття
- •3.7.2 Створення каналу
- •3.7.3 Створення fifo-Файлів
- •3.8 Семафори
- •3.9 Повідомлення.
- •3.10 Поділювана пам'ять.
- •Література
- •Системне програмування Навчальний посібник
- •65082, Одеса, вул. Дворянська, 1/3
3.5 Сигнали
3.5.1 Поняття сигналу
При межпроцессорном взаємодії найбільше часто розглядаються сигнали, які визначають спеціальні події, що відбуваються між процесами. сигнали встановлюються одним процесом, але одержати їх може інший процес або ж сам цей процес.
Сигналом називається програмне переривання, передане виконуваному процесу. Операційна система використовує сигнали для інформування виконуваних процесів про виняткові ситуації.
Всі події, що генерують сигнали можуть бути розбиті на три основні категорії: помилки, зовнішні події і явні виклики.
Помилка означає, що програма виконала некоректну операцію й не може бути продовжена. До помилок, які можуть генерувати сигнали ставляться помилки розподілу на нуль і помилки звертання до невірних адрес пам'яті. Зовнішня подія викликається як правило пристроями уведення-виводу або інших процесів. Безпосередній виклик означає використання бібліотечної функції (наприклад, kill), безпосереднім призначенням якої є генерація сигналу.
Сигнали можуть генеруватися синхронно й асинхронно. Синхронні сигнали властиві деяким діям, виконуваним програмою й виконуються безпосередньо під час цієї дії. До синхронних сигналів ставляться більшість сигналів, що повідомляють про помилки.
Асинхронні сигнали генеруються подіями, що відбуваються поза виконуваним процесом і надходять у невідомий заздалегідь момент часу. Коли сигнал генерується, він міститься операційною системою в чергу очікування й через якийсь час передається процесу для обробки.
Існує можливість блокування сигналів. У цьому випадку сигнал перебуває в стані очікування доти, поки він не буде разблокирован.
сигнал, Що Одержав, процес виконує деякі дії, пов'язані із цим сигналом. Для деяких сигналів виконувані дії заздалегідь визначені. Однак, при обробці більшості сигналів процес має альтернативу:
ігнорувати сигнал,
визначити функцію-оброблювач або
викликати оброблювач за замовчуванням.
Можуть бути послані наступні сигнали:
01 SIGHUP - останов програми через збій устаткування або
помилки в програмі.
02 SIGINT - переривання програми.
03 SIGQUIT - видалення програми.
04 SIGILL - невірна інструкція.
05 SIGTRAP - трасуюче відгалуження помилково.
06 SIGIOT - інструкція передачі на уведення/вивід.
07 SIGEMT - інструкція, що ідентифікує фізичну
границю використовуваної частини носія даних.
08 SIGFPT - помилка в операціях із плаваючою крапкою.
09 SIGKILL - знищення процеса-дитини.
10 SIGBUS - помилка на шині уведення/виводу (на лінії
мережі).
11 SIGSEGV - порушення сегментації.
12 SIGSYS - невірний аргумент системного виклику.
13 SIGPIPE - запис у трубопровід, з якого ніхто не зчитує.
14 SIGALARM - перевищення припустимого тимчасового
інтервалу.
15 SIGTERM - програмне завершення.
16 SIGUSR1 - обумовлений користувачем сигнал 1.
17 SIGUSR2 - обумовлений користувачем сигнал 2.
18 SIGCLD - смерть процеса-дитини.
19 SIGPWR - раптовий перебій в електроживленні.
Як відзначалося вище, у найбільш загальному випадку сигнали передаються лише між взаємно зв'язаними процесами й цим зв'язком може бути встановлена трьома способами:
процеси мають той самий ефективний користувальницький ідентифікатор;
процеси контролюються з одного термінала;
між процесами встановлений зв'язок батько-дитина.