프로세스 생성

프로세스 생성

Unix/Linux에서 프로그램을 실행할 때 뒤에서 정확히 무슨 일이 발생합니까?

프로세스 생성을 담당하는 사람은 누구입니까?

프로세스(내 프로그램의 인스턴스)를 시작하려면 커널을 호출해야 합니까? 이런 의미에서 내 프로그램은 커널 호출을 수행하기 위해 프로세서에서 실행되어야 합니다. 그렇죠? 그렇다면 첫 번째 커널 호출은 어떻게 프로세스를 시작합니까? 막다른 골목에 도달한 것과 같나요? 그렇다면 커널은 어디에 가장 먼저 나타나는가?

죄송합니다. 이 모든 것에 대한 많은 문서를 읽었지만 여전히 점을 연결하거나 전체 그림을 얻을 수 없습니다. 누군가 이것에 대해 간단한 용어로 자세히 설명해 주시겠습니까?

답변1

교착 상태는 완전히 다른 것입니다.

프로세스 생성

전통적으로 Unix에는 프로세스를 생성하는 방법이 있습니다 fork. fork시스템 호출입니다. 기존 프로세스에 의해 호출됩니다. 이는 커널에 대한 호출입니다. 그러면 새로운 프로세스가 생성됩니다. 새 프로세스는 이전 프로세스와 거의 동일하며 두 프로세스 모두 fork호출에서 반환됩니다.

프로세스 간의 주요 차이점은 다음과 같습니다. 의 반환 값 fork. 프로세스 ID.

exec프로세스를 구별하기 위해 시스템/커널 호출도 사용할 수도 있습니다 . 다른 프로그램을 실행하세요.

그럼 어떻게 시작됐나요?

프로세스 1은 커널에 연결되어 있습니다. 둘 다 동시에 로드됩니다. 커널이 이 프로세스를 실행하기 시작합니다. 다른 모든 것은 거기에서 나옵니다. 프로세스는 새로운 프로세스를 만들고, 새로운 프로세스는 나무의 가지처럼 새로운 프로세스를 만듭니다(위 참조).

관련 정보