Monday, July 22, 2019

Interrupt and a Trap in an Operating System Essay Example for Free

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 counters 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 avr/io.h #include avr/interrupt.h 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 = (1ISC01); // enable negative edge on INT0 GICR = (1INT0); // enable INT0 } int main( void ) { OUTDDR = 0x01; // set bit 0 to output OUTPORT = 0x01; // set LED off (active low) int0_init(); // configure INT0 sei(); // enable global interrupts while (1) // loop forever, all work happens in ISR ; return(0); Example of a trap retrieved from http://www.ibm.com/developerworks/aix/library/au-usingtraps/index.html #!/bin/bash # proj_dir=/opt/pcake/bin # check file is present if [ ! -f $proj_dir/run_pj ] then echo $proj_dir/run_pj not presentexiting exit 1 fi # make a backup copy cp -p $proj_dir/run_pj $proj_dir/run_pj.24042011 if [ $? != 0 ] then echo $proj_dir/run_pj no backup madeexiting exit 1 fi # copy over updated file if [ ! -f /opt/dump/rollout/run_pj ] then echo /opt/dump/rollout/run_pj not presentexiting exit 1 fi cp -p /opt/dump/rollout/run_pj $proj_dir/run_pj if [ $? != 0 ] then echo $proj_dir/run_pj was not copied..exiting exit 1 fi References: Stallings, W. (2012). Operating systems: Internals and design principles (7th ed.). Boston, MA: Prentice Hall.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.