COMP 530 Operating Systems Interrupts and System Calls Don Porter 1 COMP 530 Operating Systems First lecture Open file hw1 txt Ok here s handle 4 App App App Libraries Libraries Libraries System Call Table 350 1200 User Super visor Kernel Hardware 2 2 AppHardwareLibrariesKernelAppLibrariesAppLibrariesSystem Call Table 350 1200 Open file hw1 txt Ok here s handle 4 COMP 530 Operating Systems Today s goal Key OS building block Understand how system calls work As well as how exceptions e g divide by zero work Understand the hardware tools available for irregular control flow I e things other than a branch in a running program Building blocks for context switching device management etc 3 COMP 530 Operating Systems Background Control Flow pc x 2 y true if y 2 x printf x void printf va args Regular control flow branches and calls logically follows source code 4 pc COMP 530 Operating Systems Background Control Flow pc x 0 y Divide by zero true if y progress Program can t make 2 x printf x void handle divzero x 2 Irregular control flow exceptions system calls etc 5 pcDivide by zero Program can t make progress COMP 530 Operating Systems Two types of interrupts Synchronous will happen every time an instruction executes with a given program state Divide by zero System call Bad pointer dereference Asynchronous caused by an external event Usually device I O Timer ticks well clocks can be considered a device 6 COMP 530 Operating Systems Asynchronous Interrupt Example Stack Stack RSP Disk Interrupt RSP if x printf Boo printf va args RIP RIP Disk handler User Kernel 7 RSPRIPRSPRIPDiskInterrupt COMP 530 Operating Systems Intel nomenclature Interrupt only refers to asynchronous interrupts Exception synchronous control transfer Note from the programmer s perspective these are handled with the same abstractions 8 COMP 530 Operating Systems Lecture outline Overview How interrupts work in hardware How interrupt handlers work in software How system calls work 9 COMP 530 Operating Systems Interrupt overview Each interrupt or exception includes a number indicating its type E g 14 is a page fault 3 is a debug breakpoint This number is the index into an interrupt table 10 COMP 530 Operating Systems x86 interrupt table Device IRQs 0x2e Windows System Call 128 Linux System Call 31 47 0 Reserved for the CPU Software Configurable 255 11 0x2e Windows System Call128 Linux System Call COMP 530 Operating Systems x86 interrupt overview Each type of interrupt is assigned an index from 0 255 0 31 are for processor interrupts generally fixed by Intel E g 14 is always for page faults 32 255 are software configured 32 47 are for device interrupts IRQs Most device s IRQ line can be configured Look up APICs for more info Ch 4 of Bovet and Cesati 0x80 issues system call in Linux more on this later 12 COMP 530 Operating Systems What happens high level Control jumps to the kernel At a prescribed address the interrupt handler The register state of the program is dumped on the kernel s stack Sometimes extra info is loaded into CPU registers E g page faults store the address that caused the fault in the cr2 register Kernel code runs and handles the interrupt When handler completes resume program see iret instr 13 COMP 530 Operating Systems Important digression Register state Really really really big idea The state of a program s execution is succinctly and completely represented by CPU register state Pause a program dump the registers in memory Resume a program slurp the registers back into CPU Be sure to appreciate the power of this idea 14 COMP 530 Operating Systems How is this configured Kernel creates an array of Interrupt descriptors in memory called Interrupt Descriptor Table or IDT Can be anywhere in memory Pointed to by special register idtr c f segment registers and gdtr and ldtr Entry 0 configures interrupt 0 and so on 15 COMP 530 Operating Systems x86 interrupt table idtr 0 31 47 Linear Address of Interrupt Table 255 16 idtrLinear Address of Interrupt Table COMP 530 Operating Systems x86 interrupt table idtr 0 14 31 47 Code Segment Kernel Code Segment Offset page fault handler linear addr Ring 0 kernel Present 1 Gate Type Exception 255 17 idtr COMP 530 Operating Systems Software interrupts The int num instruction allows software to raise an interrupt 0x80 is just a Linux convention There are a lot of spare indices You could have multiple system call tables for different purposes or types of processes Windows does one for the kernel and one for win32k 18 COMP 530 Operating Systems Software interrupts cont OS sets ring level required to raise an interrupt Generally user programs can t issue an int 14 page An unauthorized int instruction causes a general fault manually protection fault Interrupt 13 19 COMP 530 Operating Systems Summary Most interrupt handling hardware state set during boot Each interrupt has an IDT entry specifying What code to execute privilege level to raise the interrupt 20 COMP 530 Operating Systems Lecture outline Overview How interrupts work in hardware How interrupt handlers work in software How system calls work 21 COMP 530 Operating Systems High level goal Respond to some event return control to the appropriate process What to do on Network packet arrives Disk read completion Divide by zero System call 22 COMP 530 Operating Systems Interrupt Handlers Just plain old kernel code Sort of like exception handlers in Java But separated from the control flow of the program The IDT stores a pointer to the right handler routine 23 COMP 530 Operating Systems Lecture outline Overview How interrupts work in hardware How interrupt handlers work in software How system calls work 24 COMP 530 Operating Systems What is a system call A function provided to applications by the OS kernel Generally to use a hardware abstraction file socket Or OS provided software abstraction IPC scheduling Why not put these directly in the application Protection of the OS hardware from buggy malicious programs Applications are not allowed to directly interact with hardware or access kernel data structures COMP 530 Operating Systems System call interrupt Originally system calls issued using int instruction Dispatch routine was just an interrupt handler Like interrupts system calls are arranged in a table See arch x86 kernel syscall table S in Linux source Program selects the system call it wants by placing index in eax register Arguments go in the other registers by calling convention Return value goes in eax 26 Two levels of
View Full Document