Post

프로세스와 스레드

프로세스

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
    • 컴퓨터 프로그램: 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 집합
    • 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 사용
  • 각 프로세스는 주 스레드라고도 하는 단일 스레드로 시작되지만, 해당 스레드에서 추가 스레드를 만들 수 있다.

프로그램과 프로세스

  • 프로그램
    • 일반적으로 하드 디스크 등에 저장된 실행코드
  • 프로세스
    • 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
    • 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리상에서 실행

프로세스의 상태

  • 생성(create) : 프로세스가 생성되고 있는 상태
  • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있는 상태
  • 준비(ready) : CPU가 할당되기를 기다리고 있는 상태
    • 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
  • 대기(waiting) 또는 보류(block): 어떤 사건을 기다리고 있는 상태
  • 종료(terminated) : 프로세스의 실행 종료

스레드

  • 어떠한 프로그램, 특히 프로세스 내에서 실행되는 흐름의 단위
  • 프로세스의 모든 스레드는 가상 주소 공간 및 시스템 리소스를 공유한다.

프로세스와 스레드의 비교

  • 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있다.
  • 멀티스레드는 프로세스 내의 같은 메모리 공간을 공유해 사용한다.

요약

  • 프로세스는 컴퓨터에서 실행되고 있는 컴퓨터 프로그램이며 스레드는 한 프로세스 내에서 실행되는 흐름의 단위이다.

참고 자료

This post is licensed under CC BY 4.0 by the author.