2021. 11. 30. 23:22ㆍOperating System
- 비선점형 알고리즘(스케줄링) : 운영체제가 자원에 대한 우선권을 포기한 상태이다. 따라서 어떤 프로세스가 실행 상태에 들어가서 cpu를 사용하면 프로세스가 종료되거나 자발적으로 대기상태에 들어갈 때까지 계속 실행된다. 운영체제가 중간에 빼앗을 수 없다.
비선점형 알고리즘의 종류 => FCFS, SJF, HRN 스케줄링
- 선점형 알고리즘(스케줄링) : 운영체제가 자원을 선점하고 자원을 프로세스에게 빌려주는 형태이다. 따라서 어떤 프로세스가 실행 상태에 있어도 운영체제가 필요하다고 판단되면 그 프로세스의 작업을 강제로 중단시키고 자원을 다시 가져갈 수 있다. 하나의 프로세스가 cpu를 독점할 수 없고 운영체제가 관리하기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합하다.
선점형 알고리즘의 종류 => 라운드로빈, SRT, 다단계 큐, 다단계 피드백 큐 스케줄링
--- 비선점형 스케줄링 세 가지 ---
1) FCFS 스케줄링 : First Come First Served, 선입선출
준비큐에 도착한 순서대로, 즉 준비 큐에 먼저 도착한 프로세스가 먼저 실행됨.
비선점형 방식, ∴ 한 번 실행된 프로세스가 종료되어야 그 다음 프로세스가 실행될 수 있다.
단일 큐이기 때문에 모든 프로세스가 우선순위 동일.
- 단점?
- 우선순위가 먼저인 (대표적으로 커널 프로세스) 프로세스를 실행하는 게 중요한데도 중요하지 않은 프로세스 (예를 들어 프린터 제어 프로세스) 가 먼저 실행될 수 있음.
- "콘보이 효과" : 처리 시간이 긴 프로세스가 CPU를 차지하면 다른 프로세스들은 하염없이 기다려야 해서 시스템의 효율성이 떨어짐. 이 효과는 비선점형 방식에서만 나타난다. (종료되기까지 운영체제가 강제로 어떻게 할 수 없으니까)
- 만약 현재 작업 중인 프로세스가 입출력을 요청하는 경우, 입출력이 끝날 때까지 기다려야 하므로 CPU가 쉬는 시간이 많아진다. 중간에 강제로 종료시킬 수 없기 때문.
2) SJF 스케줄링 : Shortest Job First, 최단 작업 우선 스케줄링
준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 작업부터 CPU 할당.
비선점형 방식. 임에도 가장 짧은 작업부터 우선 실행되므로 최대한 짧은 시간만 대기할 수 있다. (낭비되는 시간을 줄임)
- 장점?
- 콘보이 효과 완화하여 시스템의 효율성을 높였다.
- 단점?
- 운영체제가 프로세스의 종료 시간을 정확하게 예측하기 어렵다. 예를 들어 내가 현재 사용하고 있는 인터넷을 언제까지 사용할지 운영체제는 예측할 수 없기 때문에, 프로세스의 실행 시간을 정확히 알기 어렵다.
- 공평성의 문제 : 작업시간이 길다는 이유만으로 계속 뒤로 밀리는 건 공평성이 떨어진다. 들어가기 직전의 순서까지 오더라도 그 때 만약 효율이 좋은, 그러니까 실행시간이 짧은 프로세스가 나타나면 다시 뒤로 밀려버리고, 이게 반복되면 계속 뒤로 밀린다. 작업시간이 긴 프로세스가 계속 순서가 뒤로 밀리는 이 현상을 "아사(starvation) 현상" 이라고 한다.
아사 현상을 완화하는 방법으로 "에이징" 방식이 있다. 프로세스가 양보할 수 있는 상한선을 정하는 방식으로, 프로세스가 한 번 뒤로 밀릴 때마다 우선순위가 한 단계씩 올라가게 규정하는 것이다. 그러면 언젠가는 먼저 실행에 들어갈 수 있게 된다...
3) HRN 스케줄링 : Highest Response Rate Next, 최고 응답률 우선 스케줄링
서비스를 받기 위해 기다린 시간, CPU 사용시간을 고려하여 우선순위를 결정하는 스케줄링. 오래 기다렸으면 먼저 할당 받도록 대기시간까지 '함께' 고려.
SJF 에서 발생할 수 있는 아사 현상을 해결하기 위해 만들어짐.
비선점형 알고리즘.
- SJF 에서 프로세스가 대기한 시간까지 함께 고려하여 아사 현상을 완화했지만, 여전히 공평성 위배, SJF 와 크게 바뀌지 않고 사실상 큰 개선효과가 없어 많이 쓰이지 않는다.
--- 여기서부턴 선점형 ---
4) 라운드 로빈 스케줄링
한 프로세스가 할당받은 '타임 슬라이스' 동안만 실행할 수 있고 그 안에 작업을 완료하지 못하면 운영체제에 의해 강제로 준비 큐의 맨 뒤로 가서 다시 자기 차례를 기다린다.
선점형 알고리즘. 의 가장 대표적이고 단순한 스케줄링 방식.
여기선 "타임슬라이스"를 적절히 설정하는 것이 중요한데, 너무 크면 FCFS와 다를 게 없어지고 (타임슬라이스 안에 작업이 다 완료되기 쉬우니까) , 너무 작으면 문맥교환이 너무 자주 일어나서 문맥교환하는 데 걸리는 시간이 많이 낭비된다.
* 문맥 교환 : 한 프로세스의 타임슬라이스가 다 하고 다음 프로세스로 실행이 옮겨질 때 일어나는 과정
5) SRT 우선 스케줄링 : Shortest Remaining Time
SJF 알고리즘을 선점형으로 변형한 방식.기본적으로 라운드로빈 스케줄링을 사용하면서, CPU를 할당받을 (실행상태로 옮겨질) 프로세스를 선택하는 그 때 그 때 남아 있는 작업 시간이 가장 적은 프로세스를 골라내어 먼저 실행 시킨다.
6) 다단계 큐 스케줄링
우선순위에 따라 준비 큐가 여러개 사용된다. 프로세스는 운영체제로부터 부여받은 우선순위에 따라 해당 우선순위의 큐에 삽입된다.여기서 우선순위는 고정형 우선순위.상단의 큐에 있는 모든 프로세스의 작업이 끝나야 다음 우선순위 큐의 작업이 시작된다.
- 단점?
- 우선순위가 낮은 프로세스들은 CPU의 할당을 계속 못 받게 된다.
이를 해결한 게 다음 나오는 스케줄링이다.
7) 다단계 피드백 큐 스케줄링
프로세스가 CPU 할당받아 실행될 때마다 우선순위를 한 단계씩 낮추는 방식.
우선순위가 처음부터 낮았던 프로세스가 계속 뒤에서 실행이 연기되는 문제를 완화.
단, 우선순위가 낮아져도 커널 프로세스가 일반 프로세스의 큐에 삽입되지는 않음!
* 우선순위가 낮아질수록 CPU얻을 확률이 낮아지기 때문에 우선순위가 낮은 프로세스들은 한번 CPU를 할당받을 때 많이 작업하라고 타임슬라이스를 크게 한다.
마지막 큐에 있는, 우선순위가 가장 낮은 프로세스는 무한대의 타임슬라이스를 얻는다. 즉, 프로세스 작업이 완료될 때까지 시간을 계속 쓸 수 있는 것이다. 즉, 마지막 큐는 들어온 순서대로 작업을 마치는 FCFS 방식으로 동작한다.
+) 우선순위 스케줄링
프로세스의 중요도에 따른 우선순위를 반영한 스케줄링 알고리즘. 비선점형, 선점형 모두 가능.
* 비선점형 방식에서 우선순위 스케줄링 :
SJF 스케줄링 ( 작업시간이 짧은 프로세스가 높은 우선순위 )
HRN 스케줄링 ( 작업시간이 짧거나 대기시간이 긴 프로세스가 높은 우선순위 )
* 선점형 방식에서 우선순위 스케줄링 :
SRT 스케줄링 ( 남은 시간이 짧은 프로세스가 높은 우선순위 )
'Operating System' 카테고리의 다른 글
[til_211201][운영체제] 프로세스 동기화 (0) | 2021.12.03 |
---|---|
[til_211129][운영체제] 데드락 Deadlock 교착상태 (0) | 2021.11.30 |