코딩하는 둥둥

[ 쉽게 배우는 운영체제 ] 4-2. 스케줄링 시 고려 사항 본문

Computer Science/쉽게 배우는 운영체제

[ 쉽게 배우는 운영체제 ] 4-2. 스케줄링 시 고려 사항

둥둥 2022. 7. 22. 16:42
728x90

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

선점형 스케줄링 preemptive scheduling

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

대표적으로 인터럽트가 있다. CPU가 인터럽트를 받으면 현재 실행 중인 작업을 중단하고 커널을 깨워서 인터럽트를 처리시키며, 인터럽트 처리가 완료되면 원래의 작업으로 돌아간다.

 

문맥 교환 같은 부가적인 작업으로 인해 낭비가 생기는 것이 단점이다. 그러나 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합하다. 대부분의 저수준 스케줄러는 선점형 스케줄링 방식을 사용한다.

 

비선점형 스케줄링 non-preemptive scheduling

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

선점형 스케줄링보다 스케줄러의 작업량이 적고 문맥 교환에 의한 낭비도 적지만, CPU 사용시간이 긴 프로세스 때문에 사용시간이 짧은 여러 프로세스가 오랫동안 기다리게 되어 전체 시스템의 처리율이 떨어진다. 과거의 일괄 작업 시스템에서 사용하던 방식이다.

 

구분 선점형 비선점형
작업 방식 실행 상태에 있는 작업을 중단시키고 새로운 작업을 실행할 수 있다.  실행 상테에 있는 작업이 완료될때까지 다른 작업이 불가능하다.
장점 프로세스가 CPU를 독점할 수 없어 대화형이나 시분할 시스템에 적합하다. CPU 스케줄러의 작업량이 적고 문맥 교환의 오버헤드가 적다.
단점 문맥 교환의 오버헤드가 많다. 기다리는 프로세스가 많아 처리율이 떨어진다. 
사용 시분할 방식 스케줄러에 사용된다. 일괄 작업 방식 스케줄러에 사용된다.
중요도 높다. 낮다.

프로세스 우선순위

프로세스의 우선순위가 없다는것은 모든 프로세스의 중요도가 같다는 의미인데 이 경우 보통 도착한 순서대로 자리를 배정받는다.

대부분의 CPU 스케줄러는 우선순위를 사용한다. 우선순위가 있다는 것은 프로세스의 중요도가 다르다는 의미이다.

프로세스는 크게 커널 프로세스와 일반 프로세스로 나뉘는데 CPU 스케줄러는 각 프로세스에 우선순위를 부여하고 커널 프로세스의 우선순위가 일반 프로세스보다 높다.

 

우선순위가 높다는것은 더 빨리 자주 실행된다는 의미이다. 또한, 같은 커널 프로세스라 하더라도 더 중요한 커널 프로세스는 우선순위가 높고, 덜 중요한 프로세스는 우선순위가 낮다. 일반 프로세스 또한 중요도가 각각 다르기 때문에 우선순위가 각각 다르다.

단, 일반프로세스의 우선순위는 사용자가 조절할 수 있다. 유닉스 운영체제에서는 nice명령어를 사용하여 조절한다. 단 관리자에서만 우선순위를 높일 수 있고 일반계정은 우선순위를 낮추는 것만 가능하다. 우선순위를 조절할 때는 해당 프로세스뿐만 아니라 다른 프로세스의 실행 속도에도 영향을 미친다. 사용자가 일부러 프로세스의 우선순위를 낮춰야 하는 경우도 있다. 

 

결론적으로 시스템에서는 다양한 우선순위의 프로세스가 공존하며, 우선순위가 높은 프로세스가 CPU를 더 먼저, 더 오래 차지하게 된다.


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

프로세스는 생성된 후 준비, 실행, 대기 상태를 거쳐 완료되며, 준비 상태는 CPU를 할당받기 위해 기다리는 상태이므로 실제 작업이 일어나는 것은 실행과 대기상태이다. 이때 CPU를 할당받아 실행하는 작업을 CPU 버스트, 입출력 작업을 입출력 Bust라고 부른다.

프로세스는 위에서 언급한 작업형태에 따라 CPU 집중 프로세스와 입출력 집중 프로세스로 나눌 수 있다.

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

CPU 집중 프로세스와 입출력 집중 프로세스가 같이 있을때는 입출력 집중 프로세스를 먼저 실행 상태로 옮기는 것이 효율적이다.

입출력 집중 프로세스가 실행상태로 가면 입출력 요구에 의해 대기상태로 옮겨 지기 때문에 다른 프로세스가 CPU를 사용할 수 있다. 만약 CPU 집중 프로세스가 먼저 실행 상태로 들어가면 자신의 타임 슬라이스를 다 쓸 때까지 다른 프로세스가 실행되지 못할 것이다.

스케줄링을 할 때 입출력 집중 프로세스의 우선순위를 CPU 집중 프로세스보다 높이면 시스템 효율이 향상된다. 입출력 집중 프로세스가 CPU 집중 프로세스보다 실행 상태에 먼저 들어가는 경우를 사이클 훔치기 cycle stealing이라고 한다.


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

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

 


 

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

반대로 우선순위가 낮은 프로세스는 일반 프로세스, 후면 프로세스, 일괄 작업 프로세스, CPU 집중 프로세스이다.

 

커널 프로세스와 일반 프로세스, 전면 프로세스와 후면 프로세스의 경우 프로세스를 분명하게 구분할 수 있기때무에 프로세스의 우선순위를 배정기준으로 사용한다.

그러나 프로세스에 따라서 대화형 프로세스인지 일괄 작업 프로세스인 지 또는 입출력 집중 프로세스인지 CPU 집중 프로세스인지 명확하게 구분할 수 없는 경우도 있다. 따라서 대화형 프로세스와 일괄 적업 프로세스, 입출력 집중 프로세스와 CPU 집중 프로세스는 우선순위를 고려하기 어려울 수 도 있다. 

728x90