<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>KernelAnalysis-HOWTO: IRQ </TITLE> <LINK HREF="KernelAnalysis-HOWTO-13.html" REL=next> <LINK HREF="KernelAnalysis-HOWTO-11.html" REL=previous> <LINK HREF="KernelAnalysis-HOWTO.html#toc12" REL=contents> </HEAD> <BODY> <A HREF="KernelAnalysis-HOWTO-13.html">Next</A> <A HREF="KernelAnalysis-HOWTO-11.html">Previous</A> <A HREF="KernelAnalysis-HOWTO.html#toc12">Contents</A> <HR> <H2><A NAME="s12">12. IRQ </A></H2> <H2><A NAME="ss12.1">12.1 Overview</A> </H2> <P>IRQ is an asyncronous signal sent to microprocessor to advertise a requested work is completed <P> <H2><A NAME="ss12.2">12.2 Interaction schema</A> </H2> <P> <PRE> |<--> IRQ(0) [Timer] |<--> IRQ(1) [Device 1] | .. |<--> IRQ(n) [Device n] _____________________________| /|\ /|\ /|\ | | | \|/ \|/ \|/ Task(1) Task(2) .. Task(N) IRQ - Tasks Interaction Schema </PRE> <H3>What happens?</H3> <P>A typical O.S. uses many IRQ signals to interrupt normal process execution and does some housekeeping work. So: <P> <P> <OL> <LI>IRQ (i) occurs and Task(j) is interrupted</LI> <LI>IRQ(i)_handler is executed</LI> <LI>control backs to Task(j) interrupted </LI> </OL> <P>Under Linux, when an IRQ comes, first the IRQ wrapper routine (named "interrupt0x??") is called, then the "official" IRQ(i)_handler will be executed. This allows some duties like timeslice preemption. <P> <HR> <A HREF="KernelAnalysis-HOWTO-13.html">Next</A> <A HREF="KernelAnalysis-HOWTO-11.html">Previous</A> <A HREF="KernelAnalysis-HOWTO.html#toc12">Contents</A> </BODY> </HTML>