2023.03.16 - 망각하고 있던 OS술사의 직책, Scheduling이 무엇인지 알아보자

최지원2023. 3. 16. 23:16

안녕하세요, 여태까지 저의 직책을 잘못 알고 있었던 OS술사 최지원입니다.

어라라...?

 

제가 계획서에서 호기롭게 운영체제를 마스터한다고 다짐한지 얼마 지나지도 않았는데

여태까지 블록체인술사로 잘못 알고 있었습니다.

그래서 첫 번째 모각코 블로그 포스팅도 이더리움 네트워크에 대해서 썼는데...

OS술사를 기대하셨던 모두에게 먼저 사과 인사 올립니다 (_ _)

 

 

요새 X브리X임에서 운영체제가 그렇게 핫 하더라구요.

 

하 지 만

.

.

.

나? 마세라티 오우너, Hype Boy의 아들 (합성해준 수미 장 감사합니다)

 

이미 마세라티 허의 CPP와 산학 협력프로젝트에서 단련된 저는 무섭지 않습니다.

 

 

 

 

그런데 제가 까먹고 패드를 집에 두고 와서 급한대로 교양 교재에 끄적끄적 적어두면서

자체적 운영체제 난이도 UP

 

그래도 OS술사라면 할 수 있을 겁니다. 해야만하구요.

대충 스케줄링에 대한 내용

 

Scheduling(스케줄링)이란?

- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원들을 해당 프로세스에게 할당하는 작업

- 프로세스의 상태가 Ready인 것들 중, 평가 항목에 따라 해당 프로세스에게 CPU를 할당하는 작업

 

 

스케줄링에 대한 두 번째 정의에서 Ready인 것들로 한정 지은 이유는, 프로세스의 상태가 Blocked인 아이들은 CPU를 줘도 당장 Running으로 넘어갈 수 없는 아이들이기 때문에 스케줄링의 고려 대상에서 빠졌다고 생각하시면 됩니다.

 

반면에, Ready 상태를 가진 프로세스들은 CPU 할당만 받게 되면 곧바로 Running으로 상태가 변하게 됐었죠?

 

 

그러면 운영체제에서 이 스케줄링 작업을 어떻게 효율적으로 처리할 수 있으며, 그 기준을 정할 수 있을까요?

이와 관련된 개념으로 Scheduling Metrics, 스케줄링 평가항목이 있습니다.

 

 

 

Scheduling Metrics(평가 항목)은 무엇일까

스케줄링 알고리즘에 대한 성능을 평가하기 위한 지표로 Turnaround Time, Response Time, Fariness가 있습니다.

각 지표에 대하여 간단한 설명을 하면 다음과 같습니다.

 

Turnaround Time (반환 시간) - 도착 후, 프로세스가 끝나는 것까지 소요되는 시간

Response Time (반응 시간) - 도착 후, 처음으로 스케줄링(CPU를 할당받는)되는 것까지 소요되는 시간

Fairness (공정성)

 

스케줄링 알고리즘을 평가하기 위한 지표가 있으면

당연히, 스케줄링 알고리즘들도 있겠죠? Set Pool에서 Memory로 올라갈 때 사용되는 여러 자료 구조가 있답니다.

 

 

Scheduling 알고리즘

1. FIFO - First In First Out의 약자로 순서대로 스케줄링을 하게 됩니다. 선입선출이라고 말할 수 있겠죠?

2. SJF - Short Job First의 약자로 Job(=Process)의 길이가 짧은 것 먼저 처리를 하는 알고리즘입니다. 하지만 Job들의 길이를 먼저 알아야 하는 것이 현실적으로 불가능하다는 점을 분명히 짚어두어야 합니다.

3. STCF - Shortest Time Completion First의 약자로 프로세스가 끝나기까지 남은 시간이 짧은 것부터 먼저 스케줄링하는 방식입니다. SJF와 유사하며, 차이점은 Running 상태의 프로세스도 고려한다는 점이 있겠습니다.

4. RR - Round Robin의 약자로 Time Out 개념이 사용되는 알고리즘입니다. 시간을 정해두고 그 시간 동안 프로세스에게 CPU를 할당한 뒤, 시간이 초과되면 다음 프로세스에게 CPU를 넘기고 다시 맨 뒤로 돌아가 대기하는 방식이죠. 반응 시간의 평가 항목에서 유리하다는 특징을 가집니다.