Яка різниця між "роботою" та "процесом"?
Яка різниця між "роботою" та "процесом"?
Відповіді:
Процес - це будь-яка запущена програма з власним адресним простором.
Завдання - це поняття, використовуване оболонкою - будь-яка програма, яку ви інтерактивно запускаєте, яка не відключається (тобто не демон), це робота. Якщо ви запускаєте інтерактивну програму, можна натиснути, CtrlZщоб призупинити її. Потім ви можете запустити його на передньому плані (за допомогою fg
) або на задньому плані (за допомогою bg
).
Якщо програма призупинена або працює у фоновому режимі, ви можете запустити іншу програму - тоді у вас буде два завдання. Ви також можете запустити програму запущеної в фоновому режимі, додаючи «і» як це: program &
. Ця програма стала б фоновим завданням. Щоб перерахувати всі завдання, які ви виконуєте, ви можете використовувати jobs
.
Для отримання додаткової інформації про робочі місця дивіться цей розділ сторінки bash man.
ls | sort
- це завдання, але кожна команда виконується як дочірній процес іншого процесу підрозділу. Це приклад роботи, що складається з декількох процесів. Як ваше визначення роботи може пояснити, що робота може складатися з декількох процесів?
У UNIX є окремі поняття "процес", "група процесів" та "сесія".
Кожна оболонка, яку ви отримуєте при вході в систему, стає лідером своєї власної нової сесії та групи процесів і встановлює собі керуючу групу процесів терміналу.
Оболонка створює групу процесів протягом поточного сеансу для кожного "завдання", яке вона запускає, і розміщує кожен процес, який він починає, у відповідну групу процесів. Наприклад, ls | head
це трубопровід двох процесів, який оболонка вважає єдиним завданням і буде належати до однієї, нової групи технологічних процесів.
Процес - це (колекція) потоків виконання та іншого контексту, такого як адресний простір та таблиця дескрипторів файлів. Процес може запускати інші процеси; ці нові процеси будуть належати до тієї самої групи процесів, що і батьківська, якщо не буде вжито інших дій. Кожен процес може також мати "керуючий термінал", який починається так само, як його батьківський.
Оболонка має поняття "передній план" та "фонові" завдання. Завдання переднього плану - це групи процесів з керуванням терміналом, а фонові завдання - це процесні групи без управління терміналом.
Кожен термінал має групу процесу переднього плану. При виведенні завдання на передній план оболонка встановлює його як групу процесу переднього плану терміналу; викладаючи завдання на другий план, оболонка встановлює групу процесу переднього плану терміналу на іншу групу процесу або на себе.
Процеси можуть читати і записувати їх до керуючого терміналу, якщо вони перебувають у передній групі процесів. В іншому випадку вони отримують SIGTTIN
і SIGTTOU
сигналізують про спроби зчитування з або запису в термінал відповідно. За замовчуванням ці сигнали призупиняють процес, хоча більшість оболонок маскуються, SIGTTOU
так що фонове завдання може записувати на термінал безперебійно.
В обчислювальній роботі робота - це одиниця роботи або одиниця виконання (яка виконує зазначену роботу). Компонент завдання (як одиниця роботи) називається завданням або кроком (якщо є послідовним, як у потоці завдань). Як одиниця виконання, завдання може бути конкретно ідентифіковано з одним процесом, який, в свою чергу, може мати підпроцеси (дочірні процеси; процес, відповідний завданням, що є батьківським процесом), які виконують завдання або етапи, що містять роботу роботи робота; або з групою процесів; або з абстрактним посиланням на процес або групу процесів, як у контролі завдань Unix.
Вищеописані визначення є дуже технічними, але, можливо, оператор хотів отримати більше щоденних роз'яснень. Я думаю, що робота - це запланований процес. Коли ми маємо справу з процесами взагалі, не обов'язково є поняття розкладу, але коли ми використовуємо слово "робота", ми завжди маємо на увазі, що воно заплановане або повторюване, як цикл, це як робочий.