아무나개발하자

CPU bound, IO bound 본문

OS

CPU bound, IO bound

개발천재나천재 2023. 1. 13. 10:06

개념 정리

CPU : 프로세스의 명령어를 해석하고 실행하는 장치

IO : 파일을 읽고 쓰거나 네트워크 어딘가와 데이터를 주고 받는것, 입출력 장치와 데이터를 주고 받는것

Burst : 어떤 현상이 짧은 시간안에 집중적으로 일어나는 일

CPU Burst : 프로세스가 CPU에서 한번에 연속적으로 실행되는 시간

IO Burst : 프로세스가 IO작업을 요청하고 결과를 기다리는 시간

 

프로세스의 인생은 CPU Burst와 IO Burst의 연속이다.

여기서 일반적으로 연산이 많이 필요한 로직은 CPU bound, 로컬 파일 시스템 혹은 네트워크 통신이 많은 로직은 I/O bound라고 한다.

 

 

CPU bound 프로세스

- CPU 버스트가 많은 프로세스 동영상 편집 프로그램, 머신러닝 프로그램

 

IO bound 프로세스

- (일반적인) 백엔드 API 서버

 

 

퀴즈1

Goetz의 추천으로 CPU bound 프로그램에서 적절한 스레드 수는 number of CPU + 1이 적당하다고 한다. 이유는 앞서서 배운 스레드를 여러가 만들게되면 컨텍스트 스위칭이라는 CPU를 낭비하는 비용이 들기때문에, 위에와 같은 결론이 나온다고 한다.

 

컨텍스트 스위칭 : CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스의 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업을 Context Switch(문맥 교환)이라 한다.  이때 CPU는 놀게된다...

 

 

퀴즈2

백엔드 개발자는 여러 상황을 고려하여 적절한 스레드수를 찾아야된다.

 

출처 : https://www.youtube.com/watch?v=qnVKEwjG_gM&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=3

'OS' 카테고리의 다른 글

동기화(synchronization)  (0) 2023.01.14
Context Switching  (0) 2023.01.12
스레드 정리  (0) 2023.01.03
운영체제 정리 1탄  (0) 2023.01.02