본문 바로가기
Programming

프로세스 vs 스레드

by peter paak 2020. 8. 18.
728x90

용어정리

  • 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일
  • 프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 스레드 : 프로세스 내에 실행되는 여러 흐름의 단위
  • 자바 스레드 : JVM가 운영체제 역할을 하는 스레드

1. 프로그램

  • 하드웨어에 저장된 작업을 할 수 있는 파일

2. 프로세스

  • 실행된 프로그램
  • 운영체제에 의해 메모리에 올라온 상태
  • 각각 독립된 메모리영역(Code, Data, Stack, Heap)을 할당받는다
  • 각 프로세스는 별도의 주소 공간에서 실행된다
  • 프로세스 상호간에 자원을 공유할 수 없다
  • IPC로 다른 프로세스의 자원에 접근가능하다

3. 스레드

  • 프로세스 내부에 Stack에 존재하는 코드
  • 프로세스의 Code, Data, Heap 영역을 공유한다
  • 스레드는 별도의 Register와 Stack 존재

멀티 프로세스 vs 멀티 스레드

멀티스레드 장점

  1. System call, Context Switching을 줄일 수 있다
  2. 프로세스 내 스레드 간의 자원공유가 간단하다
  3. 프로세스 전환 속도보다 스레드 전환속도가 빠르다

멀티 스레드 단점

  1. 스레드는 동기화 문제를 가진다.
728x90