Q.프로세스와 스레드의 차이를 설명해주세요
독립된 주소 공간을 갖는지가 다릅니다.
| 항목 | 프로세스 | 스레드 |
|---|
| 주소 공간 | 독립 | 공유 |
| 생성 비용 | 크다 | 작다 |
| 통신 | 별도 수단이 필요하다 | 메모리를 그대로 공유 |
| 한쪽이 죽으면 | 다른 프로세스는 무사 | 프로세스 전체가 죽는다 |
| 문맥 교환 | 주소 공간까지 바꾼다. 비싸다 | 레지스터와 스택만. 싸다 |
주소 공간 분리가 모든 차이의 뿌리입니다. 분리돼 있으니 안전하고 무겁고, 공유하니 빠르고 위험합니다.
흔한 실수: 스레드를 "가벼운 프로세스"로만 답하는 것. 무게 차이는 결과이고 원인은 무엇을 공유하는가입니다. 그리고 공유가 주는 위험(경쟁 조건, 한 스레드의 오류가 전체를 죽임)을 함께 말하는 것이 좋습니다.
Q.멀티 프로세스 vs 멀티 스레드, 언제 뭘 쓰나요?
| 상황 | 고를 것 | 이유 |
|---|
| 안정성이 최우선 | 멀티 프로세스 | 하나가 죽어도 나머지가 산다 |
| 데이터 공유가 잦다 | 멀티 스레드 | 메모리를 그대로 쓴다 |
| 생성과 소멸이 빈번 | 멀티 스레드 | 생성 비용이 훨씬 싸다 |
| 격리가 필요하다 | 멀티 프로세스 | 플러그인, 브라우저 탭 |
| 언어에 전역 잠금이 있다 | 멀티 프로세스 | CPU 병렬이 스레드로 안 나온다 |
브라우저가 탭마다 프로세스를 쓰는 이유가 첫 번째와 네 번째입니다. 한 탭이 죽어도 다른 탭이 살고, 악성 페이지가 다른 탭의 메모리를 볼 수 없습니다.
실무에서는 섞어 씁니다. 프로세스를 코어 수만큼 띄우고 각 프로세스 안에서 스레드나 이벤트 루프를 쓰는 구성이 흔합니다.
흔한 실수: 스레드가 항상 빠르다고 답하는 것. 공유 자원 경합이 심하면 잠금 대기로 오히려 느려지고, 프로세스로 나눠 각자 처리하는 편이 빠른 경우가 있습니다.
먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.
읽었으면 문제로 확인해보세요
운영체제 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.