Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.95 KB

File metadata and controls

49 lines (37 loc) · 1.95 KB

프로세스 vs 스레드

프로세스

  • 실행 중인 프로그램

image

  • 생성 상태
  • 준비상태
  • 대기상태
    • blocking I/O : 다음 입출력이 완료될 때 까지 프로세스 중지 후 대기
    • non-blocking I/O : 입출력 대기 중에도 비동기로 프로그램 실행
  • 디스패치 :
    • 생성 -> 준비 관리
    • 실행되어야 할 Thread가 queue에 나열되어 있음
    • dispatcher가 순차적으로 준비 상태로 넘긴다.

스레드

  • 프로세스 내에서 실행되는 여러 흐름의 단위

  • 프로세스 내에서 Stack만 따로 할당 받고 Program Code, Data, Heap 영역은 공유

  • Process에는 최소 1개의 Thread가 존재한다

  • Thread 에서 연산이 수행된다

  • Process에 속한 모든 Thread는 Process의 메모리 공간을 나누어 차지한다.(스레드는 해당 프로세스의 메모리 바깥으로 나갈 수 없다)

PCB(process control block)

  • process pointer, status ...
  • PID(process id) : 프로세스의 구분자 값
image

Context Switching

  • 각 스레드는 cpu 자원을 시간에 따라 분할하여 사용
  • 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정

Multi Process vs Multi Thread

Multi Process

  • 모든 프로세스가 각각의 메모리 공간을 차지한다.
  • IPC를 이용해 통신한다.
  • Context switching 비용이 크다
  • 다른 프로세스의 영향을 덜 받는다.

Multi Thread

  • 스레드 간 메모리를 공유한다.
  • 스레드 간 보다 긴밀하게 연결되어 있다.
  • Context switching 비용이 적다.
  • 공유 자원 관리를 해야 한다. (동시성 문제, 동기화 작업)