code, data, heap, stack 형식으로 할당stack은 각자 값을 가지고 있음code, data, heap, 형식으로 할당된 영역 공유프로세스를 실행하다가 오류가 나서 강제종료되면 ?
→ 공유하고 있는 파일을 손상시키는 것이 아니면 영향 X
스레드 하나에서 오류가 발생하면 ?
→ 오류 난 스레드가 속한 프로세스가 종료 될 수 있다
장점) 자원 접근에 대한 동기화 신경을 쓰지 않아도 됨
단점) 여러개의 CPU를 활용하지 못함
장점) 자원을 공유하므로 가볍고 통신이 빠르다
단점) 동기화 이슈나 하나의 스레드 오류로 프로세스에 영향이 갈 수 있다
장점) 각 프로세스가 메모리를 독립적으로 사용해 안전성이 높다
단점) 자원 소모가 크고, 프로세스 간 통신이 복잡하다
🤷♀️ 그러면 멀티 프로세스와 멀티 스레드는 어떻게 구분하여 언제 사용하는 것이 좋을까?
멀티 프로세스 : 작업간의 안전성이 중요할 때 사용
멀티 스레드 : 가볍고 빠른 통신이 중요할 때 사용
ex) 크롬 브라우저는 각 탭을 멀티 프로세스로 분리해서 한 탭이 멈춰도 다른 탭에는 영향이 없도록 설계되어 있다. 반면 서버나 게임에서는 멀티 스레드를 활용해 가볍고 빠름을 추구한다.