2012-09-22 4 views
0

부모가 fork()를 사용하여 자식을 만든 다음 exec() 자식을 만들 때 자식의 주소 공간은 무엇입니까? 부모의 주소 공간 중 일부 또는 새로운 주소가 될 것입니까? 둘째로 나는 그것이 OS에 의존하거나 부모로부터 자원을 얻을 수있는 것처럼 의존성이 OS 나 다른 것에 의존 하는가에 달려 있다고 읽었다.부모 및 자식 프로세스

감사합니다 ... :-)

답변

3

자식 프로세스는 부모 주소 공간과 동일한 형식으로 배치되는 경우가 많은 부모 주소 공간의 정확한 복사본을 가져옵니다. 각각은 자신의 가상 주소 공간을 가지기 때문에 각각의 주소 공간은 같지만 동일한 주소에서 동일한 데이터를 가질 수 있습니다. 또한 linux은 하위 프로세스를 만들 때 copy on write를 사용합니다. 즉, 부모 중 하나가 쓰기를 수행 할 때까지 부모와 자식이 부모 주소 공간을 공유하며, 그 시점에서 메모리는 자식에게 물리적으로 복사됩니다. 이렇게하면 새 프로세스를 실행할 때 불필요한 사본이 제거됩니다. 새로운 실행 파일로 메모리를 덮어 쓰게 될 것이기 때문에 왜 그것을 복사해야합니까? 그것에 대해 더 많이 알 수 있습니다 Here

+0

감사합니다. 도움을주었습니다 ... 링크도 감사합니다. 좋은 소스 ... :-) –

0

그것은 복사 (copy-on-write) 전략을 만들어 그것의 자신의 가상 메모리로 백업 별도의 주소 공간을해야합니다.

관련 문제