CPSC 422/522: Operating Systems

Homework: Interrupts and Exceptions in xv6

Read: xv6 trapasm.S, trap.c, syscall.c, initcode.S, usys.S. Skim vectors.pl, vectors.S, lapic.c, ioapic.c, picirq.c.

Hand-In Procedure

You are to turn in this homework at the beginning of lecture. Please write up your answers to the exercises below and hand them in to a staff member at the beginning of the lecture.


Try to understand xv6's trapasm.S, trap.c, syscall.c, initcode.S, usys.S. Skim vectors.S, lapic.c, ioapic.c, picirq.c.

The assigned chapter for today provides a commentary for these files, but you may find it useful to also consult:

Chapter 5 of Intel's system programming guide. Be aware that terms such as exceptions, traps, interrupts, faults and aborts have no standard meaning.

Turn in: In xv6, set a breakpoint at the beginning of syscall() to catch the very first system call. What values are on the stack at this point? Turn in the output of x/37x $esp at that breakpoint with each value labeled as to what it is (e.g., saved %ebp for trap, trapframe.eip, scratch space, etc.).

This completes the homework.

Bryan Ford, Department of Computer Science, Yale University
[an error occurred while processing this directive] Based on MIT 6.828 materials by Frans Kaashoek and others