Knowledge (XXG)

Scheduling (computing)

Source đź“ť

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 17: 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
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 18:Process 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: 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:)

Index

Process scheduler
Network scheduler
Scheduling (disambiguation)
computing
processors
network links
expansion cards
threads
processes
flows
load balancing
quality-of-service
execution model
computer multitasking
central processing unit
throughput
wait time
latency
response time
real-time
embedded systems
automatic control
robotics
deadlines
managed
Network scheduler
I/O scheduling
Job scheduler
preemptive
cooperative

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑