[운영체제] CPU burst vs I/O burst
01. CPU burst와 I/O burst란?
기본적으로 ‘프로세스’는 CPU burst와 I/O burst가 왔다 갔다 서로 바뀌면서 프로그램을 실행하게 됩니다.
- CPU burst : CPU 명령을 실행하는 것
- I/O burst : I/O 작업을 요청한 뒤 기다리는 시간을 말합니다.
즉 프로세스는 명령어를 수행하다가(CPU burst)
I/O를 기다렸다가 (I/O burst)
해결이 되면 다시 남은 명령어를 돌렸다가(CPU burst)…
이를 반복하게 됩니다.
예를 들어, 어떤 프로세스의 CPU burst time이 10초라고 하면
이 프로세스의 어떤 특정 작업이 완료되기 위해서는 CPU가 10초동안 이 프로세스를 작업해줘야 한다는 뜻이죠.
그 다음 I/O burst가 왔다는 것은, 10초동안 작업을 한 후에 어떤 I/O 작업이 수행되어야 다음 CPU 작업을 할 수 있다는 것을 뜻합니다.
프로세스는 크게 두 종류로 나눌 수 있습니다.
- CPU bound Process : CPU burst가 큰 프로세스 (적고 긴 CPU burst)
- I/O bound Process : I/O burst가 큰 프로세스 (짧고 많은 CPU burst)
사용자와 대화형으로 동작하는 프로세스는 거의 다 I/O process입니다.
01-1. CPU bound Process
사용자가 ‘수행되는 것’에 관여하지 않는 프로세스입니다.
예시를 들자면, 파일을 압축하거나 압축을 푸는 프로그램이 그나마 CPU bound에 가깝습니다.
(사실 해당 작업도 디스크에다 쓰고, 디스크에서 파일을 불러오고 하는 작업이 포함되는 경우가 많아 단순한 비유라고 생각해주세요.)
또는 CPU가 수헹해야 하는 과학적(수학적) 계산이 많이 필요한 프로그램을 CPU bound라 할 수 있어요.
01-2. CPU burst time
→ 표를 보면 시간이 굉장히 짧습니다. 많은 프로세스의 대부분이 I/O bound process라는 의미겠죠.
→ 보통 지수적인 특성을 가지며, 많은 짧은 CPU burst와 적고 긴 CPU burst를 가집니다.
이처럼 여러 종류의 process들이 섞여서 실행되기 때문에, CPU Scheduling이 꼭 필요합니다.
댓글남기기