[unix] 직업과 프로세스의 차이점은 무엇입니까?

“작업”과 “프로세스”의 차이점은 무엇입니까?



답변

프로세스는 자체 주소 공간이있는 실행중인 프로그램입니다.

작업은 쉘에서 사용하는 개념입니다. 대화식으로 시작하여 분리되지 않은 (즉, 데몬이 아닌) 프로그램은 작업입니다. 대화식 프로그램을 실행중인 CtrlZ경우을 눌러 일시 중단 할 수 있습니다 . 그런 다음 전경 ()을 사용 fg하거나 배경 ()을 사용하여 다시 시작할 수 있습니다 bg.

프로그램이 백그라운드에서 일시 중단되거나 실행되는 동안 다른 프로그램을 시작할 수 있습니다. 그러면 두 개의 작업이 실행됩니다. 다음과 같이 “&”를 추가하여 백그라운드에서 실행중인 프로그램을 시작할 수도 있습니다 program &. 그 프로그램은 배경 작업이 될 것입니다. 실행중인 모든 작업을 나열하려면을 사용할 수 있습니다 jobs.

작업에 대한 자세한 내용 은 bash 매뉴얼 페이지 의이 섹션 을 참조하십시오.


답변

UNIX에는 “프로세스”, “프로세스 그룹”및 “세션”이라는 별도의 개념이 있습니다.

로그인 할 때마다 각 쉘은 새로운 세션 및 프로세스 그룹의 리더가되고 터미널의 제어 프로세스 그룹을 자체로 설정합니다.

쉘은 실행되는 각 “작업”에 대해 현재 세션 내에 프로세스 그룹을 작성하고 시작하는 각 프로세스를 적절한 프로세스 그룹에 배치합니다. 예를 들어, ls | head셸이 단일 작업을 고려하고 단일 새 프로세스 그룹에 속하는 두 프로세스의 파이프 라인입니다.

프로세스는 실행 스레드 및 주소 공간 및 파일 설명자 테이블과 같은 기타 컨텍스트의 (수집) 스레드입니다. 프로세스는 다른 프로세스를 시작할 수 있습니다. 이러한 새로운 프로세스는 다른 조치를 취하지 않는 한 상위 프로세스와 동일한 프로세스 그룹에 속합니다. 각 프로세스에는 “제어 터미널”이있을 수 있으며,이 터미널은 상위와 동일하게 시작됩니다.

쉘에는 “전경”작업과 “백그라운드”작업의 개념이 있습니다. 포 그라운드 작업은 터미널을 제어하는 ​​프로세스 그룹이고 백그라운드 작업은 터미널을 제어하지 않는 프로세스 그룹입니다.

각 터미널에는 포 그라운드 프로세스 그룹이 있습니다. 작업을 포 그라운드로 가져올 때 쉘은이를 작업을 터미널의 포 그라운드 프로세스 그룹으로 설정합니다. 작업을 백그라운드에 놓을 때, 쉘은 터미널의 포 그라운드 프로세스 그룹을 다른 프로세스 그룹 또는 자체로 설정합니다.

프로세스가 포 그라운드 프로세스 그룹에있는 경우 제어 터미널에서 프로세스를 읽고 쓸 수 있습니다. 그렇지 않으면 터미널에서 각각 읽고 쓰려고 할 때 신호를 수신 SIGTTIN하고 SIGTTOU신호를 보냅니다. SIGTTOU백그라운드 작업이 터미널에 중단없이 쓰일 수 있도록 대부분의 쉘은 마스크 처리하지만 기본적으로 이러한 신호는 프로세스를 일시 중단합니다 .


답변

컴퓨팅에서 작업작업 단위 또는 실행 단위 (상기 작업을 수행하는 단위)입니다. 작업 구성 요소 (작업 단위)를 작업 또는 단계 (작업 스트림에서와 같이 순차적 인 경우)라고합니다. 실행 단위로서, 작업은 단일 프로세스로 구체적으로 식별 될 수 있으며, 이는 단일 프로세스로 구성 될 수 있고, 이는 하위 프로세스 (하위 프로세스; 상위 프로세스 인 작업에 대응하는 프로세스)를 가질 수있다. 일; 또는 프로세스 그룹과 함께; 또는 Unix 작업 제어에서와 같이 프로세스 또는 프로세스 그룹에 대한 추상 참조가 있습니다.

출처

좋은 예


답변

위의 정의는 매우 기술적 인 것이지만 op가 더 많은 설명을 원했을 수도 있습니다. 나는 직업이 예정된 과정이라고 생각합니다. 우리가 일반적으로 프로세스를 다룰 때, 스케줄이라는 개념이 반드시 필요한 것은 아니지만, “job”이라는 단어를 사용할 때 항상 스케줄처럼 반복되거나 반복되는 것은 작업자와 같습니다.


답변