코딩하는 해맑은 거북이

[운영체제] Program, Process, Thread 본문

ETC

[운영체제] Program, Process, Thread

#CJE 2023. 6. 11.
해당 글은 아래의 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

Memory 구조

🔷 프로세스 상태

  • 생성 (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
Comments