Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

80258
1323
114582


[리눅스커널] 스케줄링: 선점 스케줄링(Preemptive Scheduling)이란 무엇일까? 10. Process Scheduling

선점 스케줄링은 다음과 같이 정의내릴 수 있습니다.  

    CPU에서 실행 중인 프로세스를 비우고 새로운 프로세스를 CPU에서 실행시킴
 
선점 스케줄링에 대한 이해를 돕기 위해 야구에서 투수 교체를 하는 과정을 예를 들겠습니다.

마운드에 A란 투수가 있다고 가정합시다. A란 투수는 열심히 공을 던지고 있습니다. 감독은 투수가 마운드에서 제대로 공을 던지고 있는지 계속 관찰합니다. 제구는 좋은지 구속은 제대로 나오고 있는지 점검합니다.

그런데 시간이 흘러 B, C와 D란 투수가 자신이 공을 던지고 싶다는 의사와 함께 불펜에서 몸을 풀기 시작했습니다. B, C와 D란 투수도 A와 같은 기량의 투수입니다.

감독은 A와 B, C, D 투수를 비교합니다. 만약 B, C, D 투수 중에 A보다 잘 던진다고(우선순위가 높으면) 감독은 어떤 결정은 내릴까요? A 투수를 강판시키고 B란 투수를 마운드에 올립니다.

여기서 A와 B 투수를 프로세스, 감독을 스케줄러 그리고 마운드를 CPU로 바꿔서 생각해 봅시다.

현재 A란 프로세스가 CPU를 점유하면서 실행 중이라고 가정하겠습니다.
그런데 런큐에 Enqueue한 후 실행을 기다리는 B, C, D란 프로세스가 있습니다.   

스케줄러는 A와 B, C, D 프로세스와 우선순위를 비교합니다. 만약 A 프로세스보다 B란 프로세스가 우선순위가 높다고 판단하면 A란 프로세스를 CPU에서 비우고 B란 프로세스를 CPU에 실행 시킵니다.

이를 선점 스케줄링이라고 말합니다.


"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)

Reference(프로세스 스케줄링)

스케줄링 소개
프로세스 상태 관리
   어떤 함수가 프로세스 상태를 바꿀까?
스케줄러 클래스
런큐
CFS 스케줄러
   CFS 관련 세부 함수 분석  
선점 스케줄링(Preemptive Scheduling)   
프로세스는 어떻게 깨울까?
스케줄링 핵심 schedule() 함수 분석
컨택스트 스위칭
스케줄링 디버깅
   스케줄링 프로파일링
     CPU에 부하를 주는 테스트   
     CPU에 부하를 주지 않는 테스트



핑백

덧글

댓글 입력 영역