본문 바로가기

알쓸지식

[OS] 프로세스 스케줄링 - (1) 프로세스와 그 스케줄링 방법

프로세스란?
   컴퓨터에서 연속적으로 실행되고 있는 프로그램
   종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.

 

* 프로세스의 상태

위 그림처럼 생성 , 준비 , 실행 , 대기 , 종료 5개의 상태가 존재한다.좀 더 자세히 설명하면

 

생성 : 프로세스가 생성되는 중

준비 : 프로세스가 CPU에 할당되어 스케줄러에 의해 실행되기 기다리는 상태

실행 : CPU에서 프로세스가 실행되는 상태

대기 : 프로세스가 이벤트가 발생하기를 기다리는 상태

종료 : 프로세스 실행 종료

 

이렇게 있다.

 

* 프로세스의 실행 - 대기 - 준비 과정

실행 상태에서는 한 개의 프로세스를 계속 하는 것이 아니다. 프로세스 실행 도중 특정 이벤트 (입출력, 파일읽기) 같은 외부장치에 대한 입출력을 요구했을 때 상태가 변경된다.

 이 작업은 느리기 때문에 CPU는 프로세스를 대기 상태로 변경된다.

대기 상태가 끝나는 시점은 입출력 이벤트가 완료되었을 때고 그 때 준비 상태로 변경, 다시 스케줄러에 의한 실행을 기다린다.

 

* 프로세스의 실행 - 준비 반복 과정

1ms ~ 10ms 마다 타이머 인터럽트가 발생하여 운영체제는 현재 실행중인 프로세스를 강제로 중지를 시킨 뒤 준비 상태로 빼놓는다.
그리고 준비 상태에 있는 다른 프로세스를 실행 시킨다. 이 과정은 매우 빠르게 상태 변화를 일으키며 반복되기 때문에 마치 여러개의 프로세스가 1개의 CPU를 가지고 동시에 실행되는 것처럼 보인다.

이를 통해 운영체제는 멀티태스킹과 멀티프로세싱을 달성하게 된다.

 


* PCB(프로세스 제어 블록)

PCB는 OS 내부의 프로세스를 관리하는 코드 부분에 저장되어 있다.

CPU는 여러 프로세스를 중간중간 바꿔서 실행하기 때문에 실행하다 만 프로세스의 정보를 어딘가에 저장해 놓고 있어야 다음에 실행할 때 이전에 실행한 부분부터 할 수 있다. 그 정보가 이 PCB에 저장된다.


Process Id : 프로세스의 고유 번호
Process State :  실행 상태
Program Counter(PC) : 프로그램 카운터, 다음 실행될 명령의 포인터
CPU registers :  CPU 레지스터
CPU scheduling information :CPU 스케줄링 정보 
Memory-management information : 할당된 자원 정보
Accounting information : CPU 사용시간 등 
I/O status information : 입출력 상태 정보

* CPU 스케줄링

CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업이다.

프로세스들에게 자원을 최대한 공평하게 배분하며 처리율과 CPU 이용률을 증가시키고, 오버헤드, 응답시간, 대기시간을 최소화하기 위한 기법이다.

이를 곧 프로세스 스케줄링으로 봐도 될 것이다.

 

  1. 선점형 스케줄링 (Preemptive)
    • 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
    • 단, 높은 우선순위를 가진 프로세스들이 계속 들어오면 오버헤드를 야기한다.

종류

라운드 로빈 다단계 큐 다단계 피드백 큐

 

   2. 비선점형 스케줄링 (Non-preemptive)

  • 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 PCU 점유가 불가능한 스케줄링 방식
  • 단, 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기해야할 수도 있다. 이를 콘베이 현상이라고 한다.

종류

우선순위 기한부 SJF HRN FIFO

 

 

 

 

 

 

 

글이 길어져 스케줄링 알고리즘 각각에 대한 설명은 다음에 적도록 하겠다.