2장.프로세스 관리(2)

    목차
728x90

1.스케줄링의 개요

스케줄링 개념

  • 스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.
  • 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.

컴퓨터 동작(예시: 명령어 실행 과정)

1. 명령어를 인출( 메모리로부터 명령어를 가져옴)

2. 명령어를 해독함

3. 데이터를 인출함

4. 실행시킨다.

스케줄링 과정


2. 스케줄링의 목적

스케줄링의 주 목적은 CPU나 자원을 효율적으로 사용하기 위한 정책이다.

  • 처리율증가: 단위 시간당 프로세스를 처리하는 비율을 증가시킨다.
  • 공정성: 모든 프로세스에 공정하게 할당한다.
  • CPU이용률 증가: 프로세스 실행과정에서 주기억장치를 엑세스 한다든지 입/출력 실행등의 원인에 의해 발생할 수 있는 CPU낭비시간을 줄이고, CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가 시킨다.
  • 우선순위 제도: 우선순위가 높은 프로세스를 먼저 실행한다. 
  • 오버헤드 최소화: 오버헤드를 최소화한다.
  • 응답시간 최소화: 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.
  • 반환시간 최소화: 프로세스를 제출한 시간부터 실행이 완료될때까지 걸리는 시간을 최소화한다.
  • 대기시간 최소화: 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.
  • 균형있는 자원의 사용: 메모리, 입/출력장치 등의 자원을 균형있게 사용한다.
  • 무한 연기 회피: 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.

여기서 빨강으로 표시한것은 뒤에 나올 처리방식에서 쓰이게 되니까 기억하자.


3.스케줄링의 기준

스케줄링의 기준

  • 입출력 위주의 프로세스인가?
  • 연산 위주의 프로세스인가?
  • 프로세스가 일괄 처리 형인가 대화형인가?
  • 긴급하게 응답이 요구되는가?
  • 프로세스의 우선순위
  • 프로세스가 페이지 부재(Page fault)를 얼마나 자주 발생시키는가?
  • 높은 우선순위를 지니는 프로세스에 의해서 얼마나 자주 프로세스가 선점(preempted) 되는가?
  • 프로세스가 받은 실행 시간은 얼마나 되는가?
  • 프로세스가 완전히 처리되는데 필요한 시간을 얼마나 더 요구되는가? 등이 있다.

4. 스케줄링의 분류 

프로세스 상태 변화와 실행 빈도에 따라서 스케줄링 분류

  • 장기 스케줄러: 스케줄링에 따라서 디스크에서 메모리로 작업 가져와 처리할 순서 결정과 메모리의 사용 가능 공간 확인.
    특징
    1.실행 빈도가 적어서 드물게 수행된다. 
    2.일괄처리 시스템은 한꺼번에 요청한 작업이 디스크에 존재하므로 장기 스케줄러가 작업을 처리할 순서를 결정
    3.작업(job) 스케줄링, 장기 스케줄링이라고도 하며 작업 스케줄러에 의해서 수행된다.
    4.어떤 작업에게 시스템의 자원들을 차지할 수 있도록 할 것인가를 결정하여서 준비상태 큐로 보내는 작업을 의미한다.
  • 중기 스케줄러: 시스템의 오버헤드에 따라서 연기할 프로세스를 잠정적으로 결정하여서 메모리에서 제거함으로써 디스크에다가 저장함
    특징
    1.
    실행 빈도가 중간으로 메모리 사용성을 높이고 작업 효율성 향상을 위함
    (시분할 시스템은 중기 스케줄러 사용)
    2.어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업을 의미한다.
  • 단기 스케줄러: 메모리에 적재된 프로세스 중에 프로세서를 할당하여서 실행 상태가 되도록 결정한다, 실행 빈도수가 많고 처리속도가 매우매우 빠르다.
    특징
    1.메모리에 적재된 프로세스 중 프로세서를 할당하여서 실행 상태가 되도록 결정하는 프로세스 스케줄링이다.
    2.어떤 준비완료 프로세스(ready process)에게 중앙처리장치(CPU)를 할당할 것인가를 결정한다.

    3.프로세서 스케줄링, 단기 스케줄링이라고도 한다.

    4.프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해서 수행된다.

5. 스케줄링의 문맥 교환과 디스패처

  • 문맥교환(Context Swiching)이란?
    하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것으로, 새로운 프로세스에다가 CPU를 할당하기 위해서 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후에 CPU를 할당함으로써 실행되도록 하는 작업이다, 프로세서(CPU) 스케줄러의 디스패처에 의해서 수행된다. 
  • 디스패처(Dispatcher)이란?
    - CPU 스케줄러 내부에 포함된 것으로 , 단기 스케줄러가 선택한 프로세스에 실질적으로 프로세서를 할당하는 역할을 한다.
    - 프로세스의 레지스터를 적재하고(문맥교환) 프로세스가 다시 시작할 때 사용자 프로그램이 올바른 위치를 찾을 수 있도록 한다.

6.스케줄링하기 위한 큐 종류

스케줄링 개념

  • 스케줄링은 프로세스가 생성되어서 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.
  • 프로세스가 생성되어서 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.
  • 스케줄링 하기 위한 큐(Queue)
    작업 큐(Job Queue), 준비 큐(Ready Queue), 장치 큐(Device Queue)

7. 스케줄링의 성능 기준

스케줄링의 목적 중 CPU이용률, 처리율, 반환시간, 대기 시간, 응답 시간 은 여러 종류의 스케줄링 성능을 비교하는 기준이 된다.

  • 처리율(Throughput) 증가 : 단위 시간당 프로세스를 처리하는 비율을 증가시킨다.
  • CPU이용률(CPU Utilization) 증가 : 프로세스 실행과정에서 주기억장치를 엑세스 한다든지 입/출력 실행등의 원인에 의해 발생할 수 있는 CPU낭비시간을 줄이고, CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가시킨다.
  • 응답시간(Response Time) 최소화 : 작업을 지시하고, 반응하기 시작하는 시간을 최소화시킨다.
  • 반환시간(Turn around time) 최소화 : 프로세스를 제출한 시간부터 실행이 완료될때까지 걸리는 시간을 최소화한다.
  • 대기시간(Waiting Time) 최소화: 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.

프로세스의 반환 시간과 대기 시간

프로세스 P1,P2,P3의 반환시간, 대기시간(프로세스 3개가 동시에 도착하여 P1,P2,P3 순으로 실행된다.)

 


8.프로세스 스케줄링의 기법

방법 , 환경별 분류

  • 선점/ 비선점(preemptive/nonpreemptive) 스케줄링
    - 비 선점스케줄링: 하나의 프로세스에 중앙처리장치가 할당되면 그 프로세스의 수행이 끝날 때까지 중앙처리장치는 그 프로세스로부터 빠져나올수 없다. 일괄 처리 방식에 적합하다. 
    - 선점스케줄링: 하나의 프로세스가 중앙처리장치를 차지하고 있을 때 다른 프로세스가 현재 수행 중인 프로세스를 중지 시키고 자신이 중앙처리장치를 차지할 수 있다. 시분할 시스템, 온라인 응용들에 적합한 방식이다.
  • 우선순위(priority) 스케줄링
    - 각 프로세스에게 우선순위를 부여하여 우선순위가 높은 순서대로 처리하는 방법
    - 정적 우선순위(static priority) 기법 : 상대적으로 오버헤드는 적으나, 주위 여건의 변화에 적응하지 않고 우선순위를 바꾸지 않는다.
    - 동적 우선순위(dynamic priority) 기법 : 필요에 따라 우선순위 재구성
  • 기한부(deadline) 스케줄링
    - 작업들이 명시된 시간이나 기한 내에 완료되도록 계획
    - 정적(static)스케줄링 방식, 동적(dynamic) 스케줄링 방식

스케줄링이 필요한 경우

1. Running -> Blocked => 비선점

2. Running -> Ready => 선점

3. Blocked -> Ready => 선점

4. Terminate => 비선점

비선점 : 자진해서 CPU를 반납하고 문맥교환

선점 : CPU를 빼앗기고 문맥교환 


비선점 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.

 

(1) FCFS(First Come First Service)

- 선입선출 , FIFO(First in First Out) 이다.

- FCFS는 준비 상태 큐에 도착한 순서에 따라서 차례로 CPU를 할당하는 기법으로 , 가장 간단한 알고리즘이다.

FCFS 처리방식
- 단점: 먼저 도착한 것이 먼저 처리되어 공평성은 유지되지만 짧은 작업이 긴 작업을 , 중요한 작업이 중요하지 않은 작업을 기다리게 한다.- 대기시간 : 프로세스의 대기한 시간으로, 바로 앞 프로세스까지의 진행시간을 구함- 반환시간 : 프로세스의 대기시간과 실행 시간의 합

 

(2) SJF(Shortest Job First)- 준비상태큐에서 기다리고 있는 프로세스들 중에서 실행시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다.- 가장 적은 평균 대기시간을 제공하는 최적의 알고리즘이다.- 단점 : 실행시간이 긴 프로세스는 실행시간이 짧은 프로세스에게 할당 순위가 밀려서 무한 연기 상태(기아) 가 발생할 수 있다.- 최소 작업 우선 스케줄링 알고리즘 : 새로운 프로세스가 들어오면 준비 큐에 들어오면 각 프로세스의 실행시간과 비교하여 위치를 결정한다. 준비 큐의 앞 부분에 있던 프로세스가 프로세서를 할당 받고 준비 큐에서 삭제된다.

 

(3) HRN (Highest Response-ratio Next)

SJF 알고리즘의 단점을 보완한 기법이다. => CPU실행시간이 짧은 작업에 대해 먼저 우선권을 주기 때문에 실행시간이 긴 프로세스는 대기 시간( Waiting Time)이 길어져서 불리한 SJF의 단점을 보완한 기법이다.

SJF 알고리즘고 마찬가지로 비선점 방식으로 수행한다.

 

- 우선 순위를 결정하여 우선 순위가 높은 프로세스를 처리하는 기법 => 우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순을 우선 순위가 부여된다.

- 각 작업에 대한 처리의 우선순위를 결정하는 방법 => CPU실행(서비스) 시간과 대기시간을 이용 => 해당 작업이 요구하는 CPU 실행 시간 이외에 대기하고 있는 시간까지도 고려하여 선정한다.

- 우선순위 계산식(시스템 응답시간)=> 시스템 응답시간 값이 클수록 우선순위가 높아진다.
대기시간+CPU실행(서비스)시간 / CPU실행(서비스)시간

 

(4)기한부(Deadline)

프로세스에게 일정한 시간을 줘서 그 시간 안에 프로세스를 완료하도록 하는 기법이다.

시스템은 프로세스에게 할당한 정확한 시간을 추정해야 하며, 이를 위해서 사용자는 시스템이 요구한 프로세스에 대해서 정확한 정보를 제공해야만 한다 => 정확한 정보를 미리 예측하기가 어렵다!

단점 : 여러 프로세스들이 동시에 실행되면 스케줄링이 복잡해지며, 프로세스 실행 시 집중적으로 요구되는 자원관리에 오버헤드가 발생하게 된다.

 

(5) 우선순위(Priority) 

준비상태 큐에서 기다리는 각 프로세스마다 우선순위(여러가지 요인으로 등급부여) 를 부여하여 그 중에 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법이다.

가장 낮은 순위를 부여받은 프로세스는 무한연기 또는 기아상태(Starvation)가 발생할 수 있다. => 무한연기 또는 기아상태(Starvation)을 해결할 수 있는 방법이 있다.
[Aging기법]

- 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우에는 , 한번 양보하거나 기다린 시간에 비례하여서 일정시간이 지나면 우선순위를 한 단계씩 높여서 가까운 시간안에 자원을 할당받도록 하는 비법이다. => 이 비법으로 SJF나 우선순위 기법에서 발생할 수 있는 무한 연기 상태, 기아상태를 예방할 수 있다.

 

기존에 있던 비선점 기법에 대한 스케줄링 기법을 사진으로 정리해보았다.

비선점 스케줄링 정리

728x90

'운영체제' 카테고리의 다른 글

3장. 기억장치 관리(1)  (0) 2023.04.26
2장. 프로세스 관리(3)  (0) 2023.04.26
2장. 프로세스 관리(1), (어셈블러,링커,로더)  (0) 2023.04.24
1장. 운영체제 개요  (0) 2023.04.24
0장. 컴퓨터시스템개요  (0) 2023.04.24