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 | 스레드가 실행을 완료하고 종료된 상태 (메모리에서 제거된 상태) |
'📘 Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링 알고리즘 (0) | 2023.05.09 |
---|---|
[운영체제] 프로세스의 메모리 구조 (JVM 메모리 구조) (2) | 2023.05.02 |
[운영체제] 메모리 관리 (가상 메모리, 스레싱, 메모리 할당) (0) | 2023.04.24 |
[운영체제] 운영체제란? (0) | 2023.01.17 |