Faults

Faults implemented with signals

memory faults : SIGSEGV

timer : SIGVTALRM and SIGALRM

device interrupts : SIGIO

Notes:

Hardware faults are emulated with Linux signals.
SIGSEGV is delivered whenever a process accesses invalid memory - this serves as the equivalent of a memory fault..
The clock is implemented with SIGALRM in the idle thread, and SIGVTALRM in all other processes. The difference is caused by the fact that the idle thread sleeps, so SIGVTALRM would never fire.
Device interrupts are implemented with SIGIO. All devices do their IO through file descriptors, which cause SIGIO whever IO becomes available.