Яка різниця між роботою та процесом?


Відповіді:


46

Процес - це будь-яка запущена програма з власним адресним простором.

Завдання - це поняття, використовуване оболонкою - будь-яка програма, яку ви інтерактивно запускаєте, яка не відключається (тобто не демон), це робота. Якщо ви запускаєте інтерактивну програму, можна натиснути, CtrlZщоб призупинити її. Потім ви можете запустити його на передньому плані (за допомогою fg) або на задньому плані (за допомогою bg).

Якщо програма призупинена або працює у фоновому режимі, ви можете запустити іншу програму - тоді у вас буде два завдання. Ви також можете запустити програму запущеної в фоновому режимі, додаючи «і» як це: program &. Ця програма стала б фоновим завданням. Щоб перерахувати всі завдання, які ви виконуєте, ви можете використовувати jobs.

Для отримання додаткової інформації про робочі місця дивіться цей розділ сторінки bash man.


У наведеному вище прикладі, коли у нас працює 2 завдання, у нас також працює 2 процеси , чи не так? Не могли б ви пояснити значення власного адресного простору ? У якому випадку програма не має власного адресного простору?
Кенні

@Kenny так, ці робочі місця також були б процесами. Насправді кожна робота - це процес. Робота пов'язана з вашою сесією. Кожен розпочатий процес, який не відривається від вашого tty, - це робота.
Шон Дж. Гофф

@Kenny, що стосується процесів, коли я кажу програму, це дуже загальна річ - набір впорядкованих інструкцій для процесора. Це також називається завданням або ниткою виконання. Процес може створити інший потік, який розділяє свій адресний простір.
Шон Дж. Гофф

1
Командні труби, такі як in, ls | sort- це завдання, але кожна команда виконується як дочірній процес іншого процесу підрозділу. Це приклад роботи, що складається з декількох процесів. Як ваше визначення роботи може пояснити, що робота може складатися з декількох процесів?
Тім

30

У UNIX є окремі поняття "процес", "група процесів" та "сесія".

Кожна оболонка, яку ви отримуєте при вході в систему, стає лідером своєї власної нової сесії та групи процесів і встановлює собі керуючу групу процесів терміналу.

Оболонка створює групу процесів протягом поточного сеансу для кожного "завдання", яке вона запускає, і розміщує кожен процес, який він починає, у відповідну групу процесів. Наприклад, ls | headце трубопровід двох процесів, який оболонка вважає єдиним завданням і буде належати до однієї, нової групи технологічних процесів.

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

Оболонка має поняття "передній план" та "фонові" завдання. Завдання переднього плану - це групи процесів з керуванням терміналом, а фонові завдання - це процесні групи без управління терміналом.

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

Процеси можуть читати і записувати їх до керуючого терміналу, якщо вони перебувають у передній групі процесів. В іншому випадку вони отримують SIGTTINі SIGTTOUсигналізують про спроби зчитування з або запису в термінал відповідно. За замовчуванням ці сигнали призупиняють процес, хоча більшість оболонок маскуються, SIGTTOUтак що фонове завдання може записувати на термінал безперебійно.


1
Це хороший, стислий огляд управління оболонками та терміналами. Це можна вдосконалити, зазначивши, що "робота" - це "трубопровід", який може бути декількома процесами, з'єднаними разом у групі процесів.
Кріс Пейдж

1

В обчислювальній роботі робота - це одиниця роботи або одиниця виконання (яка виконує зазначену роботу). Компонент завдання (як одиниця роботи) називається завданням або кроком (якщо є послідовним, як у потоці завдань). Як одиниця виконання, завдання може бути конкретно ідентифіковано з одним процесом, який, в свою чергу, може мати підпроцеси (дочірні процеси; процес, відповідний завданням, що є батьківським процесом), які виконують завдання або етапи, що містять роботу роботи робота; або з групою процесів; або з абстрактним посиланням на процес або групу процесів, як у контролі завдань Unix.

Джерело

приємні приклади


-1

Вищеописані визначення є дуже технічними, але, можливо, оператор хотів отримати більше щоденних роз'яснень. Я думаю, що робота - це запланований процес. Коли ми маємо справу з процесами взагалі, не обов'язково є поняття розкладу, але коли ми використовуємо слово "робота", ми завжди маємо на увазі, що воно заплановане або повторюване, як цикл, це як робочий.


1
Будь ласка, поясніть голосування, якщо ви хочете проголосувати. Якщо ця відповідь невірна, принаймні поясніть, чому ви вважаєте, що вона не правильна. До сих пір я все ще думаю, що моя відповідь має сенс, саме таке пояснення я шукав.
eloone

Я згоден, що той, хто проголосував, повинен був пояснити, чому. Але я думаю, що причина протиріччя полягає в тому, що ваше визначення "роботи" просто невірне.
prograde

Потрібно пояснити, чому це неправильно? "Робота" не є чітко визначеною, як, що таке "процес" (з PID в системі). На мій досвід, "робота" - це завжди слово, яке використовується для визначення певного виду процесу, який часто планувався, і на задньому плані, і який можна запустити. Ось чому це важко визначити, оскільки використання визначає це. Це також може бути група процесів, але це "контейнер" (LXC), але "контейнер" не є "роботою". Запущений процес, такий як "nginx", також не є "роботою". Мій коментар все ще додає що-небудь до відповіді. Знову ж таки, це відповідає тому, що я намагався зрозуміти.
eloone

Я також все ще шукаю правильне визначення, тому вибачте, поки не можу відповісти. Але що не правильно, це те, що це повинно було бути заплановано.
prograde
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.