프로세스가 하나가 있으면, 여기에 스레드로 구현 될 수도 있고 자식 프로세스로도 구현될 수 있다는데.
그러한 스레드나 프로세스들도 자식을 가진다던가 가능하다고 하는데요!
스레드라는건 코드 부분을 공유하잖아요? 그래서 문맥교환시에 부하가 프로세스보다 상대적으로 적은걸로 알고있습니다.
대신에 스택이나 이런 부분은 틀리고 실행 되는 코드 시작부도 틀려서 동일한 코드 부분을 공유하지만 다르게 구현이 가능한걸로 알고있습니다.
특정한 메모리 공유도 프로세스와 프로세스 간의 공유보다 훨씬 좋다고 알고있습니다.
그러면 자식 프로세스라는 말은 아예 부모 프로세스와 아예 독립된 메모리 공간을 갖는다는 말인가요? 코드 부분도 공유하지 않는다는 말이죠(?)
그러한 스레드나 프로세스들도 자식을 가진다던가 가능하다고 하는데요!
스레드라는건 코드 부분을 공유하잖아요? 그래서 문맥교환시에 부하가 프로세스보다 상대적으로 적은걸로 알고있습니다.
대신에 스택이나 이런 부분은 틀리고 실행 되는 코드 시작부도 틀려서 동일한 코드 부분을 공유하지만 다르게 구현이 가능한걸로 알고있습니다.
특정한 메모리 공유도 프로세스와 프로세스 간의 공유보다 훨씬 좋다고 알고있습니다.
그러면 자식 프로세스라는 말은 아예 부모 프로세스와 아예 독립된 메모리 공간을 갖는다는 말인가요? 코드 부분도 공유하지 않는다는 말이죠(?)
자식 스레드라는 말은 못들어봤다
같은 프로세스 내의 스레드끼리 공유하는 것은 코드, 데이터, 힙 섹션이다. 스택과 레지스터는 개별적으로 가진다. 기본적으로 같은 프로세스 내의 스레드들은 같은 프로세스에서 돌아가므로 같은 주소 공간 내에 있는 것이다. 그러므로 같은 프로세스 내의 스레드간 문맥 전환은 해야할 것이 적기 때문에 비용이 적은 것이고.
자식 프로세스는 부모의 메모리 공간을 복사해서 새로운 주소 공간에서 돌아간다. 초기에는 코드, 데이터, 힙, 스택, 레지스터가 모두 똑같지만, 서로 다른 프로세스이고 서로 다른 프로세스 id를 가진다.