ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CPU 스케줄러란 무엇인가
    CS지식/운영체제 2021. 6. 3. 22:19

    프로세스를 배우면서 프로세스는 생성, 준비, 실행, 대기와 같은 여러 상태를 가지며 작업이 이루어진다고 했다.

    (프로세스 개념: https://straw961030.tistory.com/71?category=925290 )

     

    프로세스(Process)란 무엇인가

    프로세스가 무엇인지 찾아보면 흔히 실행 중인 프로그램이라고 말한다. 이렇게 개념을 기억하고 넘어가기에는 부족하고 프로세스가 정확히 무엇인지 알고싶었다. 프로세스라는 단어가 나오게

    straw961030.tistory.com

     

    메모리에는 여러 프로세스가 존재할 수 있고 여러 프로세스의 상태를 관리해주는 역할을 하는 것이 필요하다.

    이러한 역할을 해주는 것이 CPU 스케줄러이다.

    CPU 스케줄러는 프로세스가 생성되고 종료될 때까지 모든 상태 변화를 관리하는 일을 한다.

    CPU 스케줄러가 하는 일인 스케줄링은 여러 프로세스의 상황을 고려하여 CPU와 리소스를 어떻게 줄 것인지 결정하는 일을 의미한다.

     

    CPU 스케줄러는 관리의 범주를 나누어 스케줄링을 진행하는데 규모에 따라 고수준 스케줄링, 중간수준 스케줄링, 저수준 스케줄링으로 나뉜다.

    1) 고수준 스케줄링 (high level scheduling)

    (= 장기 스케줄링, 작업 스케줄링)

    고수준 스케줄링은 시스템 내의 전체 작업 수를 조절하는 것을 말하며 어떤 작업을 시스템이 받아들이지 말지를 결정한다.

    (작업은 운영체제에서 다루는 일의 가장 큰 단위로 1개 또는 여러 개의 프로스세로 이루어짐.)

    고수준 스케줄링에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총개수가 결정되는데 이를 멀티프로그래밍 정도(degree of multiprogramming)이라고 한다.

     

    2) 저수준 스케줄링 (low level scheduling)

    (= 단기 스케줄링)

    저수준 스케줄링은 어떤 프로세스에게 CPU를 할당할지 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 일이다.

    예를 들어 준비 상태에 있는 프로세스들 중 하나를 선택해 실행 상태로 변경하고 실행 상태에 있는 프로세스를 대기 상태로 변경하는 일을 말한다.

     

    3) 중간수준 스케줄링 (middle level scheduling)

    중간수준 스케줄링은 프로세스가 활성화 된 후 여러 사유로 시스템에 과부하가 걸릴 수 있는데 suspend와 active로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하는 막는 일을 한다.

    시스템에 과부하가 결렸다면 활성화된 프로세스 중 일부를 보류 상태로 보내고 시스템이 여유가 있다면 보류된 프로세스를 활성화 상태로 바꾼다.

     

     

    CPU 스케줄러가 하는 스케줄링이 무엇인지 알겠는데 왜 존재해야할까?

    스케줄링의 본 목적은 모든 프로세스가 공평하게 작업이 이루어지도록 하는 것이다.

    즉, 특정 프로세스가 자원을 독점하는 것을 막기 위해 중요도에 따라 우선순위를 정하여 자원을 주어야한다.

    그리고 자원을 효율적으로 배분하여 전체적인 시스템의 성능도 높여야하고 프로세스가 증가해도 시스템이 안정적으로 동작하도록 조치해야한다.

    이러한 프로세스의 공평성, 효율성, 확장성 등을 지켜주기 위해 스케줄링이 존재하는 것이다.

     

    스케줄링은 선점형 스케줄링과 비선점형 스케줄링으로 나뉠 수 있는데

    선점형 스케줄링은 어떤 프로세스가 CPU를 점유 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 방식이다.

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

    선점형 스케줄링은 문맥 교환(context switch)같은 추가작업이 필요해 낭비가 생기는 단점이 존재하지만 빠른 응답 시간을 요구하는 시스템에 적합하다.

    비선점 스케줄링은 선점형 스케줄링에 비해 스케줄러의 작업량과 낭비가 적지만 CPU 사용시간이 긴 프로세스가 CPU를 선점하고 있다면 이 프로세스 때문에 CPU 사용시간이 짧은 여러 개의 프로세스가 오랫동안 기다리게 되어 전체적인 시스템 처리율이 떨어진다.

    댓글

Designed by Tistory.