Interrupt priority level

Interrupt priority level

The interrupt priority level (IPL) is a part of the current system interrupt state, which indicates the interrupt requests that will currently be accepted. The IPL may be indicated in hardware by the registers in a Programmable Interrupt Controller, or in software by a bitmask or integer value.

Overview

An integer based IPL may be as small as a single bit, with just two values: 0 (all interrupts enabled) or 1 (all interrupts disabled). However, some architectures permit a greater range of values, where each value enables interrupt requests that specify a higher level, while blocking ones from the same or lower level.

Assigning different priorities to interrupt requests can be useful in trying to balance system throughput versus interrupt latency: some kinds of interrupts need to be responded to more quickly than others, but the amount of processing might not be large, so it makes sense to assign a higher priority to that kind of interrupt.

Control of interrupt level was also used to synchronize access to kernel data structures. Thus, the level-3 scheduler interrupt handler would temporarily raise IPL to 7 before accessing any actual scheduler data structures, then lower back to 3 before actually switching process contexts. However, it was "not allowed for an interrupt handler to lower IPL below that at which it was entered", since to do so could destroy the integrity of the synchronization system.

Of course, multiprocessor systems add their own complications, which are not addressed here.

Regardless of what the hardware might support, typical UNIX-type systems only make use of two levels: the minimum (all interrupts enabled) and the maximum (all interrupts disabled).

OpenVMS IPLs

As an example of one of the more elaborate IPL-handling systems ever deployed, the VAX computer and associated VMS operating system supports 32 priority levels, from 0 to 31. Priorities 16 and above are for requests from external hardware, while values below 16 are available for "software interrupts" (used internally by the operating system to schedule its own activities). Not all values are actually used, but here are some of the more important ones:
* level 31 is for the "power-fail" interrupt.
* level 24 is for the clock interrupt. Note this is a higher priority than I/O interrupts.
* levels 20-23 are used for I/O devices.
* levels 8-11 are used for "fork interrupts". When a driver receives a device interrupt (priority 20-23), it is supposed to do as little processing as possible at such a high priority; instead, if any time-consuming operations need to be done, these are to be deferred by requesting a software interrupt in the 8-11 range; when this interrupt is triggered, the further processing will resume. Similar to this are "bottom halves" and their successors in the Linux kernel.
* level 7 is used to synchronize access to the process scheduler data structures.
* level 4 is used for I/O post-processing tasks--that is, final completion of a QIO request including returning results to the application process.
* level 3 is used for the process rescheduling interrupt. Any code executing at higher interrupt levels is not allowed to assume that there was a current process context (since a process reschedule might be in progress). In particular, page faults are not allowed at this or higher levels.
* level 2 is used to synchronize access to per-process data structures. Any time the kernel needs access to a process context, it sends that process a "special kernel AST" which executes in the process context at IPL 2.
* level 0 is the normal level for execution of non-interrupt code, including ordinary application code.

Alpha hardware contains native support for IPLs. When OpenVMS was ported to Itanium in 2001, the IPL scheme was simulated using features provided by the Itanium hardware.

See also

* Interrupt
* Programmable Interrupt Controller
* SPL (computer science)


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Interrupt request — IRQ redirects here. For the country with the ISO 3166 1 country code, see Iraq. The computing phrase interrupt request (or IRQ) is used to refer to either the act of interrupting the bus lines used to signal an interrupt, or the interrupt input… …   Wikipedia

  • Interrupt — This article is about computer interrupts. For the study of the effect of disruptions on job performance, see Interruption science. In computing, an interrupt is an asynchronous signal indicating the need for attention or a synchronous event in… …   Wikipedia

  • Interrupt handler — An interrupt handler, also known as an interrupt service routine (ISR), is a callback subroutine in an operating system or device driver whose execution is triggered by the reception of an interrupt. Interrupt handlers have a multitude of… …   Wikipedia

  • hardware interrupt —    An interrupt or request for service generated by a hardware device, such as a keystroke or a tick from the clock. Because the processor may receive several such signals simultaneously, hardware interrupts are usually assigned a priority level… …   Dictionary of networking

  • Programmable Interrupt Controller — A Programmable Interrupt Controller (PIC) is a device which allows priority levels to be assigned to its interrupt outputs. When the device has multiple interrupt outputs to assert, it will assert them in the order of their relative priority.… …   Wikipedia

  • SPL (computer science) — SPL is short for Set Priority Level :: The naming goes back to the early days of UNIX on the PDP 11. The PDP 11 had a relatively simplistic level based interrupt structure. When running at a specific level, only higher priority interrupts were… …   Wikipedia

  • VAX — redirects here. For the brand of vacuum cleaners, see Vax (vacuum). For the author, see Vachss. DEC VAX Manufacturer: Digital Equipment Corporation Byte size: 8 bits (octet) Address bus size: 32 bits Peripheral bus …   Wikipedia

  • IPL — Internet Public Library (Academic & Science » Libraries) *** Intense Pulsed Light (Computing) ** Initial Program Load (Governmental » Military) ** Initial Program Load (Computing » General) ** Intense Pulse Light (Computing » General) *… …   Abbreviations dictionary

  • IPL — is a three letter abbreviation with multiple meanings, including:* Indian Premier League, A Twenty20 cricket league in India * Iran Pro League, Iran s Highest Football (Soccer) League * IBM Public License, The IBM Public License * Initial Program …   Wikipedia

  • IPL — • Initial Program Loading/Loader • Interactive services Primary Link • Image Processing Library • Information Processing Letters (informationswissenschaftl. Veoeffentlichungen) • Information Processing Language • Interrupt Priority Level • Ion… …   Acronyms

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”