컴퓨터에서 프로세스는 어떤 작업을 수행할 때 CPU 실행(계산 수행)과 입출력 대기(외부 장치와의 통신)를 반복하게 됩니다. 예를 들어, 파일을 읽어오는 작업을 하거나 네트워크를 통해 데이터를 받아오는 경우가 입출력 대기 상태에 해당합니다.
• CPU 실행(CPU 버스트): 프로세스가 CPU를 사용하여 계산 작업을 하는 시간입니다. 예를 들어, 어떤 수식을 계산하거나 코드를 실행하는 순간을 말합니다.
• 입출력 대기(I/O 버스트): 프로세스가 CPU 대신 하드 드라이브, 네트워크 등 외부 장치와의 통신을 기다리는 시간입니다.
이 두 가지 상태가 반복되면서, 프로세스는 작업을 마치게 됩니다.
프로세스는 CPU 버스트로 시작하여 일정 시간 동안 연산 작업을 수행한 후, 입출력 버스트로 전환되어 데이터를 기다립니다. 그 후 다시 CPU 버스트가 발생해 연산을 하고, 입출력 대기를 반복합니다. 마지막으로 프로세스는 모든 작업을 마치고 종료됩니다.
CPU 버스트의 지속 시간은 보통 짧은 경우가 많고, 아주 긴 경우는 드물게 나타납니다. 이를 설명할 때 지수형(Exponential) 또는 초지수형(Hyperexponential) 곡선 분포를 사용합니다. 이는 주로 짧은 CPU 실행이 많고, 가끔씩 긴 CPU 실행이 발생한다는 의미입니다.
이런 패턴이 나타나는 이유는 대부분의 작업이 복잡한 계산보다는 비교적 간단한 연산을 반복 수행하는 경우가 많기 때문입니다. 예를 들어, 프로그램이 사용자 입력을 기다리거나, 주기적으로 짧은 계산을 수행할 때 이런 분포가 나타납니다.
CPU 버스트의 분포가 이런 특징을 갖기 때문에, CPU 스케줄링 알고리즘을 설계할 때는 짧은 CPU 실행이 많은 것을 고려해야 합니다. 즉, 짧은 작업을 빠르게 처리할 수 있는 스케줄링 방법을 사용하는 것이 효율적입니다. 예를 들어, 짧은 작업을 우선적으로 처리하는 알고리즘을 사용하면 대기 시간이 줄어들어 시스템 효율이 높아집니다.
요약:
프로세스 실행은 CPU 버스트와 입출력 대기 상태의 반복으로 이루어집니다. CPU 버스트는 대부분 짧은 시간이지만 가끔 긴 경우도 있으며, 이러한 특성을 고려하여 CPU 스케줄링 방법을 선택하는 것이 중요합니다.