코딩하는 해맑은 거북이
[운영체제] Program, Process, Thread 본문
해당 글은 아래의 3가지를 다룬다.
📌 프로그램(Program)
📌프로세스(Process)
📌 쓰레드(Thread)
📌 프로그램(Program)
메모리 상에 올라가 있지않고, 하드디스크에 들어있는 실행파일
cf) '.exe'로 끝나는 파일들이 프로그램이다!
📌 프로세스(Process)
- 실행 중인 프로그램의 인스턴스
- 실행파일의 내용이 메모리로 올라와서 CPU를 사용할 준비가 되어있는 것
- 프로그램은 1개지만, 해당 프로그램을 실행하는 인스턴스를 여러 개가 생길 수 있다.
cf) Chrome도 하나의 실행파일이지만, 여러 개의 창을 띄울 수 있다.
🔷 프로세스 구성
- CPU Register
- PC(Program Counter), SP(Stack Pointer), FP(Frame Pointer), ...
- Memory
- Text : Program Code (CPU에서 직접 수행되는 명령, 함수)
- Data : Global/Static variables (전역/정적변수)
- Stack : Local variables (including parameters) (지역변수, 인자, 함수의 리턴 주소)
- Heap : Allocated dynamically (동적으로 할당받는 곳)
- I/O Information
🔷 프로세스 상태
- 생성 (New)
- 프로세스가 생성되었지만 아직 승인 받지 못한 상태
- 준비 (Ready)
- 실행 준비는 되어 있지만 CPU가 사용 가능하지 않은 상태
- ex) 다른 프로세스가 실행 중
- 실행 (Running)
- CPU(Processor)가 프로세스에 포함된 명령을 실행 중인 상태
- 프로세스가 CPU를 차지하고 있는 상태
- 대기 (Blocked, Waiting)
- 프로세스가 입출력, 이벤트 등 다른 사건을 기다리는 동안 프로세스의 실행이 중단되어 있는 상태
- ex) 입출력 요청 발생
- 종료 (Terminated)
- 프로세스가 실행을 끝내고 종료한 상태
- 할당된 CPU 반납

🔷 프로세스 상태 전이
- Admitted : 프로세스 생성을 승인 받음
- Dispatch : 준비 상태에 있는 여러 프로세스들 중 하나가 스케줄러에 의해 실행되는 상태
- Interrupt : Timeout 예외상황 발생 시 현재 실행 중인 프로세스를 준비 상태로 전환하고, 다른 작업에 대응
- I/O or event wait : 실행 중인 프로세스가 입출력이나 이벤트를 처리해야 하는 경우, 끝날 때까지 대기 상태로 전환
- I/O or event completion : 입출력이나 이벤트가 모두 끝난 프로세스를 다시 준비 상태로 만들어 스케줄러에 의해 선택될 수 있는 상태로 전환
📌 쓰레드(Thread)
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 같은 주소 공간에서 따로 실행되는 함수
- 하나의 프로세스 내에 독립적인 실행 흐름
- 1개의 프로세스 내에 여러 개의 쓰레드가 존재할 수 있다.
(프로세스 주소 공간 공유한다. 즉, 데이터 공유 가능하다. → Concurrency(동시성) 문제발생)
- 쓰레드는 프로세스 내에 각각 PC, SP, Registers, Stack만 따로 고유하게 할당받고, Code/Data/Heap 영역은 공유한다.
cf) 인공지능에서 학습시키기 위한 데이터를 로더할 때, 병렬로 처리되게하는 num_workers가 생성되는 쓰레드의 갯수!
[참고자료]
Operating System - AI Tech Interview
프로세스를 관리하는데 있어 필요한 정보(메타 데이터)를 담고있는 운영체제 커널의 자료구조이다. 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 완료되면 PCB는 제거된다. PCB에
boostdevs.gitbook.io
[운영체제]프로세스와 프로그램 차이는? (Process vs Program)
운영체제 목차 A process is a program in execution Program이란? Program과 Process의 차이는 매우 간단한데 이름이 비슷하기도 하고 워낙 많이 쓰니까 헷갈려하시는 분들이 있더라고요. Program은 실행파일입니
jhnyang.tistory.com
프로세스(Process)
태스크: 자원소유권의 단위쓰레드: 수행의 단위프로세스: 동작중인 프로그램프로그램: 디스크에 저장되어 있는 실행 가능한 형태의 파일(바이너리 기계 명령어 + 수행에 필요한 자료들의 집합(d
velog.io
[운영체제]프로세스(Process) 상태 전이도
프로세스는 실행의 흐름에 따라 상태가 바뀐다. 일반적으로 프로그램의 실행 흐름은 5가지의 상태를 지닌다. 프로세스의 5가지 상태 생성(New): 프로세스 생성 상태 준비(Ready): 프로세스가 CPU에
wookkingkim.tistory.com
'ETC' 카테고리의 다른 글
[기업탐색] 도움되는 사이트 (1) | 2023.11.12 |
---|---|
[프론트엔드] 쉽고 빠른 웹 개발 - Bootstrap (0) | 2023.07.18 |
[리눅스] Shell Command (0) | 2023.04.25 |
[Github] Github 명령어 모음 (0) | 2023.03.13 |