Next subsection that we're going to go into is dealing with the
asynchronous events in particular, how we go about, handling them.
We've already described them at a high level. The hardware exceptions are the things
like traps and memory faults and arithmetic exceptions. The external
events are things that are coming from the user. These are
interrupt quit and stop the primary difference between these is that the
hardware exceptions occur because of the execution of a particular instruction,
so,
You, you dereference a null pointer. There's a particular instruction that we can point
out and say that's the instruction that was bad or that arithmetic exception.
That's the instruction that under floater over, floater / 0
trap traps on a particular memory, typically because you touch a
piece of memory that's not currently loaded into your address Space,
by contrast. The external events are not tied to a particular instruction. The
user Just Hits interrupt when they hit in or up. It's not the fault
of a particular instruction, it
It just happens to be. That was the instruction. That was executing at the time that the interrupt got hit, or the
quit or the stop. I/O events break down into several
categories. We have either the completion or availability
of I/O, so you can be notified. For example, that a write
to disk that you started, has now finished. You can be told about
I/O that's available. So a packet has arrived on the network and there's
in the networking world, the ability to have what's called out-of-band Data.
Data that has come from essentially just jumping the pack to let, you
know, typically some kind of exceptional condition. Then we course, we have the
timers which we've already talked about. We have the real-time timers and the
pair of process virtual timers.