[운영체제]프로세스 스케줄러(장기,단기,중기)/스케줄링 알고리즘

seeun·2022년 1월 21일
0

📌스케줄러 (장기, 단기, 중기)

1.장기 스케줄러(long term scheduler)

어떤 프로세스를 준비 큐에 넣을 것인가?

디스크에서 하나의 프로그램을 가져와 커널에 등록하면 프로세스가 되는데 이때 디스크에서 어떤 프로그램을 가져와 커널에 등록할지(준비큐에 등록할지) 결정한다.

  • 메모리와 디스크 사이의 스케줄링을 담당.
  • 프로세스에 memory(및 각종 리소스)를 할당
  • 실행중인 프로세스의 수 제어 제어
    cf) 하지만 시분할 시스템에서 사용되는 운영 체제에는 일반적으로 장기 스케줄러를 두지 않는 경우가 대부분이다. 현대의 운영체제 에서는 프로세스가 시작되면 장기 스케줄러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 된다.

2.단기 스케줄러(short term scheduler)

어떤 프로세스에게 CPU를 할당해 줄 것인가?

CPU 스케줄러라고도 하며 준비 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정한다. 타이머 인터럽트가 발생하면 단기 스케줄러가 호출된다.

  • CPU 와 메모리 사이의 스케줄링을 담당.
  • 비선점형 방식 : CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방법
  • 선점형 방식 : 프로세스가 CPU를 계속 사용하기를 원하더라도 강제로 빼앗을 수 있는 스케줄링 방법

3.중기 스케줄러(medium term scheduler)

메모리에 적재된 프로세스 수 관리

너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하되는 경우 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절하기 위해 추가된 스케줄러이다.

  • 실행중인 프로세스의 수 제어 제어
  • 스왑아웃(swap out): 메모리에 많은 수의 프로세스가 적재되어 프로세스 당 보유하고 있는 메모리량이 극도로 적어지게 되면 시스템의 성능이 심각하게 저하될 수 있다. 이 경우에 메모리에 올라와 있는 프로세스 중 일부로부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장해 두는 것을 스왑 아웃이라고 한다.
  • Suspended(stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태를 의미한다. blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state 로 돌아갈 수 있지만 이 상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 수 없다.

📌스케줄링 알고리즘

1. FCFS: First-Come First-Served(선입선출 스케줄링)

  • 프로세스가 준비 큐에 도착한 시간 순서대로 CPU를 할당하는 방식을 말한다.
  • 콘보이 현상: CPU 버스트가 짧은 프로세스가 CPU 버스트가 긴 프로세스보다 나중에 도착해 오랜시간을 기다려야 하는 현상(FCFS 스케줄링의 대표적인 단점)

2. SJF: Shortest-Job First(최단작업 우선 스케줄링)

  • CPU 버스트가 가장 짧은 프로세스에게 제일 먼저 CPU를 할당하는 방식이다.
  • 평균 대기시간을 가장 짧게 하는 최적 알고리즘으로 알려져 있음
  • 현재 실행중인 프로세스의 남은 CPU 버스트 시간보다 더 짧은 CPU 버스트 시간을 가지는 프로세스가 도착할 경우 CPU를 빼앗아 부여하는 선점형 구현방식을 SRTF(Shortest Remaining Time First)라고 부른다.

3. Priority scheduling(우선순위 스케줄링)

  • 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식을 말한다.
  • 기아 현상 : 우선순위가 높은 프로세스가 계속 도착하는 상황에서 우선 순위가 낮은 프로세스는 CPU를 얻지 못한 채 계속 기다려야 하는 현상
  • 노화(aging)기법 : 기다리는 시간이 길어지면 우선순위를 조금씩 높여 언젠가는 가장 높은 우선순위가 되어 CPU를 할당받을 수 있게 해주는 방법

4. RR: Round Robin Scheduling

시분할 시스템의 성질을 가장 잘 활용한 스케줄링 방식이라 할 수 있다.
각 프로세스가 CPU를 연속적으로 사용할 수 있는 시간이 특정 시간으로 제한되며, 이 시간이 경과하면 해당 프로세스에게 CPU를 회수해 준비 큐에 줄 서 있는 다른 프로세스에게 CPU를 할당한다. 그러면 이 프로세스는 준비 큐의 제일 뒤에 가서 줄을 서 다음번 차례가 오기를 기다리게 된다.
(RR은 CPU 사용시간이 랜덤한 프로세스들이 섞여있을 경우에 효율적이다)

cf)주의할점
설정한 할당시간이 너무 커지면 FCFS와 같아진다. 또 너무 작아지면 스케줄링 알고리즘의 목적에는 이상적이지만 잦은 context switch 로 overhead가 발생한다. 그렇기 때문에 적당한 할당시간을 설정하는 것이 중요하다.


References

profile
🤹‍♂️개발 기록 노트

0개의 댓글