CPU 스케줄링1

이연희·2022년 4월 27일
0

OS

목록 보기
3/10
post-custom-banner

CPU 스케줄링

💡 CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다. 스케줄링은 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다.

스케줄링 단계

CPU 스케줄러는 관리의 범주를 나누어 스케줄링을 한다. CPU 스케줄링은 규모에 따라 고수준 스케줄링, 중간 수준 스케줄링, 저수준 스케줄링으로 구분된다.

  1. 고수준 스케줄링(high level scheduling)
    시스템 내의 전체 작업 수를 조절하는 것을 말한다. 전체 시스템의 부하를 고려하여 작업을 시잘할지 말지 결정한다. 여기서 작업은 운영체제에서 다루는 일의 가장 큰 단위로, 1개 또는 여러 개의 프로세스로 이루어진다. 고수준 스케줄링은 메인프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용된다.

  2. 저수준 스케줄링(low level scheduling)
    가장 작은 단위의 스케줄링을 저수준 스케줄링이라 한다. CPU 스케줄러 입장에서 저수준 스케줄링은 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스에 대기 상태로 보낼지 등을 결정하는 일이다.

  3. 중간 수준 스케줄링(middle level scheduling)
    고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링이다. 중간 수준 스케줄링은 중지(suspend)와 활성화(active)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는다.

스케줄링 목적

CPU 스케줄링의 원래 목적은 모든 프로세스가 공평하게 작업하도록 하는 것이다. 즉 특정 프로세스가 시스템 자원을 독점하거나 파괴하는 것을 막기 위해 중요도에 따라 우선순위를 배정해야 한다.

  1. 공평성
    모든 프로세스가 자원을 공평하게 배정받아야 한다.
  2. 효율성
    시스템 자원이 유휴 시간 없이 사용되도록 스케줄링 하고, 유휴 자원을 사용하려는 프로세스에 우선권을 줘야 한다.
  3. 안전성
    우선순위를 설정하여 시스템 자원을 점유, 파괴하려는 프로세스로부터 자원을 보호해야 한다.
  4. 확장성
    프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 한다.
  5. 반응 시간 보장
    응답 없는 경우 사용자는 시스템이 멈춘 것으로 가정하기 때문에 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
  6. 무한 연기 방지
    특정 프로세스의 작업이 무한히 연기되어서는 안 된다.

스케줄링 고려 사항

🔹 선점형 스케줄링과 비선점형 스케줄링

🔻 선점형 스케줄링(preemptive scheduling)

어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식이다.

  • 장점: 프로세스가 CPU를 독점할 수 없어 대화형이나 시분할 시스템에 적합하다.
  • 단점: 문맥 교환의 오버헤드가 많다.
  • 사용: 시분할 방식 스케줄러에 사용된다.
  • 중요도: 높다.

🔻 비선점형 스케줄링(non-preemtive scheduling)

어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식이다.

  • 장점: CPU 스케줄러의 작업량이 많고 문맥 교환의 오버헤드가 적다.
  • 단점: 기다리는 프로세스가 많아 처리율이 떨어진다.
  • 사용: 일괄 작업 방식 스케줄러에 사용된다.
  • 중요도: 낮다.

🔹 프로세스 우선순위

  • 프로세스는 크게 커널 프로세스와 일반 프로세스로 나뉜다. CPU 스케줄러는 일반 프로세스보다 커널 프로세스의 우선순위를 높게 부여한다.
  • 일반 프로세스의 우선순위는 사용자가 조절할 수 있다.

🔹 CPU 집중 프로세스와 입출력 집중 프로세스

프로세스는 생성된 후 준비, 실행, 대기 상태를 거쳐 완료된다. 실제 작업이 일어나는 두 가지 상태는 다음과 같다. 프로세스는 CPU를 사용하여 작업을 하는 실행 상태, 입출력을 요청하여 완료되기 까지 기다리는 대기 상ㅌ에 있다.

  • CPU 집중 프로세스: 수학 연산과 같이 CPU를 많이 사용하는 프로세스를 말한다.
  • 입출력 집중 프로세스: 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스를 말한다.

💡 스케줄링을 할 때 입출력 집중 프로세스의 우선 순위를 CPU 집중 프로세스보다 높이면 시스템 효율이 향상된다. 입출력 집중 프로세스는 잠깐 CPU를 사용한 후 대기 상태로 이동하기 때문에 다른 프로세스가 CPU를 사용할 수 있다.

🔹 전면 프로세스와 후면 프로세스

  • 전면 프로세스: GUI를 사용하는 운영체제에서 화면의 맨 앞에 높인 프로세스이다. 현재 입력과 출력을 사용하는 프로세스이며, 사용자와 상호작용이 가능하여 상호작용 프로세스라고도 한다.
  • 후면 프로세스: 사용자와의 상호작용이 없는 프로세스이다. 압축 프로그램처럼 사용자의 입력 없이 작동하기 때문에 일괄 작업 프로세스라고도 한다.

💡 전면 프로세스는 사용자의 요구에 즉각 반응해야 하지만 후면 프로세스는 상호작용이 없다. 따라서 전면 프로세스의 우선순위가 후면 프로세스보다 높다. 그만큼 후면 프로세스는 전면 프로세스보다 CPU를 할당받을 활률이 적다.

정리

💡 작업의 중요도가 높은 프로세스는 커널 프로세스, 전면 프로세스, 대화형 프로세스, 입출력 집중 프로세스이다. 반대로 우선순위가 낮은 프로세스는 일반 프로세스, 후면 프로세스, 일괄 작업 프로세스, CPU 집중 프로세스이다.

profile
공부기록
post-custom-banner

0개의 댓글