Interrupts as threads

  • Authors:
  • Steve Kleiman;Joe Eykholt

  • Affiliations:
  • SunSoft Inc., Mountain View, California;SunSoft Inc., Mountain View, California

  • Venue:
  • ACM SIGOPS Operating Systems Review
  • Year:
  • 1995

Quantified Score

Hi-index 0.00

Visualization

Abstract

Most operating system implementations contain two fundamental forms of asynchrony; processes (or equivalently, internal threads) and interrupts. Processes (or threads) synchronize using primitives such as mutexes and condition variables, while interrupts are synchronized by preventing their occurrence for a period of time. The latter technique not only is expensive, but it locks out interrupts on the possibility that an interrupt will occur and interfere with the particular critical section of code that was interrupted.In the Solaris 2 implementation of UNIX [Eykholt 92] [Kleiman 92], these two forms are unified into a single model, threads. Interrupts are converted into threads using a low overhead technique. This allows a single synchronization model to be used throughout the kernel. In addition, it lowers the number of times in which interrupts are locked out, it removes the overhead of masking interrupts, and allows modular code to be oblivious to the interrupt level it is called at.