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

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

"작업"과 "프로세스"의 차이점은 무엇인가요?

답변1

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

작업은 쉘에서 사용하는 개념입니다. 대화형으로 시작하는 분리되지 않은 모든 프로그램(즉, 데몬이 아님)이 작업입니다. 대화형 프로그램을 실행 중인 경우 CtrlZ을 눌러 일시 중지할 수 있습니다. 그런 다음 포그라운드( 사용 fg) 또는 백그라운드( 사용 )에서 bg다시 시작할 수 있습니다.

프로그램이 정지되거나 백그라운드에서 실행되는 동안 다른 프로그램을 시작할 수 있습니다. 그러면 두 개의 작업이 실행됩니다. 아래와 같이 "&"를 추가하여 백그라운드에서 실행되는 프로그램을 시작할 수도 있습니다 program &. 프로그램이 백그라운드 작업이 됩니다. 실행 중인 모든 작업을 나열하려면 를 사용할 수 있습니다 jobs.

직책에 대한 자세한 내용은 다음을 참조하세요.이 섹션의Bash 매뉴얼 페이지의 내용.

답변2

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

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

쉘은 현재 세션에서 시작하는 각 "작업"에 대한 프로세스 그룹을 생성하고 시작하는 각 프로세스를 적절한 프로세스 그룹에 배치합니다. 예를 들어 ls | head두 개의 프로세스로 구성된 파이프라인이 있는 경우 셸은 이를 단일 작업으로 처리하고 하나의 새 프로세스 그룹에 속하게 됩니다.

프로세스는 실행 스레드와 주소 공간 및 파일 설명자 테이블과 같은 기타 컨텍스트의 모음입니다. 프로세스는 다른 프로세스를 시작할 수 있습니다. 다른 작업을 수행하지 않는 한 이러한 새 프로세스는 상위 프로세스와 동일한 프로세스 그룹에 속합니다. 각 프로세스에는 상위 프로세스와 동일한 방식으로 시작되는 "제어 터미널"이 있을 수도 있습니다.

쉘에는 "포그라운드" 작업과 "백그라운드" 작업이라는 개념이 있습니다. 포그라운드 작업은 터미널을 제어할 수 있는 프로세스 그룹이고, 백그라운드 작업은 터미널을 제어할 수 없는 프로세스 그룹이다.

각 터미널에는 포그라운드 프로세스 그룹이 있습니다. 작업이 포그라운드로 가져오면 쉘은 이를 터미널의 포그라운드 프로세스 그룹으로 설정합니다. 작업이 백그라운드에 배치되면 쉘은 터미널의 포그라운드 프로세스 그룹을 다른 프로세스 그룹이나 자체로 설정합니다.

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

답변3

작업과 프로세스는 서로 관련되어 있지만 개념은 다릅니다.

  • 프로세스는 현재 시스템에서 실행 중인 프로그램의 인스턴스입니다. 자체 메모리 공간, 파일 설명자 및 고유한 프로세스 ID(PID)가 있습니다.

  • 작업은 사용자가 실행하려는 작업 단위로, 하나 이상의 프로세스로 구성될 수 있으며 작업 제어 명령을 통해 관리할 수 있습니다. 작업에는 자체 JID(작업 ID)도 있습니다.

답변4

위의 정의는 매우 기술적이지만 운영자는 일상적인 설명을 더 원할 수도 있습니다. 일은 예정된 과정이라고 생각해요. 일반적인 프로세스를 다룰 때 반드시 스케줄링이라는 개념이 있는 것은 아니지만 "작업"이라는 단어를 사용할 때는 항상 스케줄링되거나 루프처럼 반복된다는 의미로 작업자와 같습니다.

관련 정보