[리눅스커널] 스케줄링: CFS 세부 함수 분석 - 타임 슬라이스 관리

Guillermo Austin Kim|2019년 8월 26일
Posts

[리눅스커널] 스케줄링: CFS 세부 함수 분석 - 타임 슬라이스 관리

Guillermo Austin Kim|2019년 8월 26일

CFS 스케줄러는 지속적으로 프로세스의 타임 슬라이스를 관리합니다. 타임 슬라이스를 소진했을 때 선점 요청 프로세스가 자신에게 주어진 타임 슬라이스를 다 소진하면 선점됩니다. 즉 CPU에서 실행을 멈추고 CPU를 비우게 되는 것입니다. 이제 타임 슬라이스가 무엇인지 알아봤으니 커널에서 타임 슬라이스를 어떤 방식으로 관리하는지 소스 코드를 분석하겠습니다. 커널에서 다음 함수가 실행할 때 프로세스 타임 슬라이스를 업데이트합니다.  scheduler_tick()  task_tick_fair()  check_preempt_tick() 위 함수들은 다음과 같은 역할을 수행합니다. 1. 프로세스가 타임 슬라이스를 소진했는지 점검합니다. 2. 프로세스 타임 슬라이스를 업데이트합니다. 3. 만약 프로세스가