• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

안녕하세요! Ex 4.17 질문입니다.

21.06.17 12:41 작성 조회수 146

2

안녕하세요 교수님! 강의 너무 잘 듣고 있습니다.

Ex 4.17(14분 쯤)에서 질문이 있습니다.

강의 상 P1(자식1), P3(자식1의 자식 - 자식2)는 if 안에서 각각 unique 쓰레드를 생성해서 총 2개의 쓰레드가 생성되는 것까지는 이해가 됩니다.

마지막 fork를 통해 P1(자식1)과 P3(자식2)가 복제가 되는데, 이 과정에서 if내에서 추가된 쓰레드들은 복제가 되지 않나요?

fork는 오로지 프로세스만 복제를 하게 되는건지 문의드립니다!

답변 1

답변을 작성해보세요.

1

좋은 질문을 해 주셨네요.

멀티 쓰레디드된 프로세스를 fork()하면 어떻게 되는가? 라는 문제인데요,

실제로 예제 코드를 만들어서 여러 운영체제에서 실험을 해봐야 알겠지만,

제 기억으로는 대부분의 리눅스 계열에서는 멀티 쓰레드를 같이 복사하는 것으로 압니다.

하지만, 어떤 OS들은 fork() 시에 main 쓰레드만 복사하기도 한다고 해요.

따라서 질문하신 내용은 OS 구현체에 달린 문제라고 할 수 있습니다.

POSIX 표준에도 딱히 그 내용을 규정해 둔 것은 없는 것으로 아는데...

정확하지는 않으니까 직접 한 번 조사해 보고 실험해 보시는 것도 좋은 공부가 되실 것 같습니다.