{{위키데이터 속성 추적}}
{{소프트웨어 정보
| 이름                   = 컴플리틀리 페어 스케줄러
| 다른이름               = Completely Fair Scheduler
| 로고                   = 
| 로고크기               = 
| 로고설명               = 
| 화면                   = 
| 화면크기               =
| 설명                   =  
| 원저자                 = [[Ingo Molnar]]
| 개발자                 = 리눅스 커널 개발자들
| 발표일                 = <!-- {{시작 날짜와 나이|YYYY|MM|DD|df=yes/no}} -->
| 최근 버전              = 
| 최근 버전 출시일       = <!-- {{시작 날짜와 나이|YYYY|MM|DD|df=yes/no}} -->
| 미리보기 버전          = 
| 미리보기 버전 출시일   = <!-- {{시작 날짜와 나이|YYYY|MM|DD|df=yes/no}} -->
| 지원중단               = 
| 상태                   = 
| 저장소                 = 
| 프로그래밍 언어        = 
| 엔진                   = 
| 운영체제               = [[리눅스 커널]]
| 플랫폼                 = 
| 기본포함               = 
| 대체함                 = 
| 대체됨                 = 
| 서비스이름             = 
| 크기                   = 
| 표준                   = 
| 언어                   = [[C (프로그래밍 언어)|C]]
| 언어수                 = 
| 언어각주               = 
| 종류                   = [[스케줄링 (컴퓨팅)]]
| 라이선스               = [[GNU 일반 공중 사용권|GPL-2.0]]
| 허가                   = 
| 웹사이트               = {{URL|kernel.org}}
| 기준                   =
}}
[[파일:Simplified_Structure_of_the_Linux_Kernel.svg|thumb|단순화된 리눅스 커널 구조 내의 Completely Fair Scheduler(프로세스 스케줄러)의 위치.]]
'''컴플리틀리 페어 스케줄러'''({{llang|en|Completely Fair Scheduler}}, '''CFS''')는 [[리눅스]] [[리눅스 커널|커널]]의 2.6.23 (2007년 10월) 릴리스에 병합된 [[스케줄링 (컴퓨팅)|프로세스 스케줄러]]이며 현재의 기본 [[스케줄러]]이다. [[프로세스]] 실행을 위해 [[중앙 처리 장치|CPU]] 자원 [[할당]]을 관리하며 상호작용 [[성능]]을 극대화하면서도 전반적인 CPU 이용을 극대화하는 것을 목표로 한다.

'''로테이팅 스테어케이스 데드라인'''(Rotating Staircase Deadline)이라는 이름의 [[페어 셰어 스케줄링|페어 스케줄링]]이 주를 이루는 [[Con Kolivas]]의 스케줄링은 [[Ingo Molnar]]가 컴플리틀리 페어 스케줄러(CFS)의 개발에 영향을 주었고 이는 자신의 발표에서 Kolivas의 업적을 언급하면서 초기의 [[O(1) 스케줄러]]를 대체한다.<ref>{{메일링 인용
       | last=Molnar
       | first=Ingo
       | authorlink=Ingo Molnar
       | title=&#x5b;patch&#x5d; Modular Scheduler Core and Completely Fair Scheduler &#x5b;CFS&#x5d;
       | url=https://lwn.net/Articles/230501/
       | mailinglist=linux-kernel
       | date=2007-04-13}}</ref>

구 리눅스 2.6 커널에 쓰인 이전의 O(1) 스케줄러와 달리 CFS 스케줄러 구현은 [[런 큐]]에 기반을 두지 않는다. 대신에 [[레드-블랙 트리]]는 앞으로 있을 태스크 실행의 [[타임라인]]을 구현한다.
게다가 스케줄러는 [[나노초]] [[입자]] 계산을 사용하며 이는 개개의 프로세스의 CPU 할당분이 할당된 [[원자]] 단위이다. 이는 이를테면 프로세스의 대화식 이용을 결정하기 위해 어떤 특정한 [[휴리스틱 이론]]이 필요하지 않다는 것을 의미한다.<ref name="kt8059">{{웹 인용|last=Andrews |first=Jeremy |date=2007-04-18 |url=http://kerneltrap.org/node/8059 |title=Linux: The Completely Fair Scheduler |publisher=[[:en:KernelTrap]] |url-status=dead |archiveurl=https://web.archive.org/web/20070419102054/http://kerneltrap.org/node/8059 |archivedate=2007-04-19 |df= }}</ref>

구 O(1) 스케줄러처럼 [[CFS]]는 슬리퍼 페어니스(sleeper fairness)라는 개념을 사용하는데, 이는 런큐의 것과 동일한 슬리핑/대기 태스크를 고려한다. 즉, 대부분의 시간을 사용자 입력이나 다른 이벤트를 대기하기 위해 소비하는 대화식 태스크들은 이들이 필요할 때 [[CPU]]의 필적할만한 할당분을 가져오게 된다는 것을 뜻한다.

== 각주 ==
{{각주}}

== 같이 보기 ==
* [[브레인 퍽 스케줄러]]
* [[SCHED DEADLINE|SCHED_DEADLINE]]

== 외부 링크 ==
* {{웹 인용 | last=Corbet | first=Jonathan | date=2007-04-17 | url=https://lwn.net/Articles/230574/ | title=Schedulers: The Plot Thickens | publisher=[[LWN.net]] | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20170906174246/https://lwn.net/Articles/230574/ | 보존날짜=2017-09-06 | url-status=dead }}
* {{웹 인용 | last=Corbet | first=J. | date=2007-07-02 | url=https://lwn.net/Articles/240474/ | title=CFS Group Scheduling | publisher=LWN.net | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20170906174224/https://lwn.net/Articles/240474/ | 보존날짜=2017-09-06 | url-status=dead }}
* {{웹 인용 | last=Corbet | first=J. | date=2007-10-16 | url=https://lwn.net/Articles/254711/ | title=Fair user scheduling and other scheduler patches | publisher=LWN.net | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20170612034445/https://lwn.net/Articles/254711/ | 보존날짜=2017-06-12 | url-status=dead }}
* {{웹 인용 | last=Corbet | first=J. | date=2010-11-17 | url=https://lwn.net/Articles/415740/ | title=TTY-based group scheduling | publisher=LWN.net | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20180521062600/https://lwn.net/Articles/415740/ | 보존날짜=2018-05-21 | url-status=dead }}
* {{웹 인용 | last=Corbet | first=J. | date=2010-12-06 | url=https://lwn.net/Articles/418884/ | title=Group scheduling and alternatives | publisher=LWN.net | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20170611235713/https://lwn.net/Articles/418884/ | 보존날짜=2017-06-11 | url-status=dead }}
* {{웹 인용 | last=Singh Pabla | first=Chandandeep | date=2009-08-01 | url=http://www.linuxjournal.com/magazine/completely-fair-scheduler | title=Completely Fair Scheduler | publisher=[[linuxjournal.com]] | 확인날짜=2018-03-27 | 보존url=https://web.archive.org/web/20180318192542/http://www.linuxjournal.com/magazine/completely-fair-scheduler | 보존날짜=2018-03-18 | url-status=dead }}
* {{웹 인용| last=Jones| first=Tim| date=2009-12-15| url=http://www.ibm.com/developerworks/library/l-completely-fair-scheduler/index.html |title=Inside the Linux 2.6 Completely Fair Scheduler |publisher=[[IBM]] }}
* {{웹 인용| last=Lozi| first=Jean-Pierre| date=2016-04-21| url=https://www.ece.ubc.ca/~sasha/papers/eurosys16-final29.pdf| title=The Linux Scheduler: a Decade of Wasted Cores| publisher=[[ACM|ACM]]| 확인날짜=2018-03-27| 보존url=https://web.archive.org/web/20180205095009/http://www.ece.ubc.ca/~sasha/papers/eurosys16-final29.pdf| 보존날짜=2018-02-05| url-status=dead}}

{{리눅스 커널}}

{{기본정렬:컴플리틀리 페어 스케줄러}}

[[분류:리눅스 커널 프로세스 스케줄러]]
[[분류:자유 소프트웨어]]