traps and interrupts

Jamie jamie at gnulife.org
Fri Jul 21 20:24:18 UTC 2006



   I'm going through "Design and Implementation of the FreeBSD operating
system" (McKusick) right now, and I've got some questions...



1) The book refers to software traps...

(page 51 para 2):

"  Software initiated traps are used by the syste mto force the scheduling
of an event, such as process rescheduling or network processing, as soon
as possible. Software initiated traps are implemented by setting a flag
that is checked whenever a process is preparing to exit from the kernel.
If the flag is set, the software interrupt code is run instead of exiting
from the kernel."


   Unfortunately, the book doesn't give any examples of how this is
implemented in enough detail for me to understand. The only example it
seems to really give of a software interrupt is the process that delivers
the incoming packets to their destination processes. (??)

  I was trying to learn more about how the trap function is implemented,
so I read up on hardware traps in my IA-32 system manual (the one Intel
ships out for free if you ask them for it).

  That manual says that there is basically a set of INT calls you can make
that are in an IDT table. Some of these are hard wired, like 0-19, if I
recall. Then 33-255 are all software definable.

  I am guessing that these high priority software interrupt routines are
stored at locations pointed to by elements 33-255 in the IDT table. Is
that correct? Or, do these software interrupt processes have no need to
trap into the routines in the IDT?


   I hope this question makes sense...I'm just trying to get a more lucid
understanding of how "software interrupts" or "software traps" as they're
referred to in this text, are implemented.



       - Jamie







The Moon is Waning Crescent (12% of Full)


More information about the freebsd-questions mailing list