КАТЕГОРИИ: Архитектура-(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
Важливу роль в житті процесів відіграє також планувальник – це частина ядра, відповідальна за багатозадачність системи. Адже в одиницю часу на одному процесорі може виконуватися лише одна завдання. Саме планувальник визначає, який із запущених процесів першим виконуватиметься, який другим. Для цього в кожного процесу існує ще один параметр, який називається пріоритетом. Для того, щоб поглянути пріоритет процесів, нам необхідно використовувати вже знайому команду 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |