• CPU : 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터내의 중앙처리장치.
  • CPU는 일반적으로 시스템 내에 하나밖에 없으므로, 여러 프로그램이 동시에 수행되는 사용자 환경에서는 매우 효율적으로 관리되어야 하는 자원이다.

기계어 명령

  • 기계어 명령은 크게 CPU 내에서 수행되는 명령, 메모리의 접근을 필요로 하는 명령, 입출력을 동반하는 명령으로 나누어 볼 수 있다.
    1)CPU 내에서 수행되는 명령
    예로 Add 명령이 있다. Add 명령은 CPU 내의 레지스터에 있는 두개의 값을 더해, 레지스터에 저장하는 방법이다. 이러한 명령은 CPU 내에서만 수행되므로, 수행속도가 매우 빠르다.
    2) 메모리 접근을 수행하는 명령
    LoadStroe 명령이 있다.
    Load: 메모리에 있는 데이터를 CPU로 읽어들이는 명령
    Store : CPU에서 수행된 연산결과값을 메모리에 저장하는 명령
    메모리에 접근하는 명령은 비록 CPU내에서 수행되는 명령보다는 시간이 오래걸리지만, 비교적 짧은 시간에 수행되는 명령에 해당된다.
    3) 입출력을 동반하는 명령
    입출력 작업은 키보드로부터 입력을 받는다던지, 처리된 결과를 화면에 출력한다던지, 디스크에서 파일 데이터를 읽어오는 작업 등에 해당된다.
    이와 같은 입출력을 수반하는 명령은 CPU나 메모리 접근 명령에 비해 상당히 오랜 시간이 걸린다.
    또한, 모든 입출력 명령은 특권명령으로 규정되어 있어 사용자 프로그램이 직접 수행할 수 없고, 운영체제를 통해서만 서비스된다.

  • 사용자 프로그램이 작동되는 과정을 지켜보면, CPU 작업과 I/O작업의 반복으로 구성된다.
    프로그램이 수행된다는 것은 두 단계의 조합으로 나누어 볼 수 있다.
    첫번째로는 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 것이고, -> CPU 버스트(burst)
    두번째로는 I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계이다. -> I/O 버스트(burst)
  • 프로그램이 I/O를 한번 수행한 후 다음번 I/O를 수행하기까지 직접 CPU를 가지고 명령을 수행하는 일련의 작업을 CPU 버스트라고 부른다.
    I/O 버스트는 I/O 작업이 요청된 후 완료되어 다시 CPU 버스트로 돌아가기까지의 일련의 작업을 의미한다.
  • 각 프로그램마다 CPU 버스트와 I/O 버스트가 차지하는 비율이 균일하지는 않다.
    이와 같은 기준에서 프로세스를 크게 I/O 바운드 프로세스(I/O bound process)CPU 바운드 프로세스(CPU bound process)로 나누어 볼 수 있다.
    • I/O 바운드 프로세스 : I/O 요청이 빈번해 CPU 버스트가 짧게 난타나는 프로새세스
    • CPU 바운드 프로세스 : I/O 작업을 거의 수행하지 않아 CPU 바스트가 길게 나타나는 프로세스
  • I/O 바운드 프로세스는 주로 사용자로부터 인터액션을 계속 받아가며 프로그램을 수행하는 대화형 프로그램(interactive program)이 이에 해당하고, CPU 바운드 프로세스는 프로세스 수행의 상당시간을 입출력 작업없이 CPU 작업에 소모하는 계산 위주의 프로그램이 해당된다.
  • CPU 스케줄링 이란 이와 같이 CPU를 사용하는 패턴이 상이한 여러 프로그램이 동일한 시스템 내부에서 함께 실행되기 떄문에 필요한 것이다.

CPU 스케줄러

  • 준비상태에 있는 프로세스들 중에서 어떠한 프로세스에게 CPU를 할당할지를 결정하는 운영체제의 코드.
  • CPU 스케줄링이 발생하는 상황
    • 실행상태에 있는 프로세스가 I/O 요청등에 이해 봉쇄(blocked) 상태로 바뀌는 경우. (비선점)
    • 실행상태에 있던 프로세스가 타이머 인터럽트 발생에 의해 준비상태로 바뀌는 경우. (선점)
    • I/O 요청으로 봉쇄 상태에 있던 프로세스의 I/O 작업이 완료되어 인터럽트가 발생하고, 그 결과 이 프로세스의 상태가 준비상태로 바뀌는 경우(선점)
    • CPU에서 실행상태에 있는 프로세스가 종료되는 경우(비선점)
  • CPU 스케줄링 방식에는 선점형 방식비선점형 방식이 있다.
    선점형 방식은 프로세스가 CPU를 계속 사용하길 원해도, 강제로 빼앗을 수 있는 스케줄링 기법을 말하며,
    비선점형 방식은 CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방법을 말한다.

디스패치 (Dispatcher)

  • 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수 있도록 환경을 설정하는 커널모듈을 디스패처(dispatcher)라고 한다.
  • 디스패처는 현재 수행중이던 프로세스의 문맥(context)을 그 프로세스의 PCB에 저장하고, 새롭게 선택된 프로세스의 문맥을 PCB로부터 복원한 후, 그 프로세스에게 CPU를 넘기는 과정을 수행한다.
  • 디스패처가 하나의프로세스를 정지시키고, 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간을 디스패치 지연 시간(dispatch latency)라고 한다.
    디스패치 지연시간의 대부분은 문맥 교환 오버헤드에 해당한다.
     
     

출저