РЕФЕРАТ
натему:
"Керування процесами и роботами в Linux"
процесе и роботи в Linux
Зміст тими: Керування процесами и роботами в Linux: Створення, зупинка, Відновлення, завершення. Пріорітеті процесів. Активні, фонові та відкладені процеси. Демони.
Теоретичні Відомості
1. Основні Поняття про процеси и роботи
процесов у Linux и Unix назівається программа або команда, Що віконується.
Linux - багатозадачна ОС и в ній одночасно Може віконуватісь кілька процесів. Для того, щоб їх розрізняті, шкірному з них прісвоюється персональний ідентіфікатор (PID - Process IDentificator). Для виведення на екран списку Всіх процесів, Що існують в Сейчас в сістемі, вікорістовується команда ps. В результаті виконан цієї команди на екран дисплея Може буті, Наприклад, видана така інформація:
PID TTY TIME CMD
701 pts/0 1: 16: 00 bash
2403 pts/0 0: 18: 00 bs
TTY - термінал з Якого БУВ запущених процесів.
ТІМЕ - годину, Протяг Якого ВІН віконується.
CMD - назва прогрів, Яка буде працюваті у запущеному процесі.
найперш процес, запущений системою, назівається - init. Його PID = 1. ВІН є Головним батьківськім процесом Всіх інших процесів. Коженов новий процес повинності обов'язково мати Свій Батьківський процес. Наприклад, процес текстової Оболонков bash, Який БУВ породженій безпосередню від процесу init, у свою Черга, буде батьківськім процесом Для всіх інших процесів, створюваніх Користувачем Під годину сеансу. Особлівістю Unix та Linux є ті, Що для шкірного нового процесу створюється Дублікат батьківського процесу. Такий механізм процесів назівається клонуванням.
Кожній новоствореній процес отрімує три вже відкрітіх файли:
- stdin - для вхідніх даніх,
- stdout - для вихідних даніх,
- stderr - для повідомлень про помилки.
процеса можут функціонуваті в двох режимах: системному и користувача. Работа в системному режімі означає виконан процесом системних викликів. ВІН найбільш Важливим, ТОМУ ЩО віконується обробка перерівань, вікліканіх зовнішнімі сигналами и системний виклик, а кож Керування доступом до диска, Розподіл додаткової дінамічної пам'яті й інших ресурсів системи. Процес функціонує в режімі користувача, коли віконується программа користувача.
Окрім поняття "процес" вікорістовується кож и поняття "робота". Хоча їх практичний смисл Досить близьким, протікають є деякі відмінності. По-перше, ЯКЩО процес характерізується ідентіфікатором PID, то робота - номером, Що позначається символом%. По-друге, для Керування роботами існують спеціальні команди, про які детальніше буде сказано далі. По-третє, до робіт відносіться Ліше частина наявний в сістемі процесів, зокрема процеси Користувачів.
Варто кож зазначіті, Керування роботами здійснюється власними Засоба текстових оболонок Linux. Наприклад, оболонка bash має команду jobs для Керування роботами. Для переглядання наявний в сістемі робіт вказана команда має такий формат:
jobs - <опції>,
де <опції> вказують на ідентіфікаторі типом процесів (робіт).
Отримати інформацію про відповідність Між номером роботи и ідентіфікатором процесу можна за допомог команди
jobs-l
2. Активні, фонові та відкладені процеси (роботи)
процеса (роботи) бувають активними (прівілейованімі), фонові та відкладенімі. У шкірно момент годині Може буті Ліше один активний процес. Активним є такий процес, з яким безпосередню взаємодіє користувач, тобто Тільки цею процес отрімує інформацію з клавіатурі и посілає результати на ваш екран (ЯК кажуть, віконується на передньому плані). З іншого боку, фонові процеси НЕ одержують інформації з термінала, у загально випадка смороду спокійно виконують, не вімагаючі спожи в спілкуванні з Користувачем. Деякі фонові процеси виконують Протяг великого проміжку часу І не здійснюють нічого зовні цікавого. Компіляція програм або ущільнення файлів - прикладом таких процесів. Немає спожи чекаті, коли ці процеси закінчаться. Їх можна просто запустіті у фоні. Поки смороду там виконують, ві можете займатіся іншімі програмами. Альо потрібно знаті Основні Особливості фонової ОБРОБКИ:
фонових процесів НЕ допускає Введення з клавіатурі;
будь-яке виведення від фонового процесу на екран руйнує все, Що ві в цею момент ввели з клавіатурі;
при запуску Великої кількості фонових процесів можна перевантажіті систему.
процеса можут буті кож відкладені. Відкладеній процес - ції процес, Що у Сейчас НЕ віконується и тимчасово зупіненій. Після того, Як ві прізупінілі виконан процесу, надалі ви можете Його продовжіті Як на передньому плані, так и в фоні. Поновлення прізупіненого процесу НЕ змініть Його стану - при поновленні ВІН почнет з того Місця, на якому стали зупинка.
Майте на увазі, Що прізупінення процесу - Це не перерівання процесу. Колі ві переріваєте процес, Який віконується, натіскаючі клавіші перерівання (Зазвічай, Це ), то процес зніщується назавжди. А ЯКЩО процес зніщено, то Немає іншого способу відновіті Його, Як Знову запустіті Спочатку, вікорістовуючі Колишня команду. Зауважімо кож, Що деякі Програми можут перехоплюваті перерівання, тоді натіскання клавіш не приведені до негайного пріпінення процесу. Це дозволити Програмі віконаті необхідні Операції акуратно завершення. Деякі Програми взагалі не дозволяти вам їх перерваті.
3. Створення процесу
Процес породжується за допомог системного Виклики fork (). При цьому Виклики відбувається Перевірка на Наявність Вільної пам'яті, доступної для розміщення нового процесу. ЯКЩО необхідна пам'ять доступна, то створюється процес-нащадок поточного процесу, Що представляє собою точну копію процесу, Що віклікається При цьому в табліці процесів для нового процесу будується відповідна структура. Нова структура створюється кож у табліці користувача. При цьому ВСІ змінні ініціалізуються нулями. Цьому процесу прісвоюється новий унікальній ідентіфікатор, а ідентіфікатор батьківського процесу запам'ятовується в блоці Керування процесом.
процеса, Що виконують Різні прогрів, утворюються завдякі застосуванню наявний у стандартній бібліотеці Linux функцій "сімейства ехес": ехесl, ехесlр, ехесlе, ехесv, ехесvе, ехесvр. Ці функції відрізняються форматом Виклики, альо в залишковим підсумку виконують одну задачу: заміщають всередіні потокового процесу код, Що віконується, на код, Що містіться в зазначеним файлі. Цей файл Може буті НЕ Тільки двійковім файлом Linux, Що віконується (аналог файла *. exe в сістемі Windows), альо и сценарієм командного інтерпретатора, и двійковім файлом іншого формату (Наприклад, класом java, Що віконується файлом DOS).
Таким чином, ЯКЩО Операція запуску Програми у DOS и Windows віконується Як єдине ціле, то у Linux (і в Unix взагалі) розділена на два етапи: Спочатку здійснюється запуск, а потім візначається, Яка програма буде працюваті. Чі є в цьому сенс и чи не занадто Великі Додаткові витрати? Аджея Створення копії процесу передбачає копіювання Дуже значного обсягах інформації.
Сенс у даного підході є суттєвій. Дуже часто программа винна Зробити деякі дії галі до того, Як почнет власне її виконан. Наприклад, Створити непоіменованій канал для Спілкування з іншімі процесами. Реалізується Це Дуже просто: Спочатку "відмежовуються" процеси, потім віконується системний виклик рiре () для Створення каналу - и Тільки після цього запускається програма Із функції еxес ().
Стосовно Додатковий витрат, то смороду найчастіше віявляються надто малімі: при створенні копії процесу Його індівідуальні дані фізічно нікуді НЕ копіюються. Замість цього вікорістовується техніка, відома за Назв сміттю-оn-write (копіювання при запісі): сторінки даніх обох процесів особливим чином познач...