본문 바로가기

카테고리 없음

프로세스 vs 스레드

프로그램

  • 컴퓨터 명령어의 집합
  • 메모리에 올라가있지 않음
  • 정적인 상태

프로세스

  • 컴퓨터에서 실팽되고 있는 프로그램
  • OS가 프로세스별로 독립된 메모리 영역 할당 (code, data, stack, heap)
  • 일반적으로 프로세스끼리는 공유 자원이 없어서 하나가 죽어도 다른거에 영향 X
  • OS 입장에서 작업의 단위

스레드

  • 프로세스의 한계 극복
    • 프로세스마다 본인에게 할당된 메모리 내 정보만 접근 가능
    • 프로그램을 여러 프로세스로 나누면 자원 공유가 힘듦
  • 스레드끼리 프로세스의 자원을 공유함 (heap, code, data)
    • 스레드마다 스택은 따로 갖고있음
  • 프로세스의 특정한 수행 경로
  • CPU 입장에서 작업의 단위
  • 스레드 하나가 터지면 공유자원때문에 프로세스 전체가 터질 수 있음

프로세스끼리의 통신

  • IPC (InterProcess Communitacion)
  • context switching 을 해야하는데 이게 비쌈

스레드끼리의 통신

  • 공유 자원이 있으므로 context switching 비용 절감 + 속도 빠름 + 메모리 절약
  • 공유 자원에 대한 동기화 이슈 발생 가능