Forensic/운영체제 OS

Part 2 ) 도대체 Process가 뭘까? (feat. Thread)

y3nny 2022. 10. 11. 13:21

단일 프로세스 시스템

 

한번에 하나의 프로그램만 실행

또 다른 프로그램을 실행하려면, 실행중이던 프로그램을 종료 후 실행해야함

CPU 사용률이 좋지 않음

I/O 작업을 하는동안, CPU는 아무것도 안하고 놀고 있음 ^^;

그래서 이 CPU를 놀지않게 하려면, 

여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시키면, (=> 멀티 프로그램)

예를 들어, 프로그램 1이 I/O작업이 발생하면, 프로그램 2가 CPU에서 실행됨

 


멀티 프로그래밍

여러개의 프로그램이 동시에 실행

 

CPU 사용률을 극대화 시킴

CPU 사용시간이 길어지만 다른 프로세스는 계속 대기해야됨

 

프로세스는 한번 CPU를 사용할 때, 아주 짧은 시간 (= quantum)만 CPU에서 실행되도록 함. (=> 멀티태스킹)

CPU 실행 시간에 맞춰 쪼개고, 번갈아가면서 프로세스1,2를 실행함 

 


멀티태스킹

프로세스의 응답 시간을 최소화 시키는데 목적

아주 짧은 타임안에서 여러 프로세스들이 교대로 즉각적인 응답을 보여줌

 

하나의 프로세스가 동시에 여러 작업을 수행하지 못함

 

프로세스의 Context Switching 은 무거운 작업

Context Switching : CPU에서 실행되기 위해서 실행 중이던 프로세스 A를 중단하고, 다른 프로세스 B의 정보 바탕으로 프로세스 B를 실행

 

프로세스끼리 데이터 공유가 까다로움

프로세스당 독립적인 메모리를 가지기 때문에 여러개의 프로그램을 실행시킨다고하면, 메모리를 각각 차지하기때문에 데이터 공유가 까다로움

 


스레드

 

프로세스는 한 개 이상의 스레드를 가질 수 있음

CPU에서 실행되는 단위 (Unit of execution)

같은 프로세스의 스레드들끼리 컨텍스트 스위칭이 가벼움

스레들은 자신들이 속한 프로세스의 메모리 영역을 공유 

하지만, 스레드들만의 고유 영역이 있다. 

 


멀티 스레딩

하나의 프로세스가 동시에 여러 작업을 실행

 


멀티태스킹 개념이 확장됨

여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time 을 나눠 갖음

 

멀티프로세싱

두개 이상 의 프로세서나 코어를 활용하는 시스템

 


 

싱글 코어 CPU에 싱글-스레드 프로세스  2개 

CPU Process A
Process B

# 프로세스 2개가 하나의 CPU를 나눠 씀 (Process A -> CPU <- Process B) => 멀티태스킹 O

# 싱글 스레드 => 멀티 스레딩 X

# CPU가 1개  => 멀티 프로세싱 X


듀얼 코어 CPU에 싱글-스레드 프로세스  1개 

CPU Core A Process A
CPU Core B Process B

 

# 코어가 2개 (Core A, Core B) => 멀티 태스킹 X

# 싱글 스레드이 두개이기 때문에 => 멀티 스레딩 X

# CPU가 2개 => 멀티 프로세싱 O


듀얼 코드 CPU에 듀얼-스레드 프로세스 1개

CPU Core A Thread A (Process A)
CPU Core B Thread B (Process A)

# 코어 : 스레드 (Core A : Thread A | Core B : Thread B) => 멀티 태스킹 X

# 듀얼 스레드 (하나의 프로세스에 두개의 스레드가 있기 때문) => 멀티 스레딩 O

# CPU가 2 => 멀티 프로세싱 O


듀얼 코드 CPU에 듀얼-스레드 프로세스 2개

CPU Core A Thread A (Process A)
Thread B (Process A)
CPU Core B Thread A (Process B)
Thread B (Process B)

# 코어 : 스레드

(Core A : Thread A,B | Core B : Thread A,B) - 코어가 다 경합하고 있음 => 멀티 태스킹 O

# 코어 : 스레드

(Core A : Thread A (Process A), Thread B (Process B) | Core B : Thread B (Process A), Thread B (Prcoess B)

- 코어를 교차로 경합하고 있음 = > 멀티 태스킹 O

# 듀얼 스레드 = > 멀티 스레딩 O

# CPU 2개 => 멀티 프로세싱 O

 

 

 

Reference