Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Виконання процесу




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

Вмирання процесу – після всіх завершальних стадій видаляється запис з таблиці процесів – процес завершив свою роботу.

Під час роботи процесу, ядро контролює його стан, і в разі виникнення непередбаченої ситуації управляє процесом за допомогою посилки йому сигналу. Процес може скористатися дією за умовчанням, або, якщо у нього є обробник сигналу, то він може перехопити або ігнорувати сигнал. Сигнали SIGKILL і SIGSTOP неможливо ні перехопити, ні ігнорувати.

За умовчанням можливі декілька дій:

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

завершити – завершити роботу процесу.

завершити + core – завершити роботу процесу і створити файл в поточному каталозі з іменем core, що містить образ пам'яті процесу (код і дані).

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

Ось список всіх сигналів, що існують в системі:

Таблиця 5.1

Назва Дія за умовчанням Значение
SIGABRT Завершити + core Сигнал посилається, якщо процес викликає системний виклик abort()
SIGALRM Завершити Сигнал посилається, коли спрацьовує таймер, який встановлений раніше
SIGBUS Завершити+ core Сигнал свідчить про деяку апаратну помилку. Зазвичай цей сигнал посилається при зверненні до недопустимої віртуальної адреси, для якої відсутня відповідна фізична сторінка
SIGCHLD Ігнорувати Сигнал, що посилається батьківському процесу при завершенні його нащадка
SIGSEGV Завершити + core Сигнал свідчить про звернення процесу до недопустимої адреси або області пам'яті, для якої в процесу недостатньо привілеїв доступу
SIGFPE Завершити + core Сигнал свідчить про виникнення особливих ситуацій, таких як ділення на 0 або переповнення операції з плаваючою точкою
SIGHUP Завершити Сигнал посилається лідеру сеансу, пов'язаному з управляючим терміналом, що термінал від'єднався (втрата лінії). Сигнал також посилається всім процесам поточної групи при завершенні виконання лідера. Цей сигнал інколи використовують як простий засіб міжпроцесної взаємодії. Зокрема, він застосовується для повідомлення демонів про необхідність відновити конфігураційну інформацію. Причина вибору саме сигналу SIGHUP полягає в тому, що демон за визначенням не має управляючого терміналу, і, відповідно, зазвичай не отримує цього сигналу
SIGILL Завершити + core Сигнал посилається ядром, якщо процес спробує виконати недопустиму інструкцію
SIGINT Завершити Сигнал посилається ядром всім процесам при натисненні клавіші переривання (<CTRL>+<C>)
SIGKILL Завершити Сигнал, при отриманні якого виконання процесу припиняється. Цей сигнал не можна не перехопити, не проігнорувати.
SIGPIPE Завершити Сигнал посилається при спробі запису в сокет, одержувач даних якого завершив виконання або закрив файловий покажчик на сокет
SIGPOLL Завершити Сигнал посилається при настанні певної події для опитуваного пристрою (наприклад, отриманий пакет по мережі)
SIGPWR Ігнорувати Сигнал генерується при загрозі втрати живлення. Зазвичай він посилається, коли живлення системи перемикається на джерело безперебійного живлення (UPS)
SIGQUIT Завершити Сигнал посилається всім процесам поточної групи при натисненні клавіш <CTRL>+<\>.
SIGSTOP Зупинити Сигнал посилається всім процесам поточної групи при натисненні клавіш <CTRL>+<Z>. Отримання сигналу викликає зупинку виконання процесу.
SIGSYS Завершити + core Сигнал посилається ядром при спробі здійснення процесом недопустимого системного виклику
SIGTERM Завершити Сигнал зазвичай представляє певне попередження, що процес незабаром буде знищений. Цей сигнал дозволяє процесу відповідним чином "підготуватися до смерті" - видалити тимчасові файли, завершити необхідні транзакції і так далі. Команда kill за умовчанням відправляє саме цей сигнал.
SIGTTIN Зупинити Сигнал генерується ядром (драйвером управляючого терміналу) при спробі процесу фонової групи здійснити читання з управляючого терміналу
SIGTTOU Зупинити Сигнал генерується ядром (драйвером терміналу) при спробі процесу фонової групи здійснити запис на управляючий термінал
SIGUSR1 Завершити Сигнал призначений для прикладних завдань як простий засіб межпроцесної взаємодії
SIGUSR2 Завершити Сигнал призначений для прикладних завдань як простий засіб межпроцесної взаємодії.

 

Важливу роль в житті процесів відіграє також планувальник – це частина ядра, відповідальна за багатозадачність системи. Адже в одиницю часу на одному процесорі може виконуватися лише одна завдання. Саме планувальник визначає, який із запущених процесів першим виконуватиметься, який другим. Для цього в кожного процесу існує ще один параметр, який називається пріоритетом. Для того, щоб поглянути пріоритет процесів, нам необхідно використовувати вже знайому команду ps з параметром -l (long – розширений вивід):

 

[gserg@WebMedia gserg]$ ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

0 S 500 1554 1553 0 75 0 - 1135 wait4 pts/1 00:00:00 bash

0 R 500 1648 1554 0 81 0 - 794 - pts/1 00:00:00 ps

[gserg@WebMedia gserg]$

 

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

 

Залишається лише вирішити питання, а чи може користувач управляти процесами і системними параметрами? Звичайно може! Для цього в Linux є набір інструментів, що дозволяють змінювати пріоритет процесу, посилати процесам сигнали. Про них ми з вами зараз і поговоримо.

nice -n command - дозволяє змінювати пріоритет, з яким виконуватиметься процес після запуску. Без вказівки команди command видає поточний пріоритет роботи. За умовчанням n дорівнює 10. Діапазон пріоритетів розташований від -20 (найвищий пріоритет) до 19 (найменший).

 

[gserg@WebMedia gserg]$ less.bashrc &

[1] 3070

[gserg@WebMedia gserg]$ ps -efl | grep less

0 T gserg 3070 3018 0 80 0 - 1004 finish 17:56 pts/3 00:00:00 less.bashrc

0 S gserg 3072 3018 0 80 0 - 949 pipe_w 17:57 pts/3 00:00:00 grep less

[gserg@WebMedia gserg]$ nice -n 20 less.bashrc &

[1] 3081

 

[gserg@WebMedia gserg]$ ps -efl | grep less

0 T gserg 3081 3018 0 99 19 - 1003 finish 18:01 pts/3 00:00:00 less.bashrc

0 S gserg 3083 3018 0 81 0 - 950 pipe_w 18:01 pts/3 00:00:00 grep less

[gserg@WebMedia gserg]$

 

Порівнюючи цифри пріоритету, зазначимо, що команда less в першому випадку виконувалася з пріоритетом 80, а в другому – 99. Таким чином, команда nice зробила свою справу – знизила пріоритет завдання.

nohup command – дозволяє процесу продовжити виконання навіть при втраті управляючого терміналу (SIGHUP). Цю команду доцільно використовувати коли необхідно виконати команду тривалої дії. Ви запускаєте команду і закриваєте термінальний сеанс, а вона при цьому продовжує виконуватися.

kill -SIGNAL pid – посилає сигнал процесу з ідентифікатором pid. Якщо сигнал не вказаний, команда посилає процесу сигнал SIGTERM.

 

[gserg@WebMedia gserg]$ less &

[1] 1352

[gserg@WebMedia gserg]$ ps

PID TTY TIME CMD

1322 pts/2 00:00:00 bash

1352 pts/2 00:00:00 less

1353 pts/2 00:00:00 ps

[gserg@WebMedia gserg]$ kill -SIGKILL 1352

[gserg@WebMedia gserg]$ ps

PID TTY TIME CMD

1322 pts/2 00:00:00 bash

1355 pts/2 00:00:00 ps

[1]+ Killed less

[gserg@WebMedia gserg]$_

 

killall -s SIGNAL процес – посилає сигнал всім процесам з іменем процес. Якщо сигнал не вказаний, посилає SIGTERM.

Сигнал для цієї команди необхідно вказувати без приставки SIG. Для отримання відповідності цифрового вигляду і імені сигналу використовується опція -l команди killall.

 

[gserg@WebMedia gserg]$ less./.bashrc&

[1] 1374

[gserg@WebMedia gserg]$ less./.bashrc&

[2] 1375

 

[1]+ Stopped less./.bashrc

[gserg@WebMedia gserg]$ less./.bashrc&

[3] 1376

 

[2]+ Stopped less./.bashrc

[gserg@WebMedia gserg]$ ps

PID TTY TIME CMD

1322 pts/2 00:00:00 bash

1374 pts/2 00:00:00 less

1375 pts/2 00:00:00 less

1376 pts/2 00:00:00 less

1377 pts/2 00:00:00 ps

 

[3]+ Stopped less./.bashrc

[gserg@WebMedia gserg]$ killall -s KILL less

[1] Killed less./.bashrc

[2]- Killed less./.bashrc

[3]+ Killed less./.bashrc

[gserg@WebMedia gserg]$

 

Висновки

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

Для керуванняроботою процесів користувачем в Linux є відповідні команди, що дозволяють змінювати пріоритет процесу, посилати процесам сигнали. Це команди nice, nohup, kill, killall.

Контрольні запитання і завдання для самостійного виконання

1. Які процеси називаються демонами?

2. Яка команда дозволяє переглянути список процесів?

3. Який процес називається " зомбі"?

4. В яких станах може перебувати процес?

5. Яка різниця між сплячим процесом і зомбі?

6. Яка різниця між реальним і ефективним ідентифікаторами процесів? Для чого в Linux використовується ці ідентифікатори?

7. Який процес в Linux є кореневим (батьківським) в ієрархії процесів?

8. Для чого використовується планувальник процесів?

9. Як дізнатися про пріоритет запущених процесів?

10. Як змінити пріоритет виконання процесів? Яка команда для цього використовується?

11. Яка команда знищує процес в пам'яті?

12. Яке призначення команди killall?




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 430; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.