프로세스와 스레드의 차이: 메모리 공유와 Race Condition, Go 고루틴까지
핵심 답변: 프로세스와 스레드의 가장 중요한 차이는 메모리를 누가 소유하고 누구와 공유하느냐입니다. 서로 다른 프로세스는 일반적으로 각자 독립된 가상 주소 공간을 가지므로 서로의 메모리를 직접 읽거나 쓸 수 없습니다. 반면 같은 프로세스에 속한 스레드들은 하나의 주소 공간(코드, 전역 변수, Heap 등)을 함께 쓰고, 스레드마다 자기 Stack과 레지스터 상태만 따로 가집니다. 그래서 스레드끼리는 데이터를 쉽게 주고받을 수 있지만, 같은 데이터를 동시에 수정하면 Race Condition이 생길 수 있습니다. Go의 고루틴은 OS 스레드와 같은 것이 아니라, Go 런타임이 적은 수의 OS 스레드 위에서 번갈아 실행하는 별도의 실행 단위입니다.이 글은 프로세스와 스레드의 차이를 메모리 공유 관점에서 정리..