fbpx
Wikipedia

Preemption (computing)

In computing, preemption is the act of temporarily interrupting an executing task, with the intention of resuming it at a later time. This interrupt is done by an external scheduler with no assistance or cooperation from the task.[1]: 153  This preemptive scheduler usually runs in the most privileged protection ring, meaning that interruption and then resumption are considered highly secure actions. Such changes to the currently executing task of a processor are known as context switching.

User mode and kernel mode

In any given system design, some operations performed by the system may not be preemptable. This usually applies to kernel functions and service interrupts which, if not permitted to run to completion, would tend to produce race conditions resulting in deadlock. Barring the scheduler from preempting tasks while they are processing kernel functions simplifies the kernel design at the expense of system responsiveness. The distinction between user mode and kernel mode, which determines privilege level within the system, may also be used to distinguish whether a task is currently preemptable.

Most modern operating systems have preemptive kernels, which are designed to permit tasks to be preempted even when in kernel mode. Examples of such operating systems are Solaris 2.0/SunOS 5.0,[2] Windows NT, Linux kernel (2.5.4 and newer),[3] AIX and some BSD systems (NetBSD, since version 5).

Preemptive multitasking

The term preemptive multitasking is used to distinguish a multitasking operating system, which permits preemption of tasks, from a cooperative multitasking system wherein processes or tasks must be explicitly programmed to yield when they do not need system resources.

In simple terms: Preemptive multitasking involves the use of an interrupt mechanism which suspends the currently executing process and invokes a scheduler to determine which process should execute next. Therefore, all processes will get some amount of CPU time at any given time.

In preemptive multitasking, the operating system kernel can also initiate a context switch to satisfy the scheduling policy's priority constraint, thus preempting the active task. In general, preemption means "prior seizure of". When the high-priority task at that instance seizes the currently running task, it is known as preemptive scheduling.

The term "preemptive multitasking" is sometimes mistakenly used when the intended meaning is more specific, referring instead to the class of scheduling policies known as time-shared scheduling, or time-sharing.

Preemptive multitasking allows the computer system to more reliably guarantee each process a regular "slice" of operating time. It also allows the system to rapidly deal with important external events like incoming data, which might require the immediate attention of one or another process.

At any specific time, processes can be grouped into two categories: those that are waiting for input or output (called "I/O bound"), and those that are fully utilizing the CPU ("CPU bound"). In early systems, processes would often "poll" or "busy-wait" while waiting for requested input (such as disk, keyboard or network input). During this time, the process was not performing useful work, but still maintained complete control of the CPU. With the advent of interrupts and preemptive multitasking, these I/O bound processes could be "blocked", or put on hold, pending the arrival of the necessary data, allowing other processes to utilize the CPU. As the arrival of the requested data would generate an interrupt, blocked processes could be guaranteed a timely return to execution.

Although multitasking techniques were originally developed to allow multiple users to share a single machine, it became apparent that multitasking was useful regardless of the number of users. Many operating systems, from mainframes down to single-user personal computers and no-user control systems (like those in robotic spacecraft), have recognized the usefulness of multitasking support for a variety of reasons. Multitasking makes it possible for a single user to run multiple applications at the same time, or to run "background" processes while retaining control of the computer.

Time slice

The period of time for which a process is allowed to run in a preemptive multitasking system is generally called the time slice or quantum.[1]: 158  The scheduler is run once every time slice to choose the next process to run. The length of each time slice can be critical to balancing system performance vs process responsiveness - if the time slice is too short then the scheduler will consume too much processing time, but if the time slice is too long, processes will take longer to respond to input.

An interrupt is scheduled to allow the operating system kernel to switch between processes when their time slices expire, effectively allowing the processor's time to be shared among a number of tasks, giving the illusion that it is dealing with these tasks in parallel (simultaneously). The operating system which controls such a design is called a multi-tasking system.

System support

Today, nearly all operating systems support preemptive multitasking, including the current versions of Windows, macOS, Linux (including Android) and iOS.

Some of the earliest operating systems available to home users featuring preemptive multitasking were Sinclair QDOS[citation needed] (1984[4]) and AmigaOS (1985). These both ran on Motorola 68000-family microprocessors without memory management. Amiga OS used dynamic loading of relocatable code blocks ("hunks" in Amiga jargon) to multitask preemptively all processes in the same flat address space.

Early PC operating systems such as MS-DOS and PC DOS, did not support multitasking at all, however alternative operating systems such as MP/M-86 (1981) and Concurrent CP/M-86 did support preemptive multitasking. Other Unix-like systems including MINIX and Coherent provided preemptive multitasking on 1980s-era personal computers.

Later DOS versions natively supporting preemptive multitasking/multithreading include Concurrent DOS, Multiuser DOS, Novell DOS (later called Caldera OpenDOS and DR-DOS 7.02 and higher). Since Concurrent DOS 386, they could also run multiple DOS programs concurrently in virtual DOS machines.

The earliest version of Windows to support a limited form of preemptive multitasking was Windows/386 2.0, which used the Intel 80386's Virtual 8086 mode to run DOS applications in virtual 8086 machines, commonly known as "DOS boxes", which could be preempted. In Windows 95, 98 and Me, 32-bit applications were made preemptive by running each one in a separate address space, but 16-bit applications remained cooperative for backward compatibility.[5] In Windows 3.1x (protected mode), the kernel and virtual device drivers ran preemptively, but all 16-bit applications were non-preemptive and shared the same address space.

Preemptive multitasking has always been supported by Windows NT (all versions), OS/2 (native applications), Unix and Unix-like systems (such as Linux, BSD and macOS), VMS, OS/360, and many other operating systems designed for use in the academic and medium-to-large business markets.

Although there were plans to upgrade the cooperative multitasking found in the classic Mac OS to a preemptive model (and a preemptive API did exist in Mac OS 9, although in a limited sense[6]), these were abandoned in favor of Mac OS X (now called macOS) that, as a hybrid of the old Mac System style and NeXTSTEP, is an operating system based on the Mach kernel and derived in part from BSD, which had always provided Unix-like preemptive multitasking.

See also

References

  1. ^ a b Tanenbaum, Andrew (2015). Modern operating systems. Boston: Pearson. ISBN 978-0-13-359162-0. OCLC 870646449.
  2. ^ Khanna, S.; Sebree, M.; Zolnovsky, J. "Realtime scheduling in SunOS 5.0". Proceedings of the USENIX Winter Conference, 1992: 375–390.
  3. ^ "Release notes for v2.5.4". The Linux Kernel Archives. Linux Kernel Organization, Inc. Retrieved 2021-07-03.
  4. ^ "QL History FAQ: Firmware".
  5. ^ . Archived from the original on 2008-01-17. Retrieved 2008-01-17.
  6. ^ . Archived from the original on 2007-10-13. Retrieved 2007-03-29.

preemption, computing, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, preemption, computing, news, newspapers, book. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Preemption computing news newspapers books scholar JSTOR February 2009 Learn how and when to remove this template message In computing preemption is the act of temporarily interrupting an executing task with the intention of resuming it at a later time This interrupt is done by an external scheduler with no assistance or cooperation from the task 1 153 This preemptive scheduler usually runs in the most privileged protection ring meaning that interruption and then resumption are considered highly secure actions Such changes to the currently executing task of a processor are known as context switching Contents 1 User mode and kernel mode 2 Preemptive multitasking 2 1 Time slice 2 2 System support 3 See also 4 ReferencesUser mode and kernel mode EditSee also Kernel preemption In any given system design some operations performed by the system may not be preemptable This usually applies to kernel functions and service interrupts which if not permitted to run to completion would tend to produce race conditions resulting in deadlock Barring the scheduler from preempting tasks while they are processing kernel functions simplifies the kernel design at the expense of system responsiveness The distinction between user mode and kernel mode which determines privilege level within the system may also be used to distinguish whether a task is currently preemptable Most modern operating systems have preemptive kernels which are designed to permit tasks to be preempted even when in kernel mode Examples of such operating systems are Solaris 2 0 SunOS 5 0 2 Windows NT Linux kernel 2 5 4 and newer 3 AIX and some BSD systems NetBSD since version 5 Preemptive multitasking EditThe term preemptive multitasking is used to distinguish a multitasking operating system which permits preemption of tasks from a cooperative multitasking system wherein processes or tasks must be explicitly programmed to yield when they do not need system resources In simple terms Preemptive multitasking involves the use of an interrupt mechanism which suspends the currently executing process and invokes a scheduler to determine which process should execute next Therefore all processes will get some amount of CPU time at any given time In preemptive multitasking the operating system kernel can also initiate a context switch to satisfy the scheduling policy s priority constraint thus preempting the active task In general preemption means prior seizure of When the high priority task at that instance seizes the currently running task it is known as preemptive scheduling The term preemptive multitasking is sometimes mistakenly used when the intended meaning is more specific referring instead to the class of scheduling policies known as time shared scheduling or time sharing Preemptive multitasking allows the computer system to more reliably guarantee each process a regular slice of operating time It also allows the system to rapidly deal with important external events like incoming data which might require the immediate attention of one or another process At any specific time processes can be grouped into two categories those that are waiting for input or output called I O bound and those that are fully utilizing the CPU CPU bound In early systems processes would often poll or busy wait while waiting for requested input such as disk keyboard or network input During this time the process was not performing useful work but still maintained complete control of the CPU With the advent of interrupts and preemptive multitasking these I O bound processes could be blocked or put on hold pending the arrival of the necessary data allowing other processes to utilize the CPU As the arrival of the requested data would generate an interrupt blocked processes could be guaranteed a timely return to execution Although multitasking techniques were originally developed to allow multiple users to share a single machine it became apparent that multitasking was useful regardless of the number of users Many operating systems from mainframes down to single user personal computers and no user control systems like those in robotic spacecraft have recognized the usefulness of multitasking support for a variety of reasons Multitasking makes it possible for a single user to run multiple applications at the same time or to run background processes while retaining control of the computer Time slice Edit Time slice redirects here For other uses see Timeslicing The period of time for which a process is allowed to run in a preemptive multitasking system is generally called the time slice or quantum 1 158 The scheduler is run once every time slice to choose the next process to run The length of each time slice can be critical to balancing system performance vs process responsiveness if the time slice is too short then the scheduler will consume too much processing time but if the time slice is too long processes will take longer to respond to input An interrupt is scheduled to allow the operating system kernel to switch between processes when their time slices expire effectively allowing the processor s time to be shared among a number of tasks giving the illusion that it is dealing with these tasks in parallel simultaneously The operating system which controls such a design is called a multi tasking system System support Edit Today nearly all operating systems support preemptive multitasking including the current versions of Windows macOS Linux including Android and iOS Some of the earliest operating systems available to home users featuring preemptive multitasking were Sinclair QDOS citation needed 1984 4 and AmigaOS 1985 These both ran on Motorola 68000 family microprocessors without memory management Amiga OS used dynamic loading of relocatable code blocks hunks in Amiga jargon to multitask preemptively all processes in the same flat address space Early PC operating systems such as MS DOS and PC DOS did not support multitasking at all however alternative operating systems such as MP M 86 1981 and Concurrent CP M 86 did support preemptive multitasking Other Unix like systems including MINIX and Coherent provided preemptive multitasking on 1980s era personal computers Later DOS versions natively supporting preemptive multitasking multithreading include Concurrent DOS Multiuser DOS Novell DOS later called Caldera OpenDOS and DR DOS 7 02 and higher Since Concurrent DOS 386 they could also run multiple DOS programs concurrently in virtual DOS machines The earliest version of Windows to support a limited form of preemptive multitasking was Windows 386 2 0 which used the Intel 80386 s Virtual 8086 mode to run DOS applications in virtual 8086 machines commonly known as DOS boxes which could be preempted In Windows 95 98 and Me 32 bit applications were made preemptive by running each one in a separate address space but 16 bit applications remained cooperative for backward compatibility 5 In Windows 3 1x protected mode the kernel and virtual device drivers ran preemptively but all 16 bit applications were non preemptive and shared the same address space Preemptive multitasking has always been supported by Windows NT all versions OS 2 native applications Unix and Unix like systems such as Linux BSD and macOS VMS OS 360 and many other operating systems designed for use in the academic and medium to large business markets Although there were plans to upgrade the cooperative multitasking found in the classic Mac OS to a preemptive model and a preemptive API did exist in Mac OS 9 although in a limited sense 6 these were abandoned in favor of Mac OS X now called macOS that as a hybrid of the old Mac System style and NeXTSTEP is an operating system based on the Mach kernel and derived in part from BSD which had always provided Unix like preemptive multitasking See also EditComputer multitasking Cooperative multitaskingReferences Edit a b Tanenbaum Andrew 2015 Modern operating systems Boston Pearson ISBN 978 0 13 359162 0 OCLC 870646449 Khanna S Sebree M Zolnovsky J Realtime scheduling in SunOS 5 0 Proceedings of the USENIX Winter Conference 1992 375 390 Release notes for v2 5 4 The Linux Kernel Archives Linux Kernel Organization Inc Retrieved 2021 07 03 QL History FAQ Firmware How 16 Bit and 32 Bit Programs Multitask in Windows 95 Q117567 Archived from the original on 2008 01 17 Retrieved 2008 01 17 Re newbie question What is a Blue Task Archived from the original on 2007 10 13 Retrieved 2007 03 29 Retrieved from https en wikipedia org w index php title Preemption computing amp oldid 1152738478, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.