본문 바로가기

📘 Computer Science/운영체제

[운영체제] 프로세스와 스레드

1. 프로세스 (Process)


  • 운영체제로 부터 자원을 할당받은 작업의 단위를 말합니다.

 

(1) 프로그램과 프로세스

  • 프로그램은 윈도우에서는 exe파일, 맥북에서는 dmg 파일을 의미합니다.
  • 프로그램은 프로그래밍 언어(C, Java 등)로 코드를 작성하면 개발할 수 있습니다.
  • 즉, 프로그램은 말그래도 코드 덩어리를 말합니다.
  • 이런 코드 덩어리(프로그램)를 실행시키면 프로세스가 된다.
  • 정리해 보면 프로세스는 프로그램이 작동되고 있는 상태를 말합니다.
  • 프로그램이 실행되기 위해서는 운영체제(OS)가 메모리를 할당해줘야 합니다.
  • 이렇게 운영체제에게 메모리 공간을 할당받고, CPU도 할당받아서 프로그램의 코드가 실행되면 프로세스가 됩니다.

 

(2) 프로세스의 상태

상태 설명
생성 (new) 프로세스가 생성되고 아직 준비되어 있지 않은 상태
준비 (ready) 프로세스가 실행을 위해 기다리고 있는 상태
(CPU를 할당받을 수 있는 상태)
실행 (running) 프로세스가 CPU를 할당받아 실행되고 있는 상태
대기 (waiting) 프로세스가 특정 이벤트(IO)를 받아 기다리는 상태
(이벤트가 발생하여 다시 ready 상태가 될 때까지 대기)
종료 (terminated) 프로세스가 실행을 완료하고 종료된 상태
(메모리에서 제거된 상태)

 

 

 

 

2. 스레드 (Thread)


  • 프로세스가 할당받은 자원을 이용하는 흐름의 단위를 말합니다.
  • 하나의 프로세스 내부에서 동시에 실행되는 흐름의 단위를 스레드라고 합니다.

 

(1) 프로세스와 스레드

  • 프로세스는 프로그램이 메모리를 할당받아 실행되는 상태를 말합니다.
  • 이때 프로세스가 할당받는 메모리 구조에는 코드 영역, 데이터 영역, 스택 영역, 힙 영역이 있습니다.
  • 자세한 메모리 구조에 대한 글은 링크를 참고해보시기 바랍니다.
  • 하나의 프로세스에서 스레드가 생성될 때는 프로세스의 메모리 구조에서 스택 영역만 할당받아서 복사합니다.
  • 나머지 코드 영역, 데이터 영역, 힙 영역은 여러 스레드가 공유하게 되는 구조를 갖게 됩니다.

 

(2) 스레드의 상태

상태 설명
NEW 스레드가 생성되고 아직 호출되지 않은 상태
RUNNABLE 스레드가 실행되기 위해 기다리는 상태
(CPU를 할당받을 수 있는 상태)
BLOCKED 스레드가 특정 이벤트(IO)를 받아 기다리는 상태
(이벤트가 발생하여 다시 RUNNABLE 상태가 될 때까지 대기)
TERMINATED 스레드가 실행을 완료하고 종료된 상태
(메모리에서 제거된 상태)