
- 프로그램이 실행이 되면 어떤 프로그램이든간에 위와 같은 과정이 진행된다.
- load store, add store ... → CPU에서 실행하는 기계어들
- 그 다음 줄 read from file과 같은 I/O 작업이 들어오면 CPU를 놓고 I/O 작업을 한다.
- 그러다가 I/O 작업이 끝나면 다시 ready queue로 돌아오고.
- 위 과정을 반복한다 (CPU burst, I/O burst 반복)
- 사용자와의 interactive하게 작동하는 프로그램의 경우에는 I/O가 중간에 많이 끼어들 것이다.
- 반면 유전자 염기서열을 분석한다고하면 중간에 사람의 interaction이 끼어들 일이 거의 없을 것이고, 따라서 CPU burst로만 이루어질 것이다 → 프로그램마다 패턴이 다르다.

- 사용자 프로그램을 분석한 결과인데 CPU를 짧게 쓰고 중간에 I/O가 끼어드는 프로그램이 많았다.
- 이렇게 I/O가 자주 끼어드는 프로그램들을 I/O bound job이라 부르고, 그렇지 않은 프로그램을 CPU bound job이라 부른다.
- 아래 나와있듯이 여러 종류의 프로세스가 섞여있기 때문에 CPU 스케줄링이 필요하다는 말씀이다.
- 사실 CPU bound job은 스케줄링에 크게 문제되지 않는데, interactive가 잦은 I/O bound job이 스케줄링 기법을 정하는 데에 많은 영향을 미친다 → 사람과 interaction이 많은 job에게 CPU를 잘 가져가야 한다 → 그래야 사용자 경험이 나쁘지 않을것이다.
- 그래서 어떤 프로세스에게 CPU를 줄 것인가, 얼마만큼의 시간동안 줄 것인가 이런 문제들에 대해 깊게 생각하며 전략을 짜야한다.

- 위에서 말한 것
- I/O bound process는 CPU burst가 짧으면서 잦고, CPU-bound process는 CPU burst가 길고 잦지 않다고 함(대체로 그렇다).