Open Kjm04175 opened 8 months ago
운영체제 커리큘럼의 진정한 시작은 프로세스 스케줄링 부터라고 생각합니다. 이전까지는 운영체제라는 분야에 대해 슬쩍 알아보는 느낌이죠.
바로 본론으로 들어가 봅시다!
운영체제가 갖는 역할 중 하나는 프로세스들에게 자원을 적절히 분배해주는 것입니다. 자원의 할당을 대기하는 프로세스들은 준비 큐와 대기 큐에서 대기하고 있죠. (Process status 중 Ready, Waiting 상태를 떠올리면 됩니다.)
준비 큐는 CPU 사용을 위해 대기하는 Ready status의 정보를 대기 큐는 입출력 장치 사용을 위해 대기하는 Waiting status의 정보를 보유하고 있습니다.
운영체제는 이 큐에 존재하는 프로세스에게 '우선순위'를 고려하여 자원을 배분합니다.
운영체제가 자원을 배분하기 위한 '우선순위'는 어떻게 결정될까요?
이름에서 알 수 있듯, FCFS 알고리즘은 CPU에 도착하는 순서대로 프로세스를 할당해줍니다. 이 방법은 구현이 간단하지만, 처음에 들어온 프로세스가 너무 긴 Run time을 가질 때, CPU 효율성이 낮아지는 단점이 있습니다.
SJF의 이론은 간단합니다. 프로세스의 수행 시간이 짧은 순서대로 CPU에 할당하는 것입니다. SJF 알고리즘의 장점은 주어진 프로세스에 대해 무조건적인 최소의 평균 대기시간을 보장한다는 것입니다!
하지만, Run time이 긴 프로세스는 무조건 뒤로 밀리게 됩니다. 짧은 프로세스들이 계속 추가된다면, Runtime이 긴 프로세스는 실행 될 수 없겠죠. 이 현상을 기아 (Starvation)이라고 합니다.
Round Robin 스케줄링은 프로세스들에게 할당 시간 (Time quantum)을 부여하고, 그 할당 시간이 끝나면 프로세스를 변경, Priority queue 맨 뒤에 서는 방식입니다.
Round Robin 기법은 기아 현상이 발생하지 않는다는 장점이 있고, 응답 시간이 빠릅니다.
하지만 SJF보다 평균 소요시간 (Average Turnaround Time)이 길다고 합니다.
오늘은 스케줄링에 대해 다루어보았습니다.
오랜만에 보니 재미있기도 하고, 운영체제 시험 공부를 하며 '라운드 로빈 수면법'을 했던 과거가 떠오르네요.
https://rebro.kr/175 https://80000coding.oopy.io/b271bc98-65be-4722-8299-a087dc014f3c
아니왜 요새 다 병나발을 부는건가요 ㅋㅋㅋㅋㅋㅋㅋ 자색고구맠ㅋㅋㅋㅋㅋ 저도 당사자에게 직접 들었습니다 ㅋㅋㅋㅋ 별개로 덕분에 OS 도 다시 봤네요! 👍🏻👍🏻
서론
잡설
14 에서 언급 했듯, 오늘은 프로세스 스케줄링에 대해 알아보도록 하겠습니다.
운영체제 커리큘럼의 진정한 시작은 프로세스 스케줄링 부터라고 생각합니다. 이전까지는 운영체제라는 분야에 대해 슬쩍 알아보는 느낌이죠.
바로 본론으로 들어가 봅시다!
본론
What is Process Scheduling
운영체제가 갖는 역할 중 하나는 프로세스들에게 자원을 적절히 분배해주는 것입니다. 자원의 할당을 대기하는 프로세스들은 준비 큐와 대기 큐에서 대기하고 있죠. (Process status 중 Ready, Waiting 상태를 떠올리면 됩니다.)
준비 큐는 CPU 사용을 위해 대기하는 Ready status의 정보를 대기 큐는 입출력 장치 사용을 위해 대기하는 Waiting status의 정보를 보유하고 있습니다.
운영체제는 이 큐에 존재하는 프로세스에게 '우선순위'를 고려하여 자원을 배분합니다.
스케줄링 알고리즘
운영체제가 자원을 배분하기 위한 '우선순위'는 어떻게 결정될까요?
FCFS (First ComeFirst Served)
이름에서 알 수 있듯, FCFS 알고리즘은 CPU에 도착하는 순서대로 프로세스를 할당해줍니다. 이 방법은 구현이 간단하지만, 처음에 들어온 프로세스가 너무 긴 Run time을 가질 때, CPU 효율성이 낮아지는 단점이 있습니다.
SJF (Short Job First)
SJF의 이론은 간단합니다. 프로세스의 수행 시간이 짧은 순서대로 CPU에 할당하는 것입니다. SJF 알고리즘의 장점은 주어진 프로세스에 대해 무조건적인 최소의 평균 대기시간을 보장한다는 것입니다!
하지만, Run time이 긴 프로세스는 무조건 뒤로 밀리게 됩니다. 짧은 프로세스들이 계속 추가된다면, Runtime이 긴 프로세스는 실행 될 수 없겠죠. 이 현상을 기아 (Starvation)이라고 합니다.
Round Robin
Round Robin 스케줄링은 프로세스들에게 할당 시간 (Time quantum)을 부여하고, 그 할당 시간이 끝나면 프로세스를 변경, Priority queue 맨 뒤에 서는 방식입니다.
Round Robin 기법은 기아 현상이 발생하지 않는다는 장점이 있고, 응답 시간이 빠릅니다.
하지만 SJF보다 평균 소요시간 (Average Turnaround Time)이 길다고 합니다.
결론
오늘은 스케줄링에 대해 다루어보았습니다.
오랜만에 보니 재미있기도 하고, 운영체제 시험 공부를 하며 '라운드 로빈 수면법'을 했던 과거가 떠오르네요.
참조
https://rebro.kr/175 https://80000coding.oopy.io/b271bc98-65be-4722-8299-a087dc014f3c