프로세스와 스레드 정리

정은·2025년 6월 18일

프로세스

  • 운영체제로부터 자원을 할당받는 단위
  • code, data, heap, stack 형식으로 할당

스레드

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 메모리 영역 내에서 stack은 각자 값을 가지고 있음
  • 나머지 code, data, heap, 형식으로 할당된 영역 공유

프로세스를 실행하다가 오류가 나서 강제종료되면 ?
→ 공유하고 있는 파일을 손상시키는 것이 아니면 영향 X

스레드 하나에서 오류가 발생하면 ?
→ 오류 난 스레드가 속한 프로세스가 종료 될 수 있다


싱글 스레드

  • 하나의 프로세스에서 하나의 스레드가 실행
  • 하나의 스택과 레지스터로 표현

장점) 자원 접근에 대한 동기화 신경을 쓰지 않아도 됨
단점) 여러개의 CPU를 활용하지 못함

멀티 스레드

  • 각 프로세스 내에서 여러개의 스레드가 동시 작업 수행
  • 자원을 공유하여 생성/관리 중복 최소화

장점) 자원을 공유하므로 가볍고 통신이 빠르다
단점) 동기화 이슈나 하나의 스레드 오류로 프로세스에 영향이 갈 수 있다

멀티 프로세스

  • 하나의 프로그램이 여러개의 독립된 프로세스로 나누어 실행됨

장점) 각 프로세스가 메모리를 독립적으로 사용해 안전성이 높다
단점) 자원 소모가 크고, 프로세스 간 통신이 복잡하다



🤷‍♀️ 그러면 멀티 프로세스와 멀티 스레드는 어떻게 구분하여 언제 사용하는 것이 좋을까?

멀티 프로세스 : 작업간의 안전성이 중요할 때 사용
멀티 스레드 : 가볍고 빠른 통신이 중요할 때 사용

ex) 크롬 브라우저는 각 탭을 멀티 프로세스로 분리해서 한 탭이 멈춰도 다른 탭에는 영향이 없도록 설계되어 있다. 반면 서버나 게임에서는 멀티 스레드를 활용해 가볍고 빠름을 추구한다.

0개의 댓글