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