운영체제 공부 중인데 프로세스와 스레드 개념에서 계속 막힙니다. 책에는 "프로세스는 실행 중인 프로그램이고 스레드는 그 안의 실행 흐름"이라고 나와 있는데, 그래서 실제로 뭐가 어떻게 다른 건지 와닿지가 않네요.


특히 헷갈리는 게 세 가지예요.


첫째, 프로세스는 각자 독립된 메모리 공간을 가진다는데 스레드는 뭘 공유하고 뭘 따로 갖는 건가요? 힙은 공유하고 스택은 각자라는 말을 봤는데 왜 그렇게 나뉘는지 모르겠어요.


둘째, 흔히 "스레드가 프로세스보다 가볍다"고 하잖아요. 생성 비용이든 전환 비용이든 뭐가 가볍다는 건지 구체적으로 궁금합니다.


셋째, 스레드 하나에서 문제가 터지면 프로세스 전체가 죽을 수 있다고 하던데, 반대로 프로세스는 하나 죽어도 다른 프로세스는 멀쩡하잖아요. 이 차이가 왜 생기는 건가요? 위 세 개가 사실 같은 원리에서 나오는 얘기인 것 같기도 한데 정리가 안 됩니다.