Presentation is loading. Please wait.

Presentation is loading. Please wait.

Interrupts and Interrupt Handling David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130.

Similar presentations


Presentation on theme: "Interrupts and Interrupt Handling David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130."— Presentation transcript:

1 Interrupts and Interrupt Handling David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130 1

2 Why Interrupts? Interrupts allow a currently executing process to be preempted Without interrupts, a process could only be removed from the processor when it ended or voluntarily yielded Interrupt use cases: – The timer interrupt controls the scheduling frequency of a system – Peripheral devices use interrupts to request CPU attention – Processors use interrupts to communicate in multi- processor systems (e.g. for load balancing or synchronization) CSE 522S – Advanced Operating Systems2

3 Interrupt Mechanisms On the ARM architecture, there are three physical types of interrupts: – SWI: software interrupts (i.e. exceptions) – IRQ: regular hardware interrupts – FIQ: fast hardware interrupts Linux has three interrupt semantics: – Software interrupts routed via SWI table – Hardware interrupts routed via the IDT – Inter-processor interrupts CSE 522S – Advanced Operating Systems3

4 Software vs Hardware Interrupts Software interrupts we saw before: – User mode initiates system calls with the SWI instruction (or on x86, the INT instruction) – Illegal instructions are trapped – Occurs synchronously with processor instructions Hardware interrupts are from devices: – Indicated by an electrical signal to a processor – On ARM, multiplexed by the Generic Interrupt Controller (GIC) – Asynchronous with instruction stream CSE 522S – Advanced Operating Systems4

5 Hardware Interrupt Interface Register new handlers with request_irq(), three key attributes: – IRQ number – IRQ handler function – Whether the IRQ is shared Handler functions execute in interrupt context: – Disables own interrupt line (optionally all interrupts) – May be interrupted by other interrupts – Does not need to be re-entrant – Cannot sleep CSE 522S – Advanced Operating Systems5

6 Hardware Interrupt Tension Handlers must be fast no matter what task requires: – Can preempt more important work – Disables own interrupt line (bad for shared lines), and may disable all lines – Must perform potentially large amounts of work to service hardware – Cannot sleep/block, so cannot call functions that can sleep/block (such as kmalloc() ) Strategy: Service hardware immediately but defer as much work as possible till later. CSE 522S – Advanced Operating Systems6

7 Top Half / Bottom Half Modern interrupt handlers are split into top half (fast) and bottom half (slow) components Top half: – Does minimum work to service hardware – Sets up future execution of bottom half – Clears interrupt line Bottom half: – Performs deferred processing Example: Network card – top half clears card buffer while bottom half processes and routes packets CSE 522S – Advanced Operating Systems7

8 Bottom Half Mechanisms Softirqs (interrupt context) – Statically defined – Most concurrency / performance – Same softirq handler can execute concurrently on different processors Tasklets (interrupt context) – Should be your default choice over softirqs – Tasklet handlers of same type do not execute concurrently Work Queues (process context) – Defers work to generic kernel threads ( kworker ) – Can sleep – Replaces making your own deferred kernel thread CSE 522S – Advanced Operating Systems8

9 Hardware Interrupt Implementation Sequence of events: – Someone registers a handler on specific IRQ line – Device raises interrupt line with GIC – GIC de-multiplexes and interrupts CPU – CPU jumps to interrupt descriptor table (IRQ table or FIQ table) in entry_armv.S via svn_entry and irq_handle – C code starts at asm_do_irq() – generic_handle_irq() (arch independent in kernel/irq/irqdesc.c) – Proceeds to specific handlers from there – Return after executing all handlers CSE 522S – Advanced Operating Systems9

10 Inter-processor Interrupts (IPIs) Modern multi-core machines need a way for cores to communicate. – Start/stop/sleep/wakeup other cores – Request task migration – Request remote function call (synchronization) Implemented differently from traditional interrupts, see smp_cross_call() in arch/arm/kernel/smp.c CSE 522S – Advanced Operating Systems10


Download ppt "Interrupts and Interrupt Handling David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130."

Similar presentations


Ads by Google