• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

fork exec 예제를 알고싶습니다.

23.06.27 22:41 작성 조회수 373

0

잘 이해가 안되는 부분은

exec으로 프로세스 생성 시 호출한 존재가 소멸된다는 것 부분인데요

그럼 바탕화면에서 그림판이라는 프로세스를 exec으로 생성하면 바탕화면이 소멸되는 건가요?

예시 좀 부탁드립니다 꼭 알고싶습니다.

 

답변 3

·

답변을 작성해보세요.

1

exec은 호출하는 프로세스가 곧 사라진다는 것이 핵심입니다. 어차피 사라지기 전에 새 프로세스가 기존 프로세스의 자원을 그대로 사용하고 기존 프로세스 자신만 사라지는 것입니다. 그리고 본인이 설명한 것처럼 바탕화면(정확히는 탐색기, 윈도우 운영체제의 쉘 프로세스)이 곧 사라질 예정이라면 exec 방식으로 그림판을 실행한다면 바탕화면이 가진 리소스를 그림판이 그대로 가지고 사용하게 되고 그림판을 띄워준 바탕화면은 소멸해 사라지는 것입니다.

가령 결혼을 앞둔 자식이 있다고 가정해 봅시다. 새 가정을 꾸리기 위해 집도 장만해야 하고 각종 살림도 들여야 할 것입니다. 자식을 위해 부모가 집을 알아보던 중 자신의 삶이 얼마 남지 않아 곧 사라질 상황이라면 굳이 집을 얻는 것이 효율적인지 생각해볼 수 있겠습니다. 새 집을 장만하는 일은 여러 비용이 소모되기 때문입니다. 그 비용을 아끼고자 자식의 새 집을 현재 부모가 살던 집을 간단히 수리하는 수준에서 마련한다면 다른 이슈를 떠나 매우 합리적으로 새 집을 얻게 될 것입니다.

부모님이 살아계신 동안 새 집을 얻어 자식을 분가하면 fork(), 자식에게 자신의 집을 내어주고 별이 된다면 exec()이 되겠습니다.

이해가 되셨으면 좋겠습니다.

박제영님의 프로필

박제영

질문자

2023.06.29

답변 감사합니다
댓글에 추가 질문 하나 더 올렷습니다 번거로우시겟지만 꼭 알고싶습니다.

0

박제영님의 프로필

박제영

질문자

2023.06.29

여전히 이해가 덜 되었습니다.
제 질문이 부정확햇던것 같습니다.좀더 상세히 질문을 올려보겟습니다

exec()으로 실행된 자식 프로세스는 부모의 자원을 그대로 물려받는다고 하였습니다.
부모의 가상메모리가 1GB 면 exec()으로 실행된 자식 프로세스는 가상메모리가 1GB가 할당이 되나요?
자식 프로세스는 1GB가 필요하지 않아도 1GB가 할당이 되는지를 알고싶습니다.

네, 그렇습니다. 다만 공간이 주어졌다 하여 실제로 메모리가 할당되는 것은 아닙니다. 공간이 주어지는 것과 할당은 별개의 문제입니다.

박제영님의 프로필

박제영

질문자

2023.06.30

선생님 답변 감사합니다!

0

박제영님의 프로필

박제영

질문자

2023.06.29

추가적인 질문을 하나 더 드립니다.

탐색기의 PCB가 잇고 가상메모리가 1GB가 할당되잇습니다.
그림판은 메모리가 10MB만 있으면 됩니다
탐색기가 곧 소멸하고 사라지는데 그 전에 EXEC으로 그림판을 실행합니다

그러면 그림판은 가상메모리가 필요하지도 않은 1GB가 할당이 되나요?

32비트 응용 프로그램이라면 User mode 가상 메모리 공간이 2GB 잡힙니다. 그것을 그대로 계승하며 기존 프로세가 소멸하면서 사용했던 메모리는 모두 반환됩니다.