About me
home
Portfolio
home
🎏

CPU bound, I/O bound

날짜
2023/07/19
태그
이론
운영체제

CPU 바운드 작업

CPU의 성능에 따라 작업의 완료 시간이 결정되는 일을 의미한다. 프로세스 또는 스레드가 CPU를 계속해서 사용해야 하며, CPU의 처리 속도가 빠를수록 작업의 완료 시간이 짧아진다. 일반적으로 계산이 많은 작업(ex 복잡한 수학적 알고리즘 계산, 그래픽을 처리 작업, 대량의 데이터를 처리하는 머신러닝 모델 학습 등)이 CPU Bound 작업에 해당한다.
CPU Bound 작업은 멀티프로세싱이 효과적이다. 멀티프로세싱은 여러 개의 프로세스를 동시에 실행시켜 각 작업을 동시에 처리할 수 있어 성능을 향상시킬 수 있다.

멀티 프로세싱(Multi-processing)

두 개 이상의 프로세서나 코어를 활용하여 여러 개의 프로세스를 동시에 처리하는 시스템이다. 각 프로세서나 코어는 독립적인 작업을 처리하므로, 실제로 병렬적인 작업 처리가 가능하다.

I/O 바운드 작업

I/O Bound 작업은 작업의 완료 시간이 주로 입출력(I/O) 연산에 의해 결정되는 일을 의미한다. 이런 작업은 대부분의 시간을 입출력 대기에 사용한다. 이때 CPU는 대부분의 시간을 아무것도 하지 않는 대기 상태에 머무르게 된다. 파일 읽기/쓰기, 네트워크 통신, 사용자 입력 처리 등이 I/O Bound 작업에 해당한다.
I/O Bound 작업에는 멀티스레딩이 적합하다. 멀티스레딩에서는 하나의 스레드가 I/O 작업을 기다리는 동안, 다른 스레드는 계산 작업을 수행할 수 있다. 이렇게 하면 CPU가 더 많이 활용되어 시스템의 전체적인 효율성이 향상된다.

멀티 스레딩(Multi-threading)

하나의 프로세스 내에서 여러 개의 스레드가 동작하는 방식이다. 각 스레드는 CPU를 공유하기 때문에, 실제로는 한 시점에 하나의 스레드만이 실행된다. CPU가 빠르게 스레드 간 전환을 수행함으로써, 마치 동시에 작업이 처리되는 것처럼 보이지만, 이는 실제로는 시분할로 인해 가능한 것이다. 이 방식은 메모리 공유가 필요한 상황에 유용하다.