Process, Thread

Sixhustle·2021년 12월 24일
0

Computer Science

목록 보기
3/5

Program

  1. 어떤 작업을 위해 실행할 수 있는 파일

Process

  1. 컴퓨터에서 연속적으로 실행되는 컴퓨터 프로그램
  2. 메모리에 적재되어 실행되는 프로그램 인스턴스
  3. 운영체제로부터 자원을 할당 받는 작업 단위

특징

  1. process당 최소 1개의 thread를 가짐
  2. process는 별도의 주소 공간에서 실행
  3. 다른 process의 변수나 자료에 접근할 수 없음
  4. 다른 process접근하려면 프로세스 간 통신(IPC, Inter-process communication)을 사용해야함

Thread

  1. 프로세스 내에서 실행되는 흐름의 단위
  2. 프로세스가 할당받은 자원을 이용

특징

  1. process내에서 각각 stack만 할당받고, code, data, heap은 공유
  2. process내에서 thread간 heap자원 공유

Java thread

  1. 일반 thread와 차이가 없으며 JVM이 운영체제 역할
  2. JVM에 의해 스케쥴되는 실행단위

Thread lifecycle


lifecycledesc
new스레드 객체가 생성, 아직 start() 메소드가 호출되지 않은 상태
runnable실행 상태로 언제든지 갈 수 있는 상태
waiting다른 스레드가 통지할 때까지 기다리는 상태
timed_waiting주어진 시간 동안 기다리는 상태
blocked사용하고자 하는 객체의 락이 풀릴 때까지 기다리는 상태
terminated실행을 마친 상태

Multi process

1.하나의 응용프로그램을 여러 개의 프로세스로 구성

장점

  1. 여러 프로세스 중 일부 프로세스에 문제가 발생해도 악영향이 다른 곳으로 확산 X

단점

  1. Context switching(현재 진행하는 task의 상태를 저장하고, 다음 task의 상태 값을 읽는 과정)에 의한 오버헤드
  2. 복잡한 process간 통신(IPC)

Multi thread

  1. 하나의 응용프로그램을 여러 개의 스레드로 구성
  2. 각 스레드가 하나의 작업을 처리하도록 함

장점

  1. process를 생성하여 자원을 할당하는 시스템 call이 줄어 효율적인 자원 관리
  2. thread간 자원공유가 자유로움

단점

  1. 자원 공유의 문제가 발생(동기화)
  2. 하나의 thread문제가 전체 프로세스에 영향을 끼칠 수 있음

References

0개의 댓글