스케줄링 사용이유
우리는 위에서 컴퓨터에서 여러가지의 프로세스를 작동하는데 이것이 동시에 작동하게 보이게 하는 것이 하나의 착시효과라고 했습니다. 그러면 어느 프로세스를 먼저 돌릴지, 늦게 돌릴지 결정해야 할 텐데, 이걸 점심 메뉴 고르듯이 랜덤 뽑기를 할 수도 없고, 즉 프로세스의 우선순위를 고려해야 하지 않을까요? 이처럼 프로세스의 우선순위를 고려해서 각각의 실행 순서를 지정해 주는 것이 CPU 스케줄링입니다.
모든 프로세스는 전부다 자신이 먼저 작동될 것이라고 우기고 있습니다. 그렇기 때문에 맨날 싸움이 나는데 이것을 제어해 주는 것이 PCB라는 프로세스 제어 블록입니다.
스케줄링을 할 때 고려해야 할 점이 많습니다. 회사의 면접을 생각하면 되는데, 우리가 사장이라면 필요한 인물 순서대로 뽑는 것을 생각하면 됩니다. 컴퓨터 역시 많이 사용되거나 특정한 기준에 따라서 중요도가 높다고 판단하고 해당 프로세스를 우선적으로 스케줄링 한다고 보면 됩니다.
때때로 우리가 고속도로에서 차가 막혀서 기다리는데 갑자기 끼어드는 차량이 있을 수 있습니다. 물론 급똥과 같이 특별한 이유가 있었다고 생각을 합시다. 이처럼 중간에 새치기를 해서 자신이 먼저 동작하는 것을 사이클 훔치기라고 합니다. 보다 정확한 정의는 입출력 집중 프로세스가 CPU집중 프로세스보다 먼저 실행상태에 들어가는 것이라고 보면 될 것 같습니다. 참고로 입출력 집중 프로세스는 프린터 실행하는 프로그램이라고 생각하면 됩니다.
선점형 스케줄링 VS 비선점형 스케줄링
스케줄링은 크게 선점형 스케줄링과 비선점형 스케줄링으로 구분할 수 있습니다.
선점형 스케줄링은 날강도처럼 프로세스가 CPU를 할당 받아도 강제로 빼앗아 다른 프로세스를 할당할 수 있는 것을 의미합니다. 비선점형 스케줄링은 이와 반대로 한번 할당 받으면 해당 프로세스가 마무리될 때 까지 빼앗을 수 없는 것을 정의합니다.
스케줄링 종류
FCFS방법은 선입 선출의 형태이다. 먼저 들어온 프로세스가 먼저 영역을 할당 받는 것입니다. 그러면 맨 마지막에 있는 것은 어떻게 될까? 무한정 기다리게 됩니다. 만약 맨 처음 들어온 프로세스가 엄청 길게 동작하면 맨 마지막에 있는 프로세스는 계속 엄청난 시간동안 기다려야 하는데, 이것을 콘보이 현상이라고 합니다.
SJF는 가장 실행시간이 짧은 프로세스부터 동작하는 것입니다. 하지만 정확하게 종료 시간을 예측하기 어렵고, 아사현상 즉 작업시간이 길다는 이유로 작업이 계속 연기되는 현상이 발생할 뿐만 아니라 공평성에 어긋납니다. 따라서 요즘은 잘 쓰지 않습니다.
물론 공평성에 어긋나는 문제는 에이징이라는 방법을 통해서 해결할 수 있습니다. 에이징은 프로세스가 양보할 수 있는 상한선을 정하는 것을 말합니다. 프로세스가 자신의 순서를 양보할 때마다 나이를 한살씩 먹어 최대 몇 살 까지만 양보할 수 있도록 하는 것을 이야기합니다.
HRN방식은 기다린 시간과 CPU 사용 시간을 고려해서 스케줄링을 하는 방식입니다. 실행시간이 짧은 프로세스의 우선순위를 높게 설정하면서도 대기시간을 높게 평가하기 때문에 아사현상은 없지만 공평성 문제가 있습니다.
RR은 라운드 로빈이라고 하며 프로세스가 할당 받은 시간 즉 타임 슬라이스 동안 작업을 하다가 완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다리는 방식입니다. 프로세스들이 작업을 완료할 때까지 순환하면서 실행됩니다. 아마 요즘은 RR형식으로 많이 동작하는 것으로 알고 있습니다. 참고로 타임 슬라이스란 CPU 사용 시간을 잘게 쪼개어 나뉜 시간 한 조각을 타임 슬라이스라고 합니다.
SRT는 SJF와 RR을 혼합한 방식으로 최소 잔류 시간 우선 스케줄링이다. CPU를 할당 받을 프로세스를 선택할 때 남은 작업 시간이 가장 적은 프로세스를 선택합니다. 하지만 이 또한 SJF와 같은 단점을 가지기 때문에 잘 사용하지 않습니다.
또한 한번 우선순위를 부여받으면 끝까지 우선순위가 고정되는 고정 우선순위 알고리즘과 일정 시간마다 변하는 우선순위를 새로 계산하고 이를 반영하는 변동 우선순위로 나뉜다. 하지만 변동 우선순위는 복잡성이 높습니다.
이 모든 것을 커버하는 것이 다단계 큐 스케줄링입니다. 우선순위에 따라 준비 큐를 여러 개 상용하며 우선순위에 따라 타임 슬라이스를 조절하여 작업 효율을 높일 수 있습니다. 하지만 우선순위가 낮은 프로세스는 불리합니다.
이를 보완한 것이 다단계 피드백 큐 스케줄링입니다. CPU를 사용한 후의 프로세스는 원래의 큐로 돌아가지 않고 우선순위가 하나 낮은 큐 끝으로 들어가 순위가 낮은 프로세스의 실행이 연기되는 문제를 해결합니다. 또한 우선순위가 낮아질 수록 해당 큐의 타임 슬라이스가 커집니다.
동기화
스케줄링을 통해서 작동 순서가 정해진 프로세스들이 동시다발적으로 협력을 하면서 작동을 하는데, 이들의 순서를 올바르게 맞추기 위해서 동기화 라는 기능이 필요합니다. 즉 프로세스들 사이의 순서를 맞추는 것입니다.
생산자가 물건을 팔고 판매 수량을 계산해야 하는데, 물건 값은 받지 않고 물건을 주어서 판매 수량을 계산하면 결국 순서가 어긋나서 별로 좋지 않게 됩니다. 따라서 동기화를 사용해서 올바른 결과를 내야 합니다.
또는 수강신청을 할 때 크롬에 들어가서 수강신청 사이트에 들어가서 과목을 조회 후 신청을 해야 하는 것이 맞지만 프로세스끼리 동기화가 되지 않았다면 크롬 실행 도중에 갑자기 디스코드가 켜져서 수강신청에 영향을 미치거나 과목을 조회하는 도중에 크롬의 실행순서를 빼앗겨서 갑자기 정지되어 한학기 수강신청이 망하는 경우가 발생할 수 있습니다.
따라서 우리는 순서를 위한 동기화와 상호 배제 즉 공유가 불가능한 자원을 동시에 사용하는 것을 막기 위한 동기화 방식이 있습니다.
최종적으로 스케줄링에 대해서 정리를 하면 스케줄링이란 여러 프로세스가 있고 이 프로세스들이 자원을 동시에 요구하는데 자원이 제한되어 있는 경우, 제한된 된 자원을 어떠한 순서로 나누어 줄 것인지에 대한 정책을 말하며, 프로세스 상태 전환에서 실행 상테에서 대기상태로 전환될 때, 실행상태에서 준비상태로 전환 될 때, 대기상태에서 준비상태로 전환될 때, 종료될 때 발생하게 됩니다. 스케줄링에 관한 세세한 특징이나 알고리즘의 대기시간을 통해서 우선순위를 구하는 공식은 책이나 기타 사이트를 참고하시기 바랍니다.
간단 요약
스케줄링도 간단하게 요약하고 넘어가겠습니다.
면접 문제 후보
그리고 여기서 이러한 종류의 면접 문제가 나올 수 있습니다.
'학교수업, CS > 운영체제' 카테고리의 다른 글
[발표자료]교착상태 (1) | 2023.05.15 |
---|---|
[발표자료]뮤텍스 VS 세마포어 (0) | 2023.05.15 |
[발표자료]멀티 스레드 VS 멀티 프로세스 (1) | 2023.05.15 |
메모리 관리 (1) | 2023.05.09 |
가상메모리/물리메모리 (0) | 2023.05.09 |