299:. An I/O-bound process is one that spends more of its time doing I/O than it spends doing computations. A CPU-bound process, in contrast, generates I/O requests infrequently, using more of its time doing computations. It is important that a long-term scheduler selects a good process mix of I/O-bound and CPU-bound processes. If all processes are I/O-bound, the ready queue will almost always be empty, and the short-term scheduler will have little to do. On the other hand, if all processes are CPU-bound, the I/O waiting queue will almost always be empty, devices will go unused, and again the system will be unbalanced. The system with the best performance will thus have a combination of CPU-bound and I/O-bound processes. In modern operating systems, this is used to make sure that real-time processes get enough CPU time to finish their tasks.
288:, decides which jobs or processes are to be admitted to the ready queue (in main memory); that is, when an attempt is made to execute a program, its admission to the set of currently executing processes is either authorized or delayed by the long-term scheduler. Thus, this scheduler dictates what processes are to run on a system, the degree of concurrency to be supported at any one time – whether many or few processes are to be executed concurrently, and how the split between I/O-intensive and CPU-intensive processes is to be handled. The long-term scheduler is responsible for controlling the degree of multiprogramming.
1246:
667:
1516:
time quantum, it is given a new priority and put back in the queue. Solaris 9 introduced two new scheduling classes, namely fixed-priority class and fair share class. The threads with fixed priority have the same priority range as that of the time-sharing class, but their priorities are not dynamically adjusted. The fair scheduling class uses CPU
1002:, a combination of fixed-priority preemptive scheduling, round-robin, and first in, first out algorithms. In this system, threads can dynamically increase or decrease in priority depending on if it has been serviced already, or if it has been waiting extensively. Every priority level is represented by its own queue, with
2004:
In an interactive system, turnaround time may not be the best criterion. Often, a process can produce some output fairly early and can continue computing new results while previous results are being output to the user. Thus, another measure is the time from the submission of a request until the first
1203:
OTHER: This policy is defined by POSIX1003.4a as implementation-defined. In AIX Version 4, this policy is defined to be equivalent to RR, except that it applies to threads with non-fixed priority. The recalculation of the running thread's priority value at each clock interrupt means that a thread may
1075:
provided execution of multiple concurrent jobs. Execution was governed by a priority which had a default for each stream or could be requested separately for each job. MFT version II added subtasks (threads), which executed at a priority based on that of the parent job. Each job stream defined the
873:
This is used for situations in which processes are easily divided into different groups. For example, a common division is made between foreground (interactive) processes and background (batch) processes. These two types of processes have different response-time requirements and so may have different
1484:
uses a multilevel feedback queue with priorities ranging from 0–255. 0–63 are reserved for interrupts, 64–127 for the top half of the kernel, 128–159 for real-time user threads, 160–223 for time-shared user threads, and 224–255 for idle user threads. Also, like Linux, it uses the active queue setup,
1146:
Mac OS 9 uses cooperative scheduling for threads, where one process controls multiple cooperative threads, and also provides preemptive scheduling for multiprocessing tasks. The kernel schedules multiprocessing tasks using a preemptive scheduling algorithm. All
Process Manager processes run within a
1124:
priorities and priorities 16 through 31 being soft real-time priorities, requiring privileges to assign. 0 is reserved for the
Operating System. User interfaces and APIs work with priority classes for the process and the threads in the process, which are then combined by the system into the absolute
770:
If a shorter process arrives during another process' execution, the currently running process is interrupted (known as preemption), dividing that process into two separate computing blocks. This creates excess overhead through additional context switching. The scheduler must also place each incoming
1137:
of modern processors to keep track of exactly how many CPU cycles a thread has executed, rather than just using an interval-timer interrupt routine. Vista also uses a priority scheduler for the I/O queue so that disk defragmenters and other such programs do not interfere with foreground operations.
777:
Waiting time and response time increase as the process's computational requirements increase. Since turnaround time is based on waiting time plus processing time, longer processes are significantly affected by this. Overall waiting time is smaller than FIFO, however since no process has to wait for
1515:
uses a multilevel feedback queue with priorities ranging between 0 and 169. Priorities 0–59 are reserved for time-shared threads, 60–99 for system threads, 100–159 for real-time threads, and 160–169 for low priority interrupts. Unlike Linux, when a process is done using its
1113:
used a non-preemptive scheduler, meaning that it did not interrupt programs. It relied on the program to end or tell the OS that it didn't need the processor so that it could move on to another process. This is usually called cooperative multitasking. Windows 95 introduced a rudimentary preemptive
747:
is a dynamic scheduling algorithm used in real-time operating systems to place processes in a priority queue. Whenever a scheduling event occurs (a task finishes, new task is released, etc.), the queue will be searched for the process closest to its deadline, which will be the next to be scheduled
495:
The dispatcher should be as fast as possible since it is invoked during every process switch. During the context switches, the processor is virtually idle for a fraction of time, thus unnecessary context switches should be avoided. The time it takes for the dispatcher to stop one process and start
461:
Another component that is involved in the CPU-scheduling function is the dispatcher, which is the module that gives control of the CPU to the process selected by the short-term scheduler. It receives control in kernel mode as the result of an interrupt or system call. The functions of a dispatcher
1199:
Round Robin: This is similar to the AIX Version 3 scheduler round-robin scheme based on 10 ms time slices. When a RR thread has control at the end of the time slice, it moves to the tail of the queue of dispatchable threads of its priority. Only fixed-priority threads can have a Round Robin
1010:
among the lower-priority ones. In this sense, response time is short for most threads, and short but critical system threads get completed very quickly. Since threads can only use one time unit of the round-robin in the highest-priority queue, starvation can be a problem for longer high-priority
961:
A very common method in embedded systems is to schedule jobs manually. This can for example be done in a time-multiplexed fashion. Sometimes the kernel is divided in three or more parts: Manual scheduling, preemptive and interrupt level. Exact methods for scheduling jobs are often proprietary.
896:
is a scheduler that always tries to keep the scheduled resources busy, if there are submitted jobs ready to be scheduled. In contrast, a non-work conserving scheduler is a scheduler that, in some cases, may leave the scheduled resources idle despite the presence of jobs ready to be scheduled.
1027:
More advanced algorithms take into account process priority, or the importance of the process. This allows some processes to use more time than other processes. The kernel always uses whatever resources it needs to ensure proper functioning of the system, and so can be said to have infinite
1178:
macOS uses a multilevel feedback queue, with four priority bands for threads – normal, system high priority, kernel mode only, and real-time. Threads are scheduled preemptively; macOS also supports cooperatively scheduled threads in its implementation of the Thread
Manager in
1128:
The kernel may change the priority level of a thread depending on its I/O and CPU usage and whether it is interactive (i.e. accepts and responds to input from humans), raising the priority of interactive and I/O bounded processes and lowering that of CPU bound processes, to increase the
555:
and to ensure fairness amongst the parties utilizing the resources. Scheduling deals with the problem of deciding which of the outstanding requests is to be allocated resources. There are many different scheduling algorithms. In this section, we introduce several of them.
422:. Thus the short-term scheduler makes scheduling decisions much more frequently than the long-term or mid-term schedulers – A scheduling decision will at a minimum have to be made after every time slice, and these are very short. This scheduler can be
1212:
AIX 5 implements the following scheduling policies: FIFO, round robin, and a fair round robin. The FIFO policy has three different implementations: FIFO, FIFO2, and FIFO3. The round robin policy is named SCHED_RR in AIX, and the fair round robin is called SCHED_OTHER.
242:
The process scheduler is a part of the operating system that decides which process runs at a certain point in time. It usually has the ability to pause a running process, move it to the back of the running queue and start a new process; such a scheduler is known as a
377:
frequently, or a process that is taking up a large amount of memory in order to free up main memory for other processes, swapping the process back in later when more memory is available, or when the process has been unblocked and is no longer waiting for a resource.
1195:
First In, First Out: Once a thread with this policy is scheduled, it runs to completion unless it is blocked, it voluntarily yields control of the CPU, or a higher-priority thread becomes dispatchable. Only fixed-priority threads can have a FIFO scheduling
1281:
of all ready processes, letting the highest priority processes go first and run through their time slices, after which they will be placed in an expired queue. When the active queue is empty the expired queue will become the active queue and vice versa.
172:
In practice, these goals often conflict (e.g. throughput versus latency), thus a scheduler will implement a suitable compromise. Preference is measured by any one of the concerns mentioned above, depending upon the user's needs and objectives.
802:
The operating system assigns a fixed-priority rank to every process, and the scheduler arranges the processes in the ready queue in order of their priority. Lower-priority processes get interrupted by incoming higher-priority processes.
766:(SJF). With this strategy the scheduler arranges processes with the least estimated processing time remaining to be next in the queue. This requires advanced knowledge or estimations about the time required for a process to complete.
381:
In many systems today (those that support mapping virtual address space to secondary storage other than the swap file), the medium-term scheduler may actually perform the role of the long-term scheduler, by treating binaries as
1023:
in which each process is given equal time (for instance 1 ms, usually between 1 ms and 100 ms) in a cycling list. So, process A executes for 1 ms, then process B, then process C, then back to process A.
813:
If the number of rankings is limited, it can be characterized as a collection of FIFO queues, one for each priority ranking. Processes in lower-priority queues are selected only when all of the higher-priority queues are
838:
The scheduler assigns a fixed time unit per process, and cycles through them. If process completes within that time-slice it gets terminated otherwise it is rescheduled after giving a chance to all other processes.
1208:
Threads are primarily of interest for applications that currently consist of several asynchronous processes. These applications might impose a lighter load on the system if converted to a multithreaded structure.
333:
Some operating systems only allow new tasks to be added if it is sure all real-time deadlines can still be met. The specific heuristic algorithm used by an operating system to accept or reject new tasks is the
222:
The scheduler is an operating system module that selects the next jobs to be admitted into the system and the next process to run. Operating systems may feature up to three distinct scheduler types: a
719:
The lack of prioritization means that as long as every process eventually completes, there is no starvation. In an environment where some processes might not complete, there can be starvation.
1520:
to prioritize threads for scheduling decisions. CPU shares indicate the entitlement to CPU resources. They are allocated to a set of processes, which are collectively known as a project.
161:(time from work becoming ready until it is finished in case of batch activity, or until the system responds and hands the first output to the user in case of interactive activity);
1496:
uses a multilevel feedback queue with priorities ranging from 0–223. 0–63 are reserved for time-shared threads (default, SCHED_OTHER policy), 64–95 for user threads which entered
1277:
task levels. For real-time tasks, the time quantum for switching processes was approximately 200 ms, and for nice tasks approximately 10 ms. The scheduler ran through the
2674:
1621:
1466:
987:
When designing an operating system, a programmer must consider which scheduling algorithm will perform best for the use the system is going to see. There is no universal
1440:
1397:
2922:
2641:
426:, implying that it is capable of forcibly removing processes from a CPU when it decides to allocate that CPU to another process, or non-preemptive (also known as
1036:
is considered to increase overall system performance, even if it may cause a process itself to run more slowly. This generally improves performance by reducing
373:). The medium-term scheduler may decide to swap out a process that has not been active for some time, a process that has a low priority, a process that is
2869:
2588:
2275:
2234:
846:
Balanced throughput between FCFS/FIFO and SJF/SRTF, shorter jobs are completed faster than in FIFO and longer processes are completed faster than in SJF.
689:(FCFS), is the simplest scheduling algorithm. FIFO simply queues processes in the order that they arrive in the ready queue. This is commonly used for a
520:) is an algorithm used for distributing resources among parties which simultaneously and asynchronously request them. Scheduling disciplines are used in
704:
Throughput can be low, because long processes can be holding the CPU, causing the short processes to wait for a long time (known as the convoy effect).
3396:
1052:
was available with three different schedulers. The differences were such that the variants were often considered three different operating systems:
701:
Since context switches only occur upon process termination, and no reorganization of the process queue is required, scheduling overhead is minimal.
2300:
2005:
response is produced. This measure, called response time, is the time it takes to start responding, not the time it takes to output the response.
1890:
We define the response time of a request for a certain task to be the time span between the request and the end of the response to that request.
2749:
1120:-based operating systems use a multilevel feedback queue. 32 priority levels are defined, 0 through to 31, with priorities 0 through 15 being
3198:
3169:
2684:
2079:
797:
855:
Starvation can never occur, since no priority is given. Order of time unit allocation is based upon process arrival time, similar to FIFO.
330:
software is typically used to assist these functions, in addition to any underlying admission scheduling support in the operating system.
817:
Waiting time and response time depend on the priority of the process. Higher-priority processes have smaller waiting and response times.
2475:
905:
There are several scheduling problems in which the goal is to decide which job goes to which station at what time, such that the total
326:
of interacting processes is often required to prevent them from blocking due to waiting on each other. In these cases, special-purpose
3921:
2669:
2634:
2578:
2128:
1997:
732:
86:
781:
No particular attention is given to deadlines, the programmer can only attempt to make processes with deadlines as short as possible.
4044:
3946:
2699:
2533:
2512:
1947:
1828:
1773:
3719:
1273:
with priority levels ranging from 0 to 140 was used; 0–99 are reserved for real-time tasks and 100–140 are considered
2973:
2917:
1007:
682:
661:
575:
1204:
lose control because its priority value has risen above that of another dispatchable thread. This is the AIX Version 3 behavior.
196:; this is crucial for keeping the system stable. Scheduled tasks can also be distributed to remote devices across a network and
4029:
3894:
3518:
2892:
2862:
2764:
2614:
2095:
3702:
3612:
3085:
2983:
1917:
1793:
1298:
168:(equal CPU time to each process, or more generally appropriate times according to the priority and workload of each process).
3742:
1097:
feature to the scheduler, which schedules processor resources according to an elaborate scheme defined by the installation.
3712:
3707:
1167:
that schedules that process's threads cooperatively; a thread yields control of the processor to another thread by calling
3389:
3363:
2912:
2897:
2836:
2724:
2664:
2627:
1250:
738:
649:
598:
4034:
2958:
2943:
2902:
1290:
594:
3987:
3825:
3124:
3071:
2704:
1798:
1783:
1334:
823:
Starvation of lower-priority processes is possible with large numbers of high-priority processes queuing for CPU time.
442:
35:
1500:, 96-128 for kernel threads, 128–191 for user real-time threads (SCHED_FIFO and SCHED_RR policies), and 192–223 for
3602:
3139:
2978:
2855:
2120:
1763:
1688:
1512:
1321:
developed patch sets which improved interactivity with this scheduler or even replaced it with his own schedulers.
924:
identical stations. Each job should be executed on a single machine. This is usually regarded as an online problem.
641:
633:
252:
157:
97:
2046:
991:
scheduling algorithm, and many operating systems use extended or combinations of the scheduling algorithms above.
3810:
3805:
3632:
3174:
2993:
2953:
2948:
2907:
2790:
2729:
2714:
1924:
For a customer requiring x sec of service, his response time will equal his service time x plus his waiting time.
1823:
1748:
1696:
1681:
1666:
1608:
1582:
1566:
1338:
1270:
1239:
1029:
999:
893:
887:
713:, waiting time and response time depend on the order of their arrival and can be high for the same reasons above.
625:
533:
78:
2161:
485:
that was previously running; the dispatcher then loads the initial or previously saved state of the new process.
386:
upon their execution. In this way, when a segment of the binary is required it can be swapped in on demand, or
3850:
3815:
3782:
3432:
3382:
3217:
3104:
2968:
2719:
1245:
567:
470:
3647:
2298:
2204:
849:
Good average response time, waiting time is dependent on number of processes, and not average process length.
3752:
3724:
3662:
3627:
3563:
3405:
2963:
2744:
1087:, featured subtasks from the start; each job requested the priority and memory it required before execution.
757:
116:
66:
62:
3729:
3657:
3607:
3442:
3351:
3290:
3179:
3108:
3066:
2734:
1551:
1249:
A highly simplified structure of the Linux kernel, which includes process schedulers, I/O schedulers, and
1227:
1152:
1020:
1003:
833:
582:
423:
245:
2558:
by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Arpaci-Dusseau Books, 2014. Relevant chapters:
2143:
1942:. Cambridge University Press. Section 8.4 (Page 422) in Version 1.03 of the freely available manuscript.
4008:
3911:
3757:
3737:
3682:
3134:
3100:
3002:
2938:
2689:
2679:
1838:
1833:
1788:
1711:
1638:
1330:
1049:
606:
151:
112:
2251:
1156:
2609:
491:
Jumping to the proper location in the user program to restart that program indicated by its new state.
3820:
3777:
3772:
3762:
3672:
3331:
3305:
2785:
2759:
2067:
1454:
941:
927:
319:
142:
1164:
410:) decides which of the ready, in-memory processes is to be executed (allocated a CPU) after a clock
3860:
3845:
3840:
3697:
3582:
3528:
3300:
3252:
3129:
2322:
1286:
913:
552:
537:
478:
474:
177:
82:
1447:
1317:
and many other kernel developers during the Linux 2.5 development. For many kernel in time frame,
3982:
3961:
3870:
3767:
3617:
3510:
3462:
3424:
3237:
3144:
2831:
2709:
1881:
1808:
1803:
1768:
1407:. Choosing a task can be done in constant time, but reinserting a task after it has run requires
1134:
1033:
763:
674:(green boxes) with a queue (FIFO) of waiting tasks (blue) and a queue of completed tasks (yellow)
602:
521:
482:
419:
101:
1155:
algorithm; a process yields control of the processor to another process by explicitly calling a
1114:
scheduler; however, for legacy support opted to let 16-bit applications run without preemption.
2018:
1410:
1367:
952:
different stations. Each job should spend some time at each station, in a pre-determined order.
4039:
3652:
3495:
3485:
3480:
3452:
3447:
3346:
3295:
3227:
3184:
3025:
2754:
2739:
2565:
2529:
2508:
2370:"Efficient and Scalable Multiprocessor Fair Scheduling Using Distributed Weighted Round-Robin"
2228:
2124:
2075:
1993:
1943:
1913:
1361:
1346:
1109:
and
Microsoft Windows systems were non-multitasking, and as such did not feature a scheduler.
563:
446:
350:
temporarily removes processes from main memory and places them in secondary memory (such as a
209:
197:
185:
31:
2599:
2179:
1909:
1903:
3951:
3692:
3637:
3558:
3548:
3538:
3533:
3326:
2878:
2573:
2568:
2482:
1871:
1778:
1345:, crediting Kolivas in his announcement. CFS is the first implementation of a fair queuing
1093:
868:
525:
307:
303:
2562:
3941:
3887:
3865:
3642:
3597:
3568:
3543:
3523:
3470:
3437:
3413:
3270:
3232:
3203:
2694:
2304:
2147:
1037:
710:
560:
351:
181:
108:
2593:
2542:
784:
Starvation is possible, especially in a busy system with many small processes being run.
3926:
3787:
3490:
3475:
3356:
3280:
3242:
3114:
2805:
2800:
2795:
2422:
2396:
2346:
2042:
1818:
1813:
1629:
1595:
1357:
1342:
1310:
1294:
1266:
858:
If Time-Slice is large it becomes FCFS/FIFO or if it is short then it becomes SJF/SRTF.
541:
466:
213:
70:
2559:
100:), allow multiple users to share system resources effectively, or to achieve a target
4023:
3747:
3592:
3553:
3500:
3222:
3061:
3015:
2769:
2523:
2423:"EEVDF Scheduler Merged For Linux 6.6, Intel Hybrid Cluster Scheduling Re-Introduced"
1885:
1301:
in his Linux 2.4-ac Kernel series) to the Linux 2.4 kernel used by the distribution.
1130:
938:
different stations. Each job should spend some time at each station, in a free order.
875:
707:
No starvation, because each process gets chance to be executed after a definite time.
545:
391:
327:
311:
234:. The names suggest the relative frequency with which their functions are performed.
217:
2351:"[patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]"
4003:
3966:
3855:
3830:
3622:
3149:
2815:
2112:
1703:
1573:
1497:
1353:
1180:
1110:
637:
590:
586:
323:
716:
No prioritization occurs, thus this system has trouble meeting process deadlines.
96:. Schedulers are often designed so as to keep all computer resources busy (as in
3956:
3931:
3916:
3835:
3667:
3275:
3257:
3040:
3030:
3020:
1734:
Preemptive scheduler for 32-bit processes, and cooperative for 16-bit processes
1318:
1314:
1274:
671:
450:
415:
315:
2603:
1191:
In AIX Version 4 there are three possible values for thread scheduling policy:
2810:
1739:
1726:
1722:
1718:
1117:
995:
787:
To use this policy we should have at least two processes of different priority
629:
374:
193:
133:
107:
Scheduling is fundamental to computation itself, and an intrinsic part of the
17:
1653:
Preemptive scheduler for MP tasks, and cooperative for processes and threads
843:
RR scheduling involves extensive overhead, especially with a small time unit.
810:
FPPS has no particular advantage in terms of throughput over FIFO scheduling.
3936:
3212:
3119:
3045:
3010:
2369:
1860:"Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment"
1501:
1443:
1404:
1360:. Fair queuing had been previously applied to CPU scheduling under the name
1278:
852:
Because of high waiting times, deadlines are rarely met in a pure RR system.
411:
296:
292:
42:
3374:
2503:
BĹ‚aĹĽewicz, Jacek; Ecker, K.H.; Pesch, E.; Schmidt, G.; Weglarz, J. (2001).
30:
This article is about scheduling of computing resources. For networks, see
2555:
1876:
1859:
1129:
responsiveness of interactive applications. The scheduler was modified in
820:
Deadlines can be met by giving processes with deadlines a higher priority.
146:(time from work becoming ready until the first point it begins execution);
111:
of a computer system; the concept of scheduling makes it possible to have
3341:
2401:
1645:
1542:
969:
Very high predictability; allows implementation of hard real-time systems
906:
771:
process into a specific place in the queue, creating additional overhead.
529:
189:
2598:
Peter
Brucker, Sigrid Knust. Complexity results for scheduling problems
2594:
Josh Aas' introduction to the Linux 2.6.8.1 CPU scheduler implementation
1937:
666:
3336:
3265:
3035:
2619:
2451:
1558:
1481:
1076:
maximum amount of memory which could be used by any job in that stream.
302:
Long-term scheduling is also important in large-scale systems such as
2165:
1673:
1493:
1106:
364:
2847:
2096:"Admission Control for Independently-authored Realtime Applications"
774:
This algorithm is designed for maximum throughput in most scenarios.
2446:
2350:
2099:
640:, the scheduling is combined by channel-dependent packet-by-packet
3285:
2583:
2212:
1658:
1469:(EEVDF) process scheduler. The aim was to remove the need for CFS
1262:
1244:
645:
613:
226:(also known as an admission scheduler or high-level scheduler), a
2180:"Windows Administration: Inside the Windows Vista Kernel: Part 1"
1364:. The fair queuing CFS scheduler has a scheduling complexity of
1352:
The CFS uses a well-studied, classic scheduling algorithm called
617:
3378:
2851:
2623:
1988:
Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2012).
3321:
2579:
Understanding the Linux Kernel: Chapter 10 Process
Scheduling
1939:
Workload
Modeling for Computer Systems Performance Evaluation
1457:, also created by Con Kolivas, is an alternative to the CFS.
1329:
Con
Kolivas' work, most significantly his implementation of
978:
Effectiveness is completely dependent on the implementation
551:
The main purposes of scheduling algorithms are to minimize
92:
The scheduling activity is carried out by a process called
192:), the scheduler also must ensure that processes can meet
2397:"EEVDF Scheduler May Be Ready For Landing With Linux 6.6"
1064:
provided sequential execution of a single stream of jobs.
1960:
if we denote the time that a job waits in the queue by t
636:
may be increased. In even more advanced systems such as
1465:
In 2023, Peter
Zijlstra proposed replacing CFS with an
1151:. Those processes are scheduled cooperatively, using a
127:
A scheduler may aim at one or more goals, for example:
1085:
Multiprogramming with a
Variable Number of Tasks (MVT)
291:
In general, most processes can be described as either
1413:
1370:
605:
is offered, as opposed to best-effort communication,
2470:
2468:
2447:"An EEVDF CPU scheduler for Linux [LWN.net]"
2162:"A Tale of Two Schedulers Windows NT and Windows CE"
652:
components to the users that best can utilize them.
3996:
3975:
3904:
3879:
3796:
3681:
3581:
3509:
3461:
3423:
3412:
3314:
3251:
3197:
3158:
3093:
3084:
3054:
3001:
2992:
2931:
2885:
2824:
2778:
2657:
2476:"Comparison of Solaris, Linux, and FreeBSD Kernels"
1622:
Earliest eligible virtual deadline first scheduling
1467:
earliest eligible virtual deadline first scheduling
1349:widely used in a general-purpose operating system.
1238:Linux 2.2 added scheduling classes and support for
1073:
Multiprogramming with a Fixed Number of Tasks (MFT)
612:In advanced packet radio wireless networks such as
581:The simplest best-effort scheduling algorithms are
137:(the total amount of work completed per time unit);
2615:Large-scale cluster management at Google with Borg
1434:
1391:
1015:Operating system process scheduler implementations
354:) or vice versa, which is commonly referred to as
2525:Operating Systems Internals and Design Principles
2606:is a toolbox of scheduling and graph algorithms.
2323:"Inside the Linux 2.6 Completely Fair Scheduler"
2252:"Technical Note TN2028: Threading Architectures"
2115:; Jens Zander; Ki Won Sung; Ben Slimane (2016).
1309:In versions 2.6.0 to 2.6.22, the kernel used an
628:. If the channel conditions are favourable, the
2610:A survey on cellular networks packet scheduling
2505:Scheduling computer and manufacturing processes
1905:Queueing Systems, Vol. 2: Computer Applications
1293:replaced this scheduler with a backport of the
807:Overhead is not minimal, nor is it significant.
2246:
2244:
1858:C. L., Liu; James W., Layland (January 1973).
1091:Later virtual storage versions of MVS added a
697:, for example as illustrated in this section.
3390:
2863:
2635:
2574:Brief discussion of Job Scheduling algorithms
1992:(9 ed.). Wiley Publishing. p. 187.
8:
1337:(RSDL), inspired Ingo Molnár to develop the
434:), in which case the scheduler is unable to
2584:Kerneltrap: Linux kernel scheduler articles
2543:Information on the Linux 2.6 O(1)-scheduler
2074:. Vol. 9. John Wiley & Sons, Inc.
2019:"Process Scheduling: Who gets to run next?"
1742:(including 2000, XP, Vista, 7, and Server)
272:based on how often decisions must be made.
3420:
3397:
3383:
3375:
3090:
2998:
2870:
2856:
2848:
2642:
2628:
2620:
1908:(1 ed.). Wiley-Interscience. p.
1527:
2102:. Section "2.6 Admission Control". p. 33.
1875:
1412:
1369:
1147:special multiprocessing task, called the
524:(to handle packet traffic) as well as in
2675:Earliest eligible virtual deadline first
2070:; Peter Baer Galvin; Greg Gagne (2013).
2062:
2060:
2058:
874:scheduling needs. It is very useful for
665:
453:and implements the scheduling function.
2276:"Mach Scheduling and Thread Interfaces"
1850:
1341:(CFS) as a replacement for the earlier
1163:. Each process has its own copy of the
1019:The algorithm used may be as simple as
975:May not be optimal for all applications
778:the termination of the longest process.
2750:Statistical time-division multiplexing
2233:: CS1 maint: archived copy as title (
2226:
2045:(1988). "Chapter 2: Time Management".
2604:TORSCHE Scheduling Toolbox for Matlab
2368:Tong Li; Dan Baumberger; Scott Hahn.
2316:
2314:
2312:
798:Fixed-priority pre-emptive scheduling
792:Fixed-priority pre-emptive scheduling
441:A preemptive scheduler relies upon a
7:
2556:Operating Systems: Three Easy Pieces
2117:Fundamentals of Mobile Data Networks
1964:, and the time it actually runs by t
1006:among the high-priority threads and
616:(High-Speed Downlink Packet Access)
469:, in which the dispatcher saves the
204:Types of operating system schedulers
200:through an administrative back end.
2528:(fourth ed.). Prentice Hall.
733:Earliest deadline first scheduling
601:. If differentiated or guaranteed
25:
2700:Generalized foreground-background
2507:(2 ed.). Berlin : Springer.
1968:, then the response time is r = t
1829:Scheduling (production processes)
1774:Automated planning and scheduling
743:Earliest deadline first (EDF) or
624:may be used to take advantage of
414:, an I/O interrupt, an operating
228:mid-term or medium-term scheduler
2974:Object-oriented operating system
2100:http://hdl.handle.net/10012/1170
2017:Paul Krzyzanowski (2014-02-19).
1589:Linux kernel 2.6.0–2.6.23
901:Scheduling optimization problems
662:FIFO (computing and electronics)
27:Method by which work is assigned
3895:Enterprise Integration Patterns
2048:An Operating Systems Vade Mecum
1485:but it also has an idle queue.
983:Choosing a scheduling algorithm
966:No resource starvation problems
548:), most embedded systems, etc.
2984:Supercomputer operating system
1794:Interruptible operating system
1429:
1417:
1403:is the number of tasks in the
1386:
1374:
1:
2589:AIX CPU monitoring and tuning
2566:Proportional-share Scheduling
1069:Multiple Sequential Scheduler
1062:Primary Control Program (PCP)
944: – there are
930: – there are
916: – there are
752:Shortest remaining time first
739:Deadline-monotonic scheduling
650:frequency-domain equalization
574:is used as an alternative to
2959:Just enough operating system
2944:Distributed operating system
2051:. Prentice Hall. p. 27.
1291:SUSE Linux Enterprise Server
1081:Multiple Priority Schedulers
622:channel-dependent scheduling
595:proportional-fair scheduling
3988:Portland Pattern Repository
3072:User space and kernel space
2705:Highest response ratio next
2522:Stallings, William (2004).
1936:Feitelson, Dror G. (2015).
1902:Kleinrock, Leonard (1976).
1799:Least slack time scheduling
1784:Dynamic priority scheduling
1615:Linux kernel 6.6 and later
1335:Rotating Staircase Deadline
1305:Linux 2.6.0 to Linux 2.6.22
1058:Single Sequential Scheduler
863:Multilevel queue scheduling
443:programmable interval timer
336:admission control mechanism
49:is the action of assigning
36:Scheduling (disambiguation)
4061:
2979:Real-time operating system
2685:Fixed-priority pre-emptive
2563:Multi-level Feedback Queue
2121:Cambridge University Press
1764:Activity selection problem
1602:Linux kernel after 2.6.23
1060:option, also known as the
885:
882:Work-conserving schedulers
866:
831:
795:
755:
736:
730:
659:
642:dynamic channel allocation
634:system spectral efficiency
207:
29:
3175:Multilevel feedback queue
3170:Fixed-priority preemptive
2954:Hobbyist operating system
2949:Embedded operating system
2715:Multilevel feedback queue
2569:Multiprocessor Scheduling
2321:Jones, M. (2018-09-18) .
2072:Operating System Concepts
1990:Operating System Concepts
1824:Rate-monotonic scheduling
1749:Multilevel feedback queue
1697:Multilevel feedback queue
1682:Multilevel feedback queue
1667:Multilevel feedback queue
1609:Completely Fair Scheduler
1583:Multilevel feedback queue
1567:Multilevel feedback queue
1435:{\displaystyle O(\log N)}
1392:{\displaystyle O(\log N)}
1339:Completely Fair Scheduler
1325:Linux 2.6.23 to Linux 6.5
1297:(which was maintained by
1285:However, some enterprise
1271:multilevel feedback queue
1240:symmetric multiprocessing
1000:multilevel feedback queue
894:work-conserving scheduler
888:Work-conserving scheduler
626:channel state information
578:queuing of data packets.
188:in industry (for example
4045:Software design patterns
3613:Event-based asynchronous
3406:Software design patterns
3218:General protection fault
2969:Network operating system
2923:User features comparison
2720:Process Contention Scope
2560:Scheduling: Introduction
1442:operations, because the
1356:originally invented for
1142:Classic Mac OS and macOS
687:first come, first served
656:First come, first served
648:multi-carriers or other
568:statistical multiplexing
496:another is known as the
3519:Chain of responsibility
2964:Mobile operating system
2745:Shortest remaining time
2094:Robert Kroeger (2004).
758:Shortest remaining time
722:It is based on queuing.
593:scheduling algorithm),
576:first-come first-served
488:Switching to user mode.
462:involve the following:
438:processes off the CPU.
260:We distinguish between
117:central processing unit
4030:Scheduling (computing)
3658:Scheduled-task pattern
3608:Double-checked locking
3067:Loadable kernel module
1552:round-robin scheduling
1436:
1393:
1253:
1228:round-robin scheduling
1153:round-robin scheduling
1135:cycle counter register
1004:round-robin scheduling
834:Round-robin scheduling
828:Round-robin scheduling
675:
504:Scheduling disciplines
342:Medium-term scheduling
266:medium-term scheduling
180:environments, such as
34:. For other uses, see
4009:Architectural pattern
3912:Christopher Alexander
3135:Process control block
3101:Computer multitasking
2939:Disk operating system
2690:Foreground-background
2184:Technet.microsoft.com
1877:10.1145/321738.321743
1839:Time-utility function
1834:Stochastic scheduling
1789:Foreground-background
1712:Cooperative scheduler
1639:Cooperative scheduler
1437:
1394:
1248:
1044:OS/360 and successors
669:
607:weighted fair queuing
510:scheduling discipline
398:Short-term scheduling
384:swapped-out processes
362:(also incorrectly as
348:medium-term scheduler
270:short-term scheduling
113:computer multitasking
3821:Dependency injection
3778:Inversion of control
3773:Data transfer object
3673:Thread-local storage
3306:Virtual tape library
2898:Forensic engineering
2651:Processor scheduling
2150: (archive index)
2068:Abraham Silberschatz
1455:Brain Fuck Scheduler
1446:is implemented as a
1411:
1368:
942:Flow-shop scheduling
928:Open-shop scheduling
572:scheduling algorithm
518:scheduling algorithm
404:short-term scheduler
276:Long-term scheduling
262:long-term scheduling
250:, otherwise it is a
232:short-term scheduler
4035:Operations research
3826:Intercepting filter
3315:Supporting concepts
3301:Virtual file system
2280:developer.apple.com
2256:developer.apple.com
2215:on 19 February 2008
1502:software interrupts
1287:Linux distributions
914:Job-shop scheduling
727:Priority scheduling
679:First in, first out
553:resource starvation
418:or another form of
406:(also known as the
286:admission scheduler
282:long-term scheduler
224:long-term scheduler
3983:The Hillside Group
3768:Data access object
3618:Guarded suspension
3603:Binding properties
3238:Segmentation fault
3086:Process management
2832:Processor affinity
2725:Proportional share
2665:Deadline-monotonic
2488:on August 7, 2008.
2303:2011-08-11 at the
2209:blog.gabefrost.com
1864:Journal of the ACM
1809:Priority inversion
1804:Lottery scheduling
1769:Aging (scheduling)
1432:
1389:
1254:
1200:scheduling policy.
1034:processor affinity
972:Almost no overhead
764:shortest job first
676:
644:, or by assigning
603:quality of service
599:maximum throughput
570:, the notion of a
320:concurrent systems
318:. For example, in
102:quality-of-service
4017:
4016:
3811:Business delegate
3743:Publish–subscribe
3577:
3576:
3372:
3371:
3228:Memory protection
3199:Memory management
3193:
3192:
3185:Shortest job next
3080:
3079:
2879:Operating systems
2845:
2844:
2740:Shortest job next
2670:Earliest deadline
2327:developer.ibm.com
2168:on July 22, 2012.
2160:Sriram Krishnan.
2081:978-1-118-06333-0
1870:(1). ACM: 46–61.
1754:
1753:
1531:Operating System
1362:stride scheduling
1347:process scheduler
1251:packet schedulers
1226:Linux 1.2 used a
1157:blocking function
1071:option, known as
998:/XP/Vista uses a
957:Manual scheduling
685:), also known as
620:cellular system,
609:may be utilized.
564:computer networks
526:operating systems
514:scheduling policy
447:interrupt handler
445:which invokes an
308:computer clusters
238:Process scheduler
210:Network scheduler
186:automatic control
32:Network scheduler
16:(Redirected from
4052:
3816:Composite entity
3693:Front controller
3433:Abstract factory
3421:
3399:
3392:
3385:
3376:
3327:Computer network
3091:
2999:
2872:
2865:
2858:
2849:
2644:
2637:
2630:
2621:
2539:
2518:
2490:
2489:
2487:
2481:. Archived from
2480:
2472:
2463:
2462:
2460:
2459:
2443:
2437:
2436:
2434:
2433:
2427:www.phoronix.com
2419:
2413:
2412:
2410:
2409:
2393:
2387:
2386:
2384:
2383:
2374:
2365:
2359:
2358:
2343:
2337:
2336:
2334:
2333:
2318:
2307:
2296:
2290:
2289:
2287:
2286:
2272:
2266:
2265:
2263:
2262:
2248:
2239:
2238:
2232:
2224:
2222:
2220:
2211:. Archived from
2201:
2195:
2194:
2192:
2191:
2176:
2170:
2169:
2164:. Archived from
2157:
2151:
2141:
2135:
2134:
2109:
2103:
2092:
2086:
2085:
2064:
2053:
2052:
2039:
2033:
2032:
2030:
2029:
2014:
2008:
2007:
1985:
1979:
1978:
1957:
1956:
1933:
1927:
1926:
1899:
1893:
1892:
1879:
1855:
1779:Cyclic executive
1528:
1441:
1439:
1438:
1433:
1402:
1398:
1396:
1395:
1390:
1174:
1170:
1169:YieldToAnyThread
1162:
1125:priority level.
1094:Workload Manager
951:
947:
937:
933:
923:
919:
869:Multilevel queue
745:least time to go
695:
694:
540:), disk drives (
498:dispatch latency
467:Context switches
304:batch processing
182:embedded systems
21:
4060:
4059:
4055:
4054:
4053:
4051:
4050:
4049:
4020:
4019:
4018:
4013:
3992:
3971:
3962:Douglas Schmidt
3942:Ward Cunningham
3900:
3888:Design Patterns
3875:
3866:Method chaining
3798:
3792:
3753:Service locator
3684:
3677:
3648:Read–write lock
3584:
3573:
3564:Template method
3505:
3457:
3415:
3408:
3403:
3373:
3368:
3310:
3271:Defragmentation
3256:
3247:
3233:Protection ring
3202:
3189:
3161:
3154:
3076:
3050:
2988:
2927:
2881:
2876:
2846:
2841:
2820:
2791:Completely Fair
2774:
2653:
2648:
2552:
2550:Further reading
2547:
2536:
2521:
2515:
2502:
2498:
2493:
2485:
2478:
2474:
2473:
2466:
2457:
2455:
2445:
2444:
2440:
2431:
2429:
2421:
2420:
2416:
2407:
2405:
2395:
2394:
2390:
2381:
2379:
2372:
2367:
2366:
2362:
2357:(Mailing list).
2345:
2344:
2340:
2331:
2329:
2320:
2319:
2310:
2305:Wayback Machine
2297:
2293:
2284:
2282:
2274:
2273:
2269:
2260:
2258:
2250:
2249:
2242:
2225:
2218:
2216:
2205:"Archived copy"
2203:
2202:
2198:
2189:
2187:
2178:
2177:
2173:
2159:
2158:
2154:
2148:Wayback Machine
2142:
2138:
2131:
2111:
2110:
2106:
2093:
2089:
2082:
2066:
2065:
2056:
2041:
2040:
2036:
2027:
2025:
2016:
2015:
2011:
2000:
1987:
1986:
1982:
1975:
1971:
1967:
1963:
1954:
1952:
1950:
1935:
1934:
1930:
1920:
1901:
1900:
1896:
1857:
1856:
1852:
1848:
1843:
1759:
1526:
1510:
1491:
1479:
1463:
1409:
1408:
1400:
1366:
1365:
1358:packet networks
1331:fair scheduling
1327:
1307:
1259:
1236:
1224:
1219:
1189:
1172:
1168:
1160:
1144:
1103:
1046:
1038:cache thrashing
1017:
985:
959:
949:
945:
935:
931:
921:
917:
903:
890:
884:
871:
865:
836:
830:
800:
794:
760:
754:
748:for execution.
741:
735:
729:
711:Turnaround time
692:
691:
664:
658:
561:packet-switched
506:
473:(also known as
459:
400:
352:hard disk drive
344:
278:
240:
220:
206:
125:
109:execution model
71:expansion cards
39:
28:
23:
22:
15:
12:
11:
5:
4058:
4056:
4048:
4047:
4042:
4037:
4032:
4022:
4021:
4015:
4014:
4012:
4011:
4006:
4000:
3998:
3994:
3993:
3991:
3990:
3985:
3979:
3977:
3973:
3972:
3970:
3969:
3964:
3959:
3954:
3949:
3944:
3939:
3934:
3929:
3927:John Vlissides
3924:
3919:
3914:
3908:
3906:
3902:
3901:
3899:
3898:
3891:
3883:
3881:
3877:
3876:
3874:
3873:
3868:
3863:
3858:
3853:
3848:
3843:
3838:
3833:
3828:
3823:
3818:
3813:
3808:
3802:
3800:
3794:
3793:
3791:
3790:
3785:
3780:
3775:
3770:
3765:
3760:
3755:
3750:
3745:
3740:
3735:
3727:
3722:
3717:
3716:
3715:
3710:
3700:
3695:
3689:
3687:
3679:
3678:
3676:
3675:
3670:
3665:
3660:
3655:
3650:
3645:
3640:
3635:
3630:
3625:
3620:
3615:
3610:
3605:
3600:
3595:
3589:
3587:
3579:
3578:
3575:
3574:
3572:
3571:
3566:
3561:
3556:
3551:
3546:
3541:
3536:
3531:
3526:
3521:
3515:
3513:
3507:
3506:
3504:
3503:
3498:
3493:
3488:
3483:
3478:
3473:
3467:
3465:
3459:
3458:
3456:
3455:
3450:
3445:
3443:Factory method
3440:
3435:
3429:
3427:
3418:
3410:
3409:
3404:
3402:
3401:
3394:
3387:
3379:
3370:
3369:
3367:
3366:
3361:
3360:
3359:
3357:User interface
3354:
3344:
3339:
3334:
3329:
3324:
3318:
3316:
3312:
3311:
3309:
3308:
3303:
3298:
3293:
3288:
3283:
3281:File attribute
3278:
3273:
3268:
3262:
3260:
3249:
3248:
3246:
3245:
3243:Virtual memory
3240:
3235:
3230:
3225:
3220:
3215:
3209:
3207:
3195:
3194:
3191:
3190:
3188:
3187:
3182:
3177:
3172:
3166:
3164:
3156:
3155:
3153:
3152:
3147:
3142:
3137:
3132:
3127:
3122:
3117:
3115:Context switch
3112:
3097:
3095:
3088:
3082:
3081:
3078:
3077:
3075:
3074:
3069:
3064:
3058:
3056:
3052:
3051:
3049:
3048:
3043:
3038:
3033:
3028:
3023:
3018:
3013:
3007:
3005:
2996:
2990:
2989:
2987:
2986:
2981:
2976:
2971:
2966:
2961:
2956:
2951:
2946:
2941:
2935:
2933:
2929:
2928:
2926:
2925:
2920:
2915:
2910:
2905:
2900:
2895:
2889:
2887:
2883:
2882:
2877:
2875:
2874:
2867:
2860:
2852:
2843:
2842:
2840:
2839:
2834:
2828:
2826:
2822:
2821:
2819:
2818:
2813:
2808:
2806:SCHED DEADLINE
2803:
2798:
2793:
2788:
2782:
2780:
2776:
2775:
2773:
2772:
2767:
2762:
2757:
2752:
2747:
2742:
2737:
2732:
2730:Rate-monotonic
2727:
2722:
2717:
2712:
2707:
2702:
2697:
2692:
2687:
2682:
2677:
2672:
2667:
2661:
2659:
2655:
2654:
2649:
2647:
2646:
2639:
2632:
2624:
2618:
2617:
2612:
2607:
2601:
2596:
2591:
2586:
2581:
2576:
2571:
2551:
2548:
2546:
2545:
2540:
2534:
2519:
2513:
2499:
2497:
2494:
2492:
2491:
2464:
2438:
2414:
2388:
2360:
2349:(2007-04-13).
2338:
2308:
2291:
2267:
2240:
2196:
2171:
2152:
2136:
2130:978-1107143210
2129:
2104:
2087:
2080:
2054:
2043:Raphael Finkel
2034:
2023:cs.rutgers.edu
2009:
1999:978-0470128725
1998:
1980:
1973:
1969:
1965:
1961:
1948:
1928:
1918:
1894:
1849:
1847:
1844:
1842:
1841:
1836:
1831:
1826:
1821:
1819:Queuing theory
1816:
1814:Process states
1811:
1806:
1801:
1796:
1791:
1786:
1781:
1776:
1771:
1766:
1760:
1758:
1755:
1752:
1751:
1746:
1743:
1736:
1735:
1732:
1729:
1715:
1714:
1709:
1706:
1700:
1699:
1694:
1691:
1685:
1684:
1679:
1676:
1670:
1669:
1664:
1661:
1655:
1654:
1651:
1648:
1642:
1641:
1636:
1633:
1630:classic Mac OS
1626:
1625:
1619:
1616:
1612:
1611:
1606:
1603:
1599:
1598:
1596:O(1) scheduler
1593:
1590:
1586:
1585:
1580:
1577:
1570:
1569:
1564:
1561:
1555:
1554:
1548:
1545:
1539:
1538:
1535:
1532:
1525:
1522:
1509:
1506:
1490:
1487:
1478:
1475:
1462:
1459:
1448:red–black tree
1431:
1428:
1425:
1422:
1419:
1416:
1388:
1385:
1382:
1379:
1376:
1373:
1343:O(1) scheduler
1326:
1323:
1311:O(1) scheduler
1306:
1303:
1295:O(1) scheduler
1267:O(n) scheduler
1258:
1255:
1235:
1232:
1223:
1220:
1218:
1215:
1206:
1205:
1201:
1197:
1188:
1185:
1165:Thread Manager
1143:
1140:
1102:
1099:
1089:
1088:
1077:
1065:
1045:
1042:
1016:
1013:
984:
981:
980:
979:
976:
973:
970:
967:
958:
955:
954:
953:
939:
925:
909:is minimized:
902:
899:
886:Main article:
883:
880:
867:Main article:
864:
861:
860:
859:
856:
853:
850:
847:
844:
832:Main article:
829:
826:
825:
824:
821:
818:
815:
811:
808:
796:Main article:
793:
790:
789:
788:
785:
782:
779:
775:
772:
756:Main article:
753:
750:
731:Main article:
728:
725:
724:
723:
720:
717:
714:
708:
705:
702:
660:Main article:
657:
654:
542:I/O scheduling
505:
502:
493:
492:
489:
486:
458:
455:
399:
396:
390:, also called
343:
340:
312:supercomputers
277:
274:
239:
236:
214:I/O scheduling
205:
202:
170:
169:
162:
147:
138:
124:
121:
115:with a single
98:load balancing
26:
24:
18:Task scheduler
14:
13:
10:
9:
6:
4:
3:
2:
4057:
4046:
4043:
4041:
4038:
4036:
4033:
4031:
4028:
4027:
4025:
4010:
4007:
4005:
4002:
4001:
3999:
3995:
3989:
3986:
3984:
3981:
3980:
3978:
3974:
3968:
3965:
3963:
3960:
3958:
3955:
3953:
3952:Robert Martin
3950:
3948:
3947:Martin Fowler
3945:
3943:
3940:
3938:
3935:
3933:
3930:
3928:
3925:
3923:
3922:Ralph Johnson
3920:
3918:
3915:
3913:
3910:
3909:
3907:
3903:
3897:
3896:
3892:
3890:
3889:
3885:
3884:
3882:
3878:
3872:
3869:
3867:
3864:
3862:
3859:
3857:
3854:
3852:
3849:
3847:
3844:
3842:
3839:
3837:
3834:
3832:
3829:
3827:
3824:
3822:
3819:
3817:
3814:
3812:
3809:
3807:
3804:
3803:
3801:
3795:
3789:
3786:
3784:
3781:
3779:
3776:
3774:
3771:
3769:
3766:
3764:
3761:
3759:
3758:Active record
3756:
3754:
3751:
3749:
3748:Naked objects
3746:
3744:
3741:
3739:
3738:Specification
3736:
3734:
3732:
3728:
3726:
3723:
3721:
3718:
3714:
3711:
3709:
3706:
3705:
3704:
3701:
3699:
3696:
3694:
3691:
3690:
3688:
3686:
3683:Architectural
3680:
3674:
3671:
3669:
3666:
3664:
3661:
3659:
3656:
3654:
3651:
3649:
3646:
3644:
3641:
3639:
3636:
3634:
3631:
3629:
3626:
3624:
3621:
3619:
3616:
3614:
3611:
3609:
3606:
3604:
3601:
3599:
3596:
3594:
3593:Active object
3591:
3590:
3588:
3586:
3580:
3570:
3567:
3565:
3562:
3560:
3557:
3555:
3552:
3550:
3547:
3545:
3542:
3540:
3537:
3535:
3532:
3530:
3527:
3525:
3522:
3520:
3517:
3516:
3514:
3512:
3508:
3502:
3499:
3497:
3494:
3492:
3489:
3487:
3484:
3482:
3479:
3477:
3474:
3472:
3469:
3468:
3466:
3464:
3460:
3454:
3451:
3449:
3446:
3444:
3441:
3439:
3436:
3434:
3431:
3430:
3428:
3426:
3422:
3419:
3417:
3411:
3407:
3400:
3395:
3393:
3388:
3386:
3381:
3380:
3377:
3365:
3362:
3358:
3355:
3353:
3350:
3349:
3348:
3345:
3343:
3340:
3338:
3335:
3333:
3330:
3328:
3325:
3323:
3320:
3319:
3317:
3313:
3307:
3304:
3302:
3299:
3297:
3294:
3292:
3289:
3287:
3284:
3282:
3279:
3277:
3274:
3272:
3269:
3267:
3264:
3263:
3261:
3259:
3254:
3250:
3244:
3241:
3239:
3236:
3234:
3231:
3229:
3226:
3224:
3223:Memory paging
3221:
3219:
3216:
3214:
3211:
3210:
3208:
3205:
3200:
3196:
3186:
3183:
3181:
3178:
3176:
3173:
3171:
3168:
3167:
3165:
3163:
3157:
3151:
3148:
3146:
3143:
3141:
3138:
3136:
3133:
3131:
3128:
3126:
3123:
3121:
3118:
3116:
3113:
3110:
3106:
3102:
3099:
3098:
3096:
3092:
3089:
3087:
3083:
3073:
3070:
3068:
3065:
3063:
3062:Device driver
3060:
3059:
3057:
3053:
3047:
3044:
3042:
3039:
3037:
3034:
3032:
3029:
3027:
3024:
3022:
3019:
3017:
3014:
3012:
3009:
3008:
3006:
3004:
3003:Architectures
3000:
2997:
2995:
2991:
2985:
2982:
2980:
2977:
2975:
2972:
2970:
2967:
2965:
2962:
2960:
2957:
2955:
2952:
2950:
2947:
2945:
2942:
2940:
2937:
2936:
2934:
2930:
2924:
2921:
2919:
2916:
2914:
2911:
2909:
2906:
2904:
2901:
2899:
2896:
2894:
2891:
2890:
2888:
2884:
2880:
2873:
2868:
2866:
2861:
2859:
2854:
2853:
2850:
2838:
2835:
2833:
2830:
2829:
2827:
2823:
2817:
2814:
2812:
2809:
2807:
2804:
2802:
2799:
2797:
2794:
2792:
2789:
2787:
2784:
2783:
2781:
2777:
2771:
2770:YDS algorithm
2768:
2766:
2763:
2761:
2758:
2756:
2753:
2751:
2748:
2746:
2743:
2741:
2738:
2736:
2733:
2731:
2728:
2726:
2723:
2721:
2718:
2716:
2713:
2711:
2708:
2706:
2703:
2701:
2698:
2696:
2693:
2691:
2688:
2686:
2683:
2681:
2678:
2676:
2673:
2671:
2668:
2666:
2663:
2662:
2660:
2656:
2652:
2645:
2640:
2638:
2633:
2631:
2626:
2625:
2622:
2616:
2613:
2611:
2608:
2605:
2602:
2600:
2597:
2595:
2592:
2590:
2587:
2585:
2582:
2580:
2577:
2575:
2572:
2570:
2567:
2564:
2561:
2557:
2554:
2553:
2549:
2544:
2541:
2537:
2535:0-13-031999-6
2531:
2527:
2526:
2520:
2516:
2514:3-540-41931-4
2510:
2506:
2501:
2500:
2495:
2484:
2477:
2471:
2469:
2465:
2454:
2453:
2448:
2442:
2439:
2428:
2424:
2418:
2415:
2404:
2403:
2398:
2392:
2389:
2378:
2371:
2364:
2361:
2356:
2352:
2348:
2342:
2339:
2328:
2324:
2317:
2315:
2313:
2309:
2306:
2302:
2299:
2295:
2292:
2281:
2277:
2271:
2268:
2257:
2253:
2247:
2245:
2241:
2236:
2230:
2214:
2210:
2206:
2200:
2197:
2185:
2181:
2175:
2172:
2167:
2163:
2156:
2153:
2149:
2145:
2144:Early Windows
2140:
2137:
2132:
2126:
2122:
2118:
2114:
2108:
2105:
2101:
2097:
2091:
2088:
2083:
2077:
2073:
2069:
2063:
2061:
2059:
2055:
2050:
2049:
2044:
2038:
2035:
2024:
2020:
2013:
2010:
2006:
2001:
1995:
1991:
1984:
1981:
1977:
1951:
1949:9781107078239
1945:
1941:
1940:
1932:
1929:
1925:
1921:
1915:
1911:
1907:
1906:
1898:
1895:
1891:
1887:
1883:
1878:
1873:
1869:
1865:
1861:
1854:
1851:
1845:
1840:
1837:
1835:
1832:
1830:
1827:
1825:
1822:
1820:
1817:
1815:
1812:
1810:
1807:
1805:
1802:
1800:
1797:
1795:
1792:
1790:
1787:
1785:
1782:
1780:
1777:
1775:
1772:
1770:
1767:
1765:
1762:
1761:
1756:
1750:
1747:
1744:
1741:
1738:
1737:
1733:
1730:
1728:
1724:
1720:
1717:
1716:
1713:
1710:
1707:
1705:
1702:
1701:
1698:
1695:
1692:
1690:
1687:
1686:
1683:
1680:
1677:
1675:
1672:
1671:
1668:
1665:
1662:
1660:
1657:
1656:
1652:
1649:
1647:
1644:
1643:
1640:
1637:
1634:
1631:
1628:
1627:
1623:
1620:
1617:
1614:
1613:
1610:
1607:
1604:
1601:
1600:
1597:
1594:
1591:
1588:
1587:
1584:
1581:
1578:
1576:before 2.6.0
1575:
1572:
1571:
1568:
1565:
1562:
1560:
1557:
1556:
1553:
1549:
1546:
1544:
1541:
1540:
1536:
1533:
1530:
1529:
1523:
1521:
1519:
1514:
1507:
1505:
1503:
1499:
1495:
1488:
1486:
1483:
1476:
1474:
1472:
1468:
1460:
1458:
1456:
1451:
1449:
1445:
1426:
1423:
1420:
1414:
1406:
1383:
1380:
1377:
1371:
1363:
1359:
1355:
1350:
1348:
1344:
1340:
1336:
1332:
1324:
1322:
1320:
1316:
1313:developed by
1312:
1304:
1302:
1300:
1296:
1292:
1288:
1283:
1280:
1276:
1272:
1268:
1264:
1256:
1252:
1247:
1243:
1241:
1233:
1231:
1229:
1221:
1216:
1214:
1210:
1202:
1198:
1194:
1193:
1192:
1186:
1184:
1182:
1176:
1173:YieldToThread
1166:
1161:WaitNextEvent
1158:
1154:
1150:
1141:
1139:
1136:
1132:
1131:Windows Vista
1126:
1123:
1119:
1115:
1112:
1108:
1100:
1098:
1096:
1095:
1086:
1082:
1078:
1074:
1070:
1066:
1063:
1059:
1055:
1054:
1053:
1051:
1043:
1041:
1039:
1035:
1031:
1028:priority. In
1025:
1022:
1014:
1012:
1009:
1005:
1001:
997:
994:For example,
992:
990:
982:
977:
974:
971:
968:
965:
964:
963:
956:
943:
940:
929:
926:
915:
912:
911:
910:
908:
900:
898:
895:
889:
881:
879:
877:
876:shared memory
870:
862:
857:
854:
851:
848:
845:
842:
841:
840:
835:
827:
822:
819:
816:
812:
809:
806:
805:
804:
799:
791:
786:
783:
780:
776:
773:
769:
768:
767:
765:
759:
751:
749:
746:
740:
734:
726:
721:
718:
715:
712:
709:
706:
703:
700:
699:
698:
696:
688:
684:
680:
673:
668:
663:
655:
653:
651:
647:
643:
639:
635:
631:
627:
623:
619:
615:
610:
608:
604:
600:
596:
592:
588:
584:
579:
577:
573:
569:
565:
562:
557:
554:
549:
547:
546:print spooler
544:), printers (
543:
539:
535:
531:
527:
523:
519:
515:
512:(also called
511:
503:
501:
499:
490:
487:
484:
480:
476:
472:
468:
465:
464:
463:
456:
454:
452:
449:that runs in
448:
444:
439:
437:
433:
429:
425:
421:
417:
413:
409:
408:CPU scheduler
405:
397:
395:
393:
392:demand paging
389:
385:
379:
376:
375:page faulting
372:
368:
366:
361:
357:
353:
349:
341:
339:
337:
331:
329:
328:job scheduler
325:
321:
317:
313:
309:
305:
300:
298:
294:
289:
287:
283:
275:
273:
271:
267:
263:
258:
256:
254:
249:
247:
237:
235:
233:
229:
225:
219:
218:Job scheduler
215:
211:
203:
201:
199:
195:
191:
187:
183:
179:
174:
167:
163:
160:
159:
158:response time
154:
153:
148:
145:
144:
139:
136:
135:
130:
129:
128:
122:
120:
118:
114:
110:
105:
103:
99:
95:
90:
88:
84:
80:
76:
72:
68:
67:network links
64:
60:
56:
52:
48:
44:
37:
33:
19:
4004:Anti-pattern
3967:Linda Rising
3893:
3886:
3831:Lazy loading
3763:Identity map
3730:
3414:Gang of Four
3258:file systems
3159:
3150:Time-sharing
2816:SCHED NORMAL
2650:
2524:
2504:
2483:the original
2456:. Retrieved
2450:
2441:
2430:. Retrieved
2426:
2417:
2406:. Retrieved
2400:
2391:
2380:. Retrieved
2376:
2363:
2355:linux-kernel
2354:
2347:Molnár, Ingo
2341:
2330:. Retrieved
2326:
2294:
2283:. Retrieved
2279:
2270:
2259:. Retrieved
2255:
2217:. Retrieved
2213:the original
2208:
2199:
2188:. Retrieved
2186:. 2016-11-14
2183:
2174:
2166:the original
2155:
2139:
2116:
2113:Guowang Miao
2107:
2090:
2071:
2047:
2037:
2026:. Retrieved
2022:
2012:
2003:
1989:
1983:
1959:
1953:. Retrieved
1938:
1931:
1923:
1904:
1897:
1889:
1867:
1863:
1853:
1704:Windows 3.1x
1574:Linux kernel
1550:Prioritized
1517:
1511:
1498:kernel space
1492:
1480:
1471:latency nice
1470:
1464:
1452:
1354:fair queuing
1351:
1328:
1308:
1284:
1260:
1237:
1225:
1211:
1207:
1190:
1177:
1148:
1145:
1127:
1121:
1116:
1111:Windows 3.1x
1104:
1092:
1090:
1084:
1080:
1072:
1068:
1061:
1057:
1047:
1026:
1018:
993:
988:
986:
960:
904:
891:
872:
837:
801:
761:
744:
742:
690:
686:
678:
677:
621:
611:
591:max-min fair
587:fair queuing
580:
571:
558:
550:
517:
513:
509:
507:
497:
494:
460:
440:
435:
432:co-operative
431:
427:
407:
403:
401:
387:
383:
380:
370:
363:
359:
356:swapping out
355:
347:
345:
335:
332:
324:coscheduling
316:render farms
301:
290:
285:
281:
279:
269:
265:
261:
259:
251:
244:
241:
231:
227:
223:
221:
175:
171:
165:
156:
150:
141:
140:minimizing
132:
126:
106:
93:
91:
74:
58:
54:
50:
46:
40:
3976:Communities
3957:Jim Coplien
3932:Grady Booch
3917:Erich Gamma
3861:Type tunnel
3846:Object pool
3841:Null object
3836:Mock object
3698:Interceptor
3668:Thread pool
3583:Concurrency
3529:Interpreter
3276:Device file
3266:Boot loader
3180:Round-robin
3105:Cooperative
3041:Rump kernel
3031:Multikernel
3021:Microkernel
2918:Usage share
2735:Round-robin
2377:Happyli.org
2098:. UWSpace.
1534:Preemption
1319:Con Kolivas
1315:Ingo Molnar
1133:to use the
1105:Very early
1083:option, or
1021:round-robin
762:Similar to
672:thread pool
583:round-robin
532:among both
451:kernel mode
416:system call
388:lazy loaded
360:swapping in
253:cooperative
164:maximizing
149:minimizing
131:maximizing
53:to perform
4024:Categories
3871:Delegation
3806:Blackboard
3511:Behavioral
3463:Structural
3425:Creational
3206:protection
3162:algorithms
3160:Scheduling
3109:Preemptive
3055:Components
3026:Monolithic
2893:Comparison
2837:Starvation
2811:SCHED FIFO
2786:Brain Fuck
2765:Windows NT
2680:Fair-share
2658:Algorithms
2496:References
2458:2023-08-31
2432:2024-02-07
2408:2023-08-31
2382:2016-12-09
2332:2024-02-07
2285:2019-01-15
2261:2019-01-15
2219:15 January
2190:2016-12-09
2028:2023-06-19
1955:2015-10-17
1919:047149111X
1740:Windows NT
1719:Windows 95
1537:Algorithm
1118:Windows NT
996:Windows NT
878:problems.
737:See also:
693:task queue
630:throughput
566:and other
528:(to share
457:Dispatcher
424:preemptive
246:preemptive
208:See also:
134:throughput
63:processors
47:scheduling
3937:Kent Beck
3663:Semaphore
3653:Scheduler
3496:Flyweight
3486:Decorator
3481:Composite
3453:Singleton
3448:Prototype
3296:Partition
3213:Bus error
3140:Real-time
3120:Interrupt
3046:Unikernel
3011:Exokernel
2760:Two-level
1886:207669821
1473:patches.
1461:Linux 6.6
1444:run queue
1424:
1381:
1279:run queue
1257:Linux 2.4
1234:Linux 2.2
1222:Linux 1.2
1149:blue task
1032:systems,
1011:threads.
948:jobs and
934:jobs and
920:jobs and
670:A sample
538:processes
477:) of the
428:voluntary
412:interrupt
371:paging in
306:systems,
297:CPU-bound
293:I/O-bound
255:scheduler
248:scheduler
194:deadlines
178:real-time
143:wait time
94:scheduler
83:processes
59:resources
51:resources
43:computing
4040:Planning
3997:See also
3799:patterns
3685:patterns
3638:Proactor
3585:patterns
3559:Strategy
3549:Observer
3539:Mediator
3534:Iterator
3416:patterns
3342:Live USB
3204:resource
3094:Concepts
2932:Variants
2913:Timeline
2402:Phoronix
2301:Archived
2229:cite web
1757:See also
1646:Mac OS 9
1624:(EEVDF)
1543:Amiga OS
1405:runqueue
1399:, where
1299:Alan Cox
1289:such as
1265:2.4, an
1230:policy.
1159:such as
907:makespan
530:CPU time
230:, and a
190:robotics
166:fairness
85:or data
3851:Servant
3783:Model 2
3643:Reactor
3633:Monitor
3598:Balking
3569:Visitor
3544:Memento
3524:Command
3471:Adapter
3438:Builder
3337:Live CD
3291:Journal
3255:access,
3253:Storage
3130:Process
3036:vkernel
2903:History
2886:General
2710:Lottery
2452:LWN.net
2146:at the
1689:Solaris
1559:FreeBSD
1524:Summary
1513:Solaris
1508:Solaris
1482:FreeBSD
1477:FreeBSD
1269:with a
1196:policy.
1101:Windows
534:threads
522:routers
479:process
475:context
198:managed
152:latency
119:(CPU).
79:threads
77:may be
61:may be
3905:People
3788:Broker
3491:Facade
3476:Bridge
3145:Thread
3016:Hybrid
2994:Kernel
2755:Stride
2532:
2511:
2127:
2078:
1996:
1946:
1916:
1884:
1674:NetBSD
1632:pre-9
1518:shares
1494:NetBSD
1489:NetBSD
1333:named
1242:(SMP).
1181:Carbon
1122:normal
1107:MS-DOS
1050:OS/360
814:empty.
483:thread
420:signal
365:paging
314:, and
268:, and
216:, and
73:. The
57:. The
3880:Books
3797:Other
3733:-tier
3554:State
3501:Proxy
3347:Shell
3286:Inode
2825:Other
2779:Linux
2486:(PDF)
2479:(PDF)
2373:(PDF)
1882:S2CID
1846:Notes
1731:Half
1708:None
1659:macOS
1650:Some
1635:None
1263:Linux
1217:Linux
646:OFDMA
614:HSDPA
471:state
436:force
284:, or
123:Goals
87:flows
75:tasks
55:tasks
3856:Twin
3713:MVVM
3628:Lock
3623:Join
2908:List
2801:O(n)
2796:O(1)
2695:Gang
2530:ISBN
2509:ISBN
2235:link
2221:2022
2125:ISBN
2076:ISBN
1994:ISBN
1944:ISBN
1914:ISBN
1745:Yes
1693:Yes
1678:Yes
1663:Yes
1618:Yes
1605:Yes
1592:Yes
1579:Yes
1563:Yes
1547:Yes
1453:The
1275:nice
1079:The
1067:The
1056:The
1048:IBM
1008:FIFO
989:best
683:FIFO
632:and
618:3.5G
597:and
536:and
402:The
346:The
280:The
184:for
3725:ECS
3720:ADR
3708:MVP
3703:MVC
3364:PXE
3352:CLI
3332:HAL
3322:API
3125:IPC
1972:+ t
1910:171
1872:doi
1421:log
1378:log
1261:In
1187:AIX
1171:or
1030:SMP
638:LTE
589:(a
559:In
516:or
481:or
430:or
369:or
367:out
358:or
295:or
176:In
155:or
69:or
41:In
4026::
3107:,
2467:^
2449:.
2425:.
2399:.
2375:.
2353:.
2325:.
2311:^
2278:.
2254:.
2243:^
2231:}}
2227:{{
2207:.
2182:.
2123:.
2119:.
2057:^
2021:.
2002:.
1958:.
1922:.
1912:.
1888:.
1880:.
1868:20
1866:.
1862:.
1727:Me
1725:,
1723:98
1721:,
1504:.
1450:.
1183:.
1175:.
1040:.
892:A
585:,
508:A
500:.
394:.
338:.
322:,
310:,
264:,
257:.
212:,
104:.
89:.
81:,
65:,
45:,
3731:n
3398:e
3391:t
3384:v
3201:,
3111:)
3103:(
2871:e
2864:t
2857:v
2643:e
2636:t
2629:v
2538:.
2517:.
2461:.
2435:.
2411:.
2385:.
2335:.
2288:.
2264:.
2237:)
2223:.
2193:.
2133:.
2084:.
2031:.
1976:.
1974:r
1970:w
1966:r
1962:w
1874::
1430:)
1427:N
1418:(
1415:O
1401:N
1387:)
1384:N
1375:(
1372:O
950:m
946:n
936:m
932:n
922:m
918:n
681:(
38:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.