프로세스와 스레드
프로세스
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 컴퓨터 프로그램: 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 집합
- 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 사용
- 각 프로세스는 주 스레드라고도 하는 단일 스레드로 시작되지만, 해당 스레드에서 추가 스레드를 만들 수 있다.
프로그램과 프로세스
- 프로그램
- 일반적으로 하드 디스크 등에 저장된 실행코드
- 프로세스
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위
- 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리상에서 실행
프로세스의 상태
- 생성(create) : 프로세스가 생성되고 있는 상태
- 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있는 상태
- 준비(ready) : CPU가 할당되기를 기다리고 있는 상태
- 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
- 대기(waiting) 또는 보류(block): 어떤 사건을 기다리고 있는 상태
- 종료(terminated) : 프로세스의 실행 종료
스레드
- 어떠한 프로그램, 특히 프로세스 내에서 실행되는 흐름의 단위
- 프로세스의 모든 스레드는 가상 주소 공간 및 시스템 리소스를 공유한다.
프로세스와 스레드의 비교
- 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있다.
- 멀티스레드는 프로세스 내의 같은 메모리 공간을 공유해 사용한다.
요약
- 프로세스는 컴퓨터에서 실행되고 있는 컴퓨터 프로그램이며 스레드는 한 프로세스 내에서 실행되는 흐름의 단위이다.
참고 자료
This post is licensed under CC BY 4.0 by the author.