2009-10-02 6 views
2

나는 관련 질문을했다 'Difference between process group id and job id in Unix', 하지만 나는 대답을하지 못했다. 그 대답에서, 작업 ID는 쉘 (커널은 아무 관계가 없다)과 관련된 데이터로 작성되었으므로 전경/배경은 쉘을 이해하지만 "ps x"을 실행하면 "R+"과 같이 통계로 표시됩니다. 또는 "R"을 전경 및 백그라운드 프로세스로 각각 처리하지만 ps은 커널에 의해 실행되므로 커널이 작업이 뒤로/전경인지 어떻게 알 수 있습니까?유닉스 의심의 직업 ID

+0

보통 ps는 쉘이 프로세스와 같은 프로세스입니다. 'ps '가 정보를 얻을 수있는 곳은 다양합니다 - 종종'/ proc' 파일 시스템이 사용되거나'/ dev/kmem'을 직접 사용할 수 있습니다. –

답변

1

작업 ID는 확실히 쉘 기능입니다.

그러나 운영 체제에는 작업 제어를 용이하게하기 위해 쉘에서 사용되는 현재 터미널 프로세스 그룹 ID 개념이 있습니다. 현재 터미널 프로세스와 동일한 프로세스 그룹 ID를 갖는 프로세스는 SIGINT와 같은 키보드 신호를 수신하고 터미널에서 I/O를 수행 할 수 있습니다. 이러한 프로세스는 포 그라운드 프로세스입니다. 프로세스 그룹 ID가 다른 경우 프로세스는 백그라운드 프로세스입니다. ps 명령은 프로세스가이 개념의 포 그라운드 프로세스 인 경우 +을 표시합니다. 쉘이 구현 한 작업 제어에 대해 아직 알 필요가 없습니다.

+0

쉘이 커널에 현재 터미널 프로세스를 알리는 방법은 무엇입니까? exec를 사용하여 함수를 실행합니다. 어떤 일과 관련이 있습니까? – avd

0

셸이 커널에서 루틴을 사용하여 목적을 달성했기 때문에 '커널과 아무 관계가 없다'는 말은하지 않습니다.

프로세스가 전경 또는 배경이지만, 커널이 너무 그것의 알고해야하며, 쉘이 요청할 때 프로세스의 상태를보고 할 수 있는지 여부를을 결정 쉘.

+0

쉘은 어떤 커널 루틴을 사용합니까? – avd

+0

쉘이 * 유용한 커널 루틴을 사용한다고 말할 수 있다고 생각합니다. 커널은 디스크, 디스플레이, I/O 장치 등에 액세스하기위한 루틴 라이브러리로 간주 될 수 있습니다. 쉘 (또는 모든 실행 프로그램)이 하드웨어에 액세스해야 할 때마다 커널 루틴을 사용합니다. 새 하드웨어에는 특별한 드라이버가 필요할 수 있지만 새로운 버전의 커널은 새 루틴의 형태로 하드웨어를 계속 추가합니다 *. – pavium

+0

정확한 루틴이 필요합니다. 자체 쉘을 구현 중입니다. 긴급하게 알려주십시오. – avd