Schedulers University of New Mexico
https://commons.wikimedia.org/wiki/ File:Simplified_Structure_of_the_Linux_Kern el.svg 2 University of New Mexico
O(1) scheduler (older)
Two arrays, switching between them is just changing a pointer Uses heuristics to try to know which processes are interactive Average sleep time
https://en.wikipedia.org/wiki/O(1)_scheduler
3 University of New Mexico
CFS scheduler (currently in Linux)
Completely Fair Scheduler Red-black tree of execution to the nanosecond niffies
Like weighted fair queuing for packet networks An ideal processor would share equally maximum execution time = time the process has been waiting to run / total number of processes
https://en.wikipedia.org/wiki/Completely_Fair_Scheduler
4 University of New Mexico
BFS (now MuQQS)
Brain “Hug” Scheduler Specifically for desktops Weighted round-robin where the weights are based on some very complex formulae (see Wikipedia for details) No priority modification for sleep behavior Time slice = 6ms (human perception of jitter ≈ 7ms) Performs slightly better than CFS for <16 cores
https://en.wikipedia.org/wiki/Brain_Fuck_Scheduler https://lwn.net/Articles/720227/
5 University of New Mexico Windows NT through 10
● Multilevel Feedback Queue (MLFQ)
6 University of New Mexico Mac OS X
● XNU is a mix of FreeBSD and Mach – Network, files, processes, POSIX interface, etc. come from FreeBSD – CPU scheduling, memory management, specialized IPC, etc. comes from Mach ● Round-robin and MLFQ schedulers
7 University of New Mexico IOS (i.e., iPhone)
● Same as Mac OS X – MLFQ and round-robin
8 University of New Mexico Android
● Same as Linux – Completely Fair Scheduler
9 University of New Mexico FreeBSD
● https://www.usenix.org/legacy/event/bsdco n03/tech/full_papers/roberson/roberson.pdf ● ULE scheduler ● Looks a lot like Linux’s old O(1) scheduler
10 University of New Mexico Others
● GNU Hurd uses GNU Mach’s scheduler – MLFQ and RR ● Haiku has a simple RR scheduler where the time slice is based on the priority ● Solaris uses MLFQ ● Minix and xv6 - ??? ● Real-time OSes - ??? ● Supercomputers - ???
11