개요
운영체제는 항상 한정된 자원을 두고 자신과의 싸움을 한다. ▼
자원은 계속해서 늘어나고 있지만 자원이 늘어나는 만큼 더 많이 사용하게 되어 자원은 항상 부족하다.
프로세스가 구동이 되려면 메모리 자원과 CPU자원이 필요하다.
모든 프로세스가 자원을 원하는 만큼 가져가면 좋겠지만 그렇게 다 주기엔 자원이 모자르기에 누구에게, 얼마나, 얼마동안 줄 지를 결정해야한다.
이렇게 프로세스에게 자원을 주는 일련의 행위를 Scheduling, 해당 행위를 맡고있는 OS의 일부분을 Scheduler라고 부른다.
Term에 따른 종류
스케쥴러는 term을 단위로 그 종류가 크게 3가지로 나뉘어진다.
Long term, short term, 그리고 medium term으로 3가지가 있다.
Long term
Long term 스케쥴러는 메모리를 어떻게 줄 지를 결정한다. (Job scheduler 라고도 부른다.)
Long term 스케쥴러는 어떤 프로세스를 ready queue로 보낼 지 결정한다.
Ready queue로 프로세스를 보냄으로써 degree of multiprogramming을 제어한다.
Q. Degree of multiprogramming이 무엇인가요?
A. 메모리에 프로그램이 얼마나 올라가있는지를 말하는 것이다. 10개의 프로그램이 다 올라가 있다면 이는 10이 된다.
Q. 그렇다면 Degree of multiprogramming값을 최대로 해놓는게 좋겠네?
A. 꼭 그런 것은 아니다. 너무 적어도, 너무 많아도 성능이 안 좋아질 수 있다.
일반적으로는 Long term 스케쥴러는 없다.
Time sharing system에는 보통 Long term 스케쥴러가 없다.
어떤 프로세스를 ready queue로 올릴지 결정하는 과정없이 프로세스가 실행되는 순간 바로 ready queue에 올려버린다.
그러나 이렇게 되면 모든 프로그램이 메모리에 다 올라가버리기 때문에 degree of multiprogramming이 커지게 된다.
그러면 이를 어떻게 제어할까?
Long term 스케쥴러가 없기에 우선 메모리에 프로세스를 올리고, 이를 Medium term 스케쥴러로 제어한다.
Short term
Short term 스케쥴러는 어떤 프로세스를 실행상태로 할 지 결정한다.
(CPU scheduler 라고도 부르고, 이번 포스트에서 다루는 내용이 바로 short term 스케쥴러다.)
Short term 스케쥴러는 millsecond 단위로 프로세스 실행 시간을 결정한다.
Medium term
Medium term 스케쥴러는 여유공간 마련을 위해 프로세스를 메모리에서 디스크로 보내는 일을 한다. (Swapper라고도 부른다.)
프로세스에게서 memory를 뺏는 문제
디스크로 메모리를 보내는 과정을 통해 degree of multiprogramming을 제어한다.
Medium term 스케쥴러 때문에 Suspended(stopped) 상태가 추가 되었다.
Suspended 상태는 외부적인 이유로 프로세스의 수행이 정지된 상태를 말한다.
프로세스는 통째로 디스크에 swap out 된다.
사용자가 프로그램을 일시 정지 시킨 경우(break key)나 시스템의 여러 이유(메모리에 너무 많은 프로세스가 올라와 있을 때)로 프로세스를 잠시 중단시킨다. ▼
Blocked와 Suspended의 차이
Blocked는 자신이 요청한 event가 만족되면 Ready
suspended는 외부에서 resume 해주어야 Active
'CS > 운영체제' 카테고리의 다른 글
Process (0) | 2024.03.04 |
---|---|
System Call (0) | 2024.01.31 |
Operating System’s Structure (0) | 2024.01.29 |
Operating System 개요 (0) | 2024.01.29 |