스케쥴링

  • CPU는 가장 중요한 시스템 자원이며 모든 프로세스는 CPU를 놓고 경쟁하게 된다.

  • 실행할 프로세스가 있을 때 CPU를 할당하여 해당 프로세스를 실행시키는 것을 스케줄링이라고 한다.

  • OS가 CPU를 사용하려고하는 프로세스들 사이의 우선순위를 관리하는 작업이다
    • 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것이라고 할 수 있다
  • 이는 프로세스들에 자원을 최대한 공평하게 배분하며 처리율과 CPU 이용률을 증가시켜 오버헤드, 응답시간, 대기시간을 최소화하기 위한 기법이다.

스케줄러 관리

  • 리눅스에서는 시스템의 스케줄러를 관리하고자 ronsystemd 데몬 등의 도구를 사용한다.

    • cron : 주기적으로 반복되는 작업을 스케줄링하기 위해 사용되는 리눅스 시스템 데몬이다. 사용자가 cron을 사용하여 일정 시간마다 실행될 작업을 등록할 수 있고 이는 지정된 시간에 실행된다. 설정 파일은 /etc/crontab이고 사용자 단위로 설정한 cron 작업은 crontab 파일에 저장된다.
      • 데몬 : 백그라운드에서 실행되는 프로그램 및 서비스를 가리키는 말, 서버나 시스템 관리를 위해 실행되며 사용자가 직접 조작 및 제어하지 않아도 작동
    • systemmd : systemmd는 리눅스 시스템의 초기화 및 프로세스 관리를 담당하는 데몬이다. 스케줄링 데몬으로 주기적으로 실행되어야 하는 작업을 스케줄링하게 된다. 설정 파일은 /etc/systemd/system 디렉토리에 저장되며, 사용자가 작성한 서비스 파일은 /etc/systemd/user 디렉토리에 저장된다.

스케줄링 단계

1. 작업스케줄링

  • 이 단계는 실제 시스템 자원을 사용할 작업을 선택하는 단계이다. 프로세스화할 작업과 시스템으로 들어갈 작업을 결정하므로 승인 스케줄링이라고도 한다. 수행빈도가 적어 장기 스케줄링이라고도 한다.

2. 작업 승인과 프로세서 결정 스케줄링

  • 이 단계는 프로세서를 사용할 프로세스를 결정하는 작업 승인을 해주는 역할을 한다. 시스템의 오버헤드가 심하면 연기할 프로세스를 결정한다. 수행빈도가 1단계와 3단계 사이기 때문에 중기 스케줄링이라고도 한다.
    • 오버헤드 : 어떤 작업을 수행하기 위해 필요량보다 더 많은 자원을 사용하는 것

3. 프로세서 할당 스케줄링

  • 이 단계 dispatcherReady Queue에 있는 프로세스 중, 우선순위에 따라 프로세스를 프로세서에 할당해주는 스케줄링이다. 다음 프로세스를 결정해야 하므로 단기 스케줄링이라고도 불린다.
    • dispatcher : 운영체제에서 프로세스를 실행하는 데 필요한 작업을 수행하는 컴퓨터 소프트웨어로 주요 역할 중 하나는 준비 큐에서 대기 중인 프로세스 중 하나를 선택하여 CPU를 할당하는 것
    • Ready Queue : 프로세스가 대기하는 큐를 의미하며 CPU를 할당받기 위해 디스패처에 의해 선택하며 우선순위가 가장 높은 프로세스를 선택하게 된다
서브목차