004 CPU Bound Io Bound

강의 메모 - CPU Bound & I/O Bound #

개요 #

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

CPU 작업 #

img.png

I/O 작업 #

img_1.png

파일을 읽는 행위 등 CPU는 실제 데이터를 읽어들이는 일을 하진 않고, 이를 다른 디바이스에 맡긴다. CPU는 다시금 연산작업을 할 수 있는 쓰레드를 할당받고, CPU는 그 쓰레드에게 실제 연산작업을 시킨다. I/O 작업이 일어날 경우, CPU는 다른 쓰레드를 선택하는거고, 해당 I/O 작업을 하고있는 쓰레드는 I/O 작업이 끝날때까지 기다려야한다. CPU 작업은 계속해서 쓰레드가 running 상태인거고, I/O 를 만나면 할당을 다시 받을때까지 wait 해야한다.

  • 프로세스는 CPU 명령어를 수행하다가 I/O를 만나면 대기하고 I/O 작업이 완료되면 다시 CPU 작업을 수행한다.
  • 특정한 task가 완료될 때까지 이를 계속 반복한다.

Burst #

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

CPU Burst #

  • CPU를 연속적으로 사용하면서 명령어를 실행하는 구간을 의미한다.
  • 프로세스가 CPU 명령어를 실행하는데 소비하는 시간
  • 프로세스의 RUNNING 상태를 처리한다.

I/O Burst #

  • 연속적으로 I/O를 실행하는 구간으로 I/O 작업이 수행되는 동안 대기하는 구간
  • 프로세스가 I/O 요청 완료를 기다리는데 걸린 시간
  • 프로세스의 WAITING 상태를 처리한다.

CPU Bounded Process #

  • CPU Burst 작업이 많은 프로세스
  • I/O Burst가 거의 없는 경우에 해당한다.
  • 머신러닝, 블록체인, 동영상 편집 프로그램 등 CPU 연산 위주의 작업을 하는 경우를 의미한다.
  • 멀티 코어의 병렬성을 최대한 활용해서 처리 성능을 극대화 하도록 스레드를 운용한다.
    • 일반적으로 CPU 코어 수와 스레드 수의 비율을 비슷하게 설정한다.
    • ex) CPU 코어가 3개라면 쓰레드를 3개 만들어서 각각을 담당하도록 한다.

I/O Bounded Process #

  • I/O Burst가 빈번히 발생하는 프로세스로서 CPU Burst가 매우 잛다.
  • 파일, 키보드, DB, 네트워크 등 외부 연결이나 입출력 장치와의 통신 작업이 많은 경우에 해당한다.
  • CPU 코어가 많을수록 멀티 스레드의 동시성을 최대한 활용하여 CPU가 idle 상태가 되지 않도록 하고, 최적화된 스레드 수를 운용해서 CPU의 효율적인 사용을 극대화한다.
    • CPU 코어가 많을수록 쓰레드를 적절하게 관리해야 일을 하지 않는 CPU 를 감소시킬 수 있다.