컨텍스트 스위칭 역할을 담당하는 건 누구일까요?
또는, CPU에서 어떤 프로세스 혹은 스레드가 실행될지 누가 어떻게 결정하는 걸까요?
출처 : 쉬운코드 유튜브
CPU에서 실행될 프로세스를 선택하는 역할
CPU에서 동작하고 싶은 프로세스들은 ready queue에 저장되어 있고, scheduler는 ready queue에서 동작 시킬 프로세스를 선택한다.
scheduler에의해 선택된 프로세스를 실제로 CPU에서 실행될 수 있도록 만드는 역할
선택된 프로세스에게 CPU를 할당하는 역할
컨텍스트 스위칭을 시키는 역할 (컨텍스트 스위칭은 커널모드에서 실행된다.)
선택된 프로세스가 실행 되어야할 적절한 위치로 이동시킨다.
프로세스가 자발적으로 running상태를 벗어나고, 다른 프로세스가 CPU에서 동작할 수 있도록 양보한다.
신사적, 협력적(cooperative), 느린 응답성
실행 중인 프로세스의 작업이 끝나지 않았지만, OS에 의해 ready 상태가 된다.
적극적, 강제적, 빠른 응답성, 데이터 일관성 문제(race condition의 위험)
-> 여러 프로세스가 CPU에서 더 자주 동작하도록 한다.
first-come, first-served : 먼저 도착한 순서대로 처리
shortest-job-first : 프로세스의 다음 CPU burst가 가장 짧은 프로세스부터 실행
ex)
p1 - 7ms
p2 - 5ms
p3 - 10ms
p2 -> p1 ->p3
shortest-remaining-time-first : 남은 CPU burst가 가장 짧은 프로세스부터 실행
ex)
p1 - 10ms
p2 - 5ms
p3 - 16ms
p1 -> p1이 6ms가 남은 상황에서 p4 - 3ms ready로 들어오면 p4가 실행된다.
p1 -> p4 -> p2 -> p1-> p3
우선순위가 높은 프로세스부터 실행
round-robin : time slice로 나눠진 CPU time을 번갈아가며 실행
프로세스들을 그룹화해서 그룹마다 큐를 두는 방식
비슷한 프로세스 또는 우선 순위가 높은 프로세스들을 큐를 생성하여 넣는다.