.

Saturday, September 14, 2019

Interrupt and a Trap in an Operating System Essay

What are the differences between an interrupt and a trap? What are their importance? According to Stallings (2012) an interrupt is â€Å"a suspension of a process, such as the execution of a computer program, caused by an event external to that process and performed in such a way that the process can be resumed† (p. 716). Stallings (2012) goes on to say that â€Å"interrupts are provided primarily as a way to improve processor utilization. For example, most I/O devices are much slower than the processor† (p. 14). â€Å"A trap is an unprogrammed conditional jump to a specified address that is automatically activated by hardware; the location from which the jump was made is recorded† (Stallings, 2012, p. 721). A trap is actually a software generated interrupt caused either by an error (for example division by zero, invalid memory access etc.), or by a specific request by an operating system service generated by a user program. Trap is sometimes called Exception. The hardware or software can generate these interrupts. When the interrupt or trap occurs, the hardware transfers control to the operating system which first preserves the current state of the system by saving the current CPU registers content and program counter’s value. Then the focus shifts to the determination of which type of interrupt has occurred. For each type of interrupt, separate segments of code in the operating system determine what action should be taken and thus the system keeps on functioning by executing computational instruction, I/O instruction, storage instruction etc. Provide an example of each. Example of an Interrupt retrieved from http://www.scriptoriumdesigns.com/embedded/show_codefile.php?fname=interrupts/AVR_ISR_1.c // AVR_ISR_1 #include #include typedef uint8_t u8; // convenient unsigned variable designations typedef uint16_t u16; #define INPORT PIND #define OUTPORT PORTC #define OUTDDR DDRC volatile u8 Int_flag = 0; ISR( INT0_vect ) { OUTPORT ^= 0x01; // toggle LED } void int0_init( void ) { MCUCR = (1

No comments:

Post a Comment