"작업"과 "프로세스"의 차이점은 무엇입니까?
프로세스는 자체 주소 공간이있는 실행중인 프로그램입니다.
작업은 셸에서 사용하는 개념입니다. 대화식으로 시작하여 분리되지 않은 (즉, 데몬이 아닌) 프로그램은 작업입니다. 대화식 프로그램을 실행중인 경우 CtrlZ 일시 중단합니다. 그런 다음 포 그라운드 (fg
사용) 또는 백그라운드 (bg
사용)에서 다시 시작할 수 있습니다.
프로그램이 백그라운드에서 일시 중단되거나 실행되는 동안 다른 프로그램을 시작할 수 있습니다. 그러면 두 개의 작업이 실행됩니다. 다음과 같이 "&"를 추가하여 백그라운드에서 실행중인 프로그램을 시작할 수도 있습니다. program &
. 그 프로그램은 배경 작업이 될 것입니다. 실행중인 모든 작업을 나열하려면 jobs
를 사용하십시오.
작업에 대한 자세한 내용은 bash 매뉴얼 페이지의 이 섹션 을 참조하십시오.
UNIX에는 "프로세스", "프로세스 그룹"및 "세션"이라는 별도의 개념이 있습니다.
로그인 할 때마다 각각의 셸은 자체 새 세션 및 프로세스 그룹의 리더가되고 터미널의 제어 프로세스 그룹을 자체로 설정합니다.
셸은 시작하는 각 "작업"에 대해 현재 세션 내에 프로세스 그룹을 생성하고 시작하는 각 프로세스를 적절한 프로세스 그룹에 배치합니다. 예를 들어, ls | head
는 두 프로세스의 파이프 라인으로, 셸은 단일 작업을 고려하여 단일 새 프로세스 그룹에 속합니다.
프로세스는 실행 스레드 및 주소 공간 및 파일 설명자 테이블과 같은 기타 컨텍스트의 (수집) 스레드입니다. 프로세스는 다른 프로세스를 시작할 수 있습니다. 이러한 새 프로세스는 다른 조치를 취하지 않는 한 상위 프로세스와 동일한 프로세스 그룹에 속합니다. 각 프로세스에는 "제어 터미널"이있을 수 있으며,이 터미널은 상위와 동일하게 시작됩니다.
Shell은 "전경"작업과 "백그라운드"작업의 개념을 가지고 있습니다. 포 그라운드 작업은 터미널을 제어하는 프로세스 그룹이고 백그라운드 작업은 터미널을 제어하지 않는 프로세스 그룹입니다.
각 터미널에는 포 그라운드 프로세스 그룹이 있습니다. 작업을 포 그라운드로 가져올 때 쉘은이를 작업을 터미널의 포 그라운드 프로세스 그룹으로 설정합니다. 작업을 백그라운드로 수행 할 때, 쉘은 터미널의 포 그라운드 프로세스 그룹을 다른 프로세스 그룹 또는 자체로 설정합니다.
프로세스가 포 그라운드 프로세스 그룹에있는 경우 프로세스는 제어 터미널에서 읽고 쓸 수 있습니다. 그렇지 않으면 터미널에서 각각 읽고 쓰기를 시도 할 때 SIGTTIN
및 SIGTTOU
신호를 수신합니다. 대부분의 쉘이 SIGTTOU
을 마스크하여 백그라운드 작업이 터미널에 중단없이 쓰일 수 있도록 기본적으로 이러한 신호는 프로세스를 중단합니다.
컴퓨팅에서, Job 은 작업 단위 또는 실행 단위 (상기 작업을 수행하는 단위)입니다. 작업 구성 요소 (작업 단위)를 작업 또는 단계 (작업 스트림에서와 같이 순차적 인 경우)라고합니다. 실행 단위로서, 작업은 단일 프로세스로 구체적으로 식별 될 수 있으며, 이는 단일 프로세스로 구성 될 수 있고, 이는 하위 프로세스 (하위 프로세스; 상위 프로세스 인 작업에 대응하는 프로세스)를 가질 수있다. 일; 또는 프로세스 그룹과 함께; 또는 Unix 작업 제어에서와 같이 프로세스 또는 프로세스 그룹에 대한 추상 참조가 있습니다.