본문 바로가기
Computer Science/Operating System

프로세스와 스레드

by Cyber Security Engineer 2024. 8. 15.
반응형

Process와 Thread의 차이

  • 프로세스(Process) = 관리의 단위 = 연산할 것
  • 프로세스 = 파일로 되어 있는 프로그램의 일부가 메모리에 적재된다. (실행되고 있는 프로그램)
  • 프로세스(작업)는 최소 1개의 스레드가 존재한다.
  • 스레드(Thread) = 1개 프로세스 내 개별화된 코드의 실행 흐름
  • 멀티 스레딩(Multi Threading) = 1개 프로세스 내 개별화된 여러 개의 실행 흐름

 

 

가상메모리에 할당된 공간

  • OS는 Virtual Memory를 프로세스에 할당한다.
  • 프로세스에 속한 모든 스레드는 프로세스의 Virtual Memory로 공간이 제약된다.
  • 스레드는 실질적 연산의 주체
  • 멀티 스레딩 → 동시성 + 동기화 이슈
  • 프로세스 = 1 가구
  • 스레드 = 1 세대원
  • Vurtual Memory = 1 가구가 존재하는 공간(집)
  • 프로세스에 할당된 Virtual Memory = 집
  • 스레드마다 Stack 구조로 관리되는 메모리 공간이 있다.
  • Thread Local Storage = Stack, 각자 쓰는 공간(각자의 방)
  • Heap = 거실, 부엌 등 공용 공간, Process 전체가 사용
  • 스레드마다 각자 고유한 TLS(Thread Local Storage)를 가지고 있다 = 각자 자기 방을 가진다.
  • 프로세스에게 CPU 자원 할당 = Linux 계열
  • 스레드에게 CPU 자원 할당 = Windows 계열

 

 

컴퓨터의 자원

  • Computer = CPU + RAM + HDD
  • 가상메모리(Virtual Memory) = RAM + HDD
  • 프로세스 단위로 가상메모리가 할당된다.
  • 프로세스에 스레드가 속해있으며, 프로세스에게 주어진 메모리 공간을 사용한다.
  • PCB(Process Control Block) = OS가 프로세스 관리에 필요한 정보를 저장한 곳 
  • TCB(Thread Control Block) = OS가 스레드 관리에 필요한 정보를 저장한 곳
  • CPU의 Core = 연산의 주체
  • CPU Core가 8개가 있다면, Process 2000개는 CPU 자원을 분할해서 사용해야 한다. = 시분할

 

 

프로그램이 프로세스가 되는 과정

그림1 - 프로그램이 메모리에 올라와 프로세스가 되는 과정

  • PID = Process ID (정수)
  • 가상 메모리 영역 = Stack, Heap, Code(text)
  • MS Word = HDD에 설치
  • 설치된 프로그램을 RAM 메모리에 올린다. = 인스턴스 화 = 프로그램 실행 = 프로세스

 

 

프로세스의 Life Cycle

그림2 - 프로세스의 상태

  • 프로세스의 상태는 전이한다.
  • 프로세스의 Life Cycle = 생성 → 준비 → 실행 → 완료
  • 가끔 대기 상태가 추가된 Life Cycle이 있다.
  • 프로세스가 I/O 요청 시 Device에서 응답 받을 때 까지 기다린다. = 대기 상태 = Blocking I/O
  • 요청한 프로세스의 실행상태가 유지됨 =  기다리지 않고 비동기적으로 한다. = Non Blocking I/O

 

 

Ready Queue (준비 상태 큐)

그림3 - 준비 상태 큐

  • OS에서 프로세스를 관리할 때 Queue를 사용한다. (Queue 관련 글은 여기를 참고)
  • 준비 상태의 프로세스(스레드)를 Queue에 가지고 있는다.
  • 디스패치(Dispatch) = 보내다, 발송하다 → 보낼 대상을 선정 후 꺼낸다.
  • Queue에 실행해야 할 프로세스(스레드)가 나열되어 있으며, OS는 앞부분부터 꺼낸다.
  • CPU Core의 개수만큼 한번에 꺼낸다. → 8개면, 한번에 8개 꺼낸다.
  • 디스패치하게 되면 자원이 할당되고 실행으로 이뤄진다.

 

 

 

 

 

 

 

 

 

 

 

참고

https://www.inflearn.com/course/%EA%B3%B0%EC%B1%85-%EC%89%BD%EA%B2%8C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C

 

https://youtu.be/x-Lp-h_pf9Q

반응형