개발

CPU Bound & I/O Bound

Ridiss 2023. 12. 29. 12:46

프로세스는 CPU작업과 I/O 작업의 연속된 흐름으로 진행됨

 

CPU 작업 (CPU가 계속 작업함)

1. RAM에서 데이터를 LOAD

2. 가져온 데이터를 가공/연산해서 RAM에 ADD/STORE

 

I/O 작업 (CPU가 잠시 대기함)

1. CPU가 File을 읽음(정확히는 CPU가 읽어오는건 아님 별도의 Device가 처리)

2. I/O가 발생하면서 Waiting함

 

 

- 프로세스는 CPU 명령어를 수행하다가 I/O를 만나면 대기하고 I/O 작업이 완료되면 다시 CPU작업을 수행

- 특정한 Task가 완료될 때 까지 이를 계속 반복

 

Burst

- 한 작업을 짧은 시간동안 집중적으로 연속해서 처리하거나 실행하는 것

 

CPU Burst

- CPU를 연속적으로 사용하면서 명령어를 실행하는 구간

- 프로세스가 CPU 명령어를 실행하는데 소비하는 시간

- 프로세스의 Running 상태를 처리

 

I/O Burst

- 연속적으로 I/O를 실행하는 구간으로 I/O 작업이 수행되는 동안 대기하는 구간

- 프로세스가 I/O 요청 완료를 기다리는데 걸리는 시간

- 프로세스의 Waiting 상태를 처리

 

 

      LOAD/STORE        I/O            LOAD/STORE        I/O            LOAD/STORE        I/O            LOAD/STORE        I/O          

==================================================================================

       CPU Burst        I/O Burst          CPU Burst     I/O Burst        CPU Burst        I/O Burst        CPU Burst     I/O Burst

 

 

프로세스 마다 CPU Burst와 I/O Burst가 차지하는 비율은 균일하지 않음

이 비율을 기준으로 CPU Bound Process와 I/O Bound Process로 나눌 수 있음

 

CPU Bounded Process

- CPU Burst 작업이 많은 프로세스 I/O BUrst가 거의 없는 경우에 해당

- 동영상 편집, 머신러닝, 블록체인 등 CPU 연산 위주의 작업을 하는 경우에 해당

- 멀티 코어의 병렬성(Parallelism)을 최대한 활용해서 처리 성능을 극대화 하도록 스레드를 운용

- 일반적으로 CPU 코어수와 스레드 수의 비율을 비슷하게 설정

 

I/O Bounded Process

- I/O Burst가 빈번하게 발생하는 프로세스로서 CPU Burst가 매우 짦음

- 키보드, 파일, DB, 네트워크 등 외부 연결이나 입출력 장치와의 통신 작업이 많은 경우에 해당

- CPU 코어가 많을 경우 멀티 스레드의 동시성(Concurrent)을 최대한 활용하여 CPU가 Idle 상태가 되지 않도록 하고 최적화 된 스레드 수를 운영해서 CPU의 효율적인 사용을 극대화

'개발' 카테고리의 다른 글

사용자모드 & 커널모드  (0) 2023.12.31
Context Switch  (1) 2023.12.29
Concurrent & Parallelism (동시성, 병렬성)  (0) 2023.12.27
Process & Thread  (1) 2023.12.27
REST API에 Under_Score(_)? Hyphen(-)?  (0) 2023.05.18