Jaka jest różnica między „zadaniem” a „procesem”?
Jaka jest różnica między „zadaniem” a „procesem”?
Odpowiedzi:
Proces to dowolny działający program z własną przestrzenią adresową.
Zadanie jest pojęciem używanym przez powłokę - każdy program, który uruchamiasz interaktywnie, który się nie odłącza (tj. Nie jest demonem), jest zadaniem. Jeśli prowadzisz program interaktywny, możesz nacisnąć, CtrlZaby go zawiesić. Następnie możesz uruchomić go ponownie na pierwszym planie (używając fg
) lub w tle (używając bg
).
Gdy program jest zawieszony lub działa w tle, możesz uruchomić inny program - wtedy uruchomione byłyby dwa zadania. Można również uruchomić uruchomionego programu w tle przez nadanie „&” tak: program &
. Ten program stałby się pracą w tle. Aby wyświetlić listę wszystkich uruchomionych zadań, możesz użyć jobs
.
Aby uzyskać więcej informacji na temat zadań, zobacz tę sekcję strony podręcznika bash.
ls | sort
to zadanie, ale każde polecenie działa jako proces potomny innego procesu podpowłoki. To jest przykład zadania składającego się z wielu procesów. Jak twoja definicja zadania wyjaśnia, że zadanie może składać się z wielu procesów?
UNIX ma osobne pojęcia „proces”, „grupa procesów” i „sesja”.
Każda powłoka, którą otrzymujesz podczas logowania, staje się liderem własnej nowej sesji i grupy procesów oraz ustawia kontrolną grupę procesów terminalu na siebie.
Powłoka tworzy grupę procesów w ramach bieżącej sesji dla każdego uruchamianego „zadania” i umieszcza każdy rozpoczęty proces w odpowiedniej grupie procesów. Na przykład ls | head
jest potokiem dwóch procesów, które powłoka uważa za pojedyncze zadanie i będzie należeć do jednej, nowej grupy procesów.
Proces jest (zbiorem) wątkiem wykonania i innym kontekstem, takim jak przestrzeń adresowa i tabela deskryptorów plików. Proces może rozpocząć inne procesy; te nowe procesy będą należeć do tej samej grupy procesów co rodzic, chyba że zostaną podjęte inne działania. Każdy proces może mieć również „terminal kontrolny”, który zaczyna się tak samo jak jego rodzic.
Powłoka ma koncepcję zadań „pierwszego planu” i zadań „w tle”. Zadania na pierwszym planie to grupy procesów z kontrolą terminala, a zadania w tle to grupy procesów bez kontroli terminala.
Każdy terminal ma grupę procesów pierwszego planu. Podczas przenoszenia zadania na pierwszy plan powłoka ustawia go jako grupę procesów na pierwszym planie terminala; podczas umieszczania zadania w tle powłoka ustawia grupę procesów pierwszego planu terminala na inną grupę procesów lub samą siebie.
Procesy mogą odczytywać i zapisywać na terminalu sterującym, jeśli znajdują się w grupie procesów na pierwszym planie. W przeciwnym razie odbierają SIGTTIN
i SIGTTOU
sygnalizują odpowiednio próby odczytu i zapisu na terminalu. Domyślnie sygnały te zawieszają proces, chociaż większość powłok maskuje się, SIGTTOU
aby zadanie w tle mogło nieprzerwanie zapisywać na terminalu.
W informatyce zadanie jest jednostką pracy lub jednostką wykonania (która wykonuje tę pracę). Składnik zadania (jako jednostka pracy) nazywa się zadaniem lub krokiem (jeśli jest sekwencyjny, jak w strumieniu zadania). Jako jednostka wykonania zadanie może być konkretnie utożsamiane z jednym procesem, który z kolei może mieć podprocesy (procesy potomne; proces odpowiadający zadaniu jest procesem nadrzędnym), które wykonują zadania lub kroki obejmujące pracę praca; lub z grupą procesów; lub z abstrakcyjnym odniesieniem do procesu lub grupy procesów, jak w kontroli zadań w systemie Unix.
Powyższe definicje są bardzo techniczne, ale być może operatorzy chcieli więcej codziennych wyjaśnień. Myślę, że praca jest zaplanowanym procesem. Kiedy ogólnie zajmujemy się procesami, niekoniecznie istnieje pojęcie harmonogramu, ale kiedy używamy słowa „praca”, zawsze mamy na myśli, że jest on zaplanowany lub powtarzalny jak pętla, to jest jak pracownik.