12/07/2006
A student is confused as to what is part of the LC-3 and what is part of
the operating system (the o/s). Since we have been using trap service
routines for some time now, and he has single stepped through them, he
thought somehow they were part of the LC-3. NO! They are part of the
O/S. The LC-3 is the bare machine that executes the instructions in your
program. The O/S provides service routines and the entries in the trap vector
and interrupt vector tables to tell the LC-3 where to find them.
The following dialog may be useful to you. WARNING: It is looooong.
If it is not clear, bring it to the attention of the TA, or ask me again.
Dr Patt,
As I sit here reviewing material for the final and working on the last
program, I've become confused on the use of the term "operating
system." I know that when I use a trap instruction, its like saying
(in your words) "Operating system, help me!" implying that the
operating system (In my case, it is Windows XP) of the computer is
doing the work for us.
Good. Yes.
But we know that
TRAP x23 or any other trap instruction sends the PC to the location
designated by x23 in the trap vector table. If you scroll through
the LC-3 simulator, you can see the different service routines.
Sure. AND, those service routines (as well as the ADDRESSES that are in
the trap vector table entries) are all part of the operating system.
The confusion comes from the discussion of the interrupt service
routines, where it has been said that "we have not installed
Windows or Linux on the LC-3." Okay, I understand that much.
Now we have to write the interrupt routine to do the job of the
operating system, because we can't use trap
routines. But wait! Aren't those trap service routines part
of the LC-3, and not the operating system?
No, the trap service routines are part of the operating system.
Surely, just as Bill Gates is unlikely to release
Windows for the LC-3 anytime soon, Windows doesn't come equipped with
service routines for the LC-3.
If Bill Gates released Windows for the LC-3, it would come with trap
service routines written in LC-3 code for use with the LC-3.
The routines corresponding to the various
trap instructions are coded into the LC-3 simulator,
apart from Windows, aren't they?
No, the trap routines are procedures running on the LC-3 simulator.
The more I think about this, the more I confuse myself. In fact,
I am far
more confused at the end of this email than I was when I started. To
summarize, what exactly is meant by "operating system"? When I hear that
term I generally think of Windows, Linux, etc, which is the software
that enables the average user to interact with their computer hardware.
Yes. And interrupt routines and trap routines both help the user interact
with the computer hardware.
If the
LC-3 is designed to represent the hardware of a computer, without an
operating system, how do trap instructions actually work?
Actually, every computer can operate without an operating system. Except,
it would be a very painful way to go. The user would have to write all the
code. As soon as some of that code was in the form of service routines, we
have the beginnings of an o/s in our hands.
Do other ISAs such
as the x86 have trap routines, or is the trap an instruction for the
LC-3 that is meant as a teaching tool only?
Other ISAs have the equivalent of the LC-3 TRAP instruction, and all operating
systems take advantage of that equivalent mechanism to direct the user program
to an o/s service routine.
Any sort of explanation would be greatly appreciated.
<<name withheld to protect the student causing this very long response>>
OKay, now from the top:
The LC-3:
1. The LC-3 is an ISA. It is mostly defined by the instruction set in
the inside cover of the book, but also includes stuff like the size of
memory, memory addressibility, memory-mapped I/O addresses. With respect
to interrupts, it contains the interrupt vector associated with each event
that can interrupt the machine. The LC-3 contains NO programs. It is like
a car without gasoline, so to speak. ...or perhaps better, without a driver.
2. The TRAP instruction executes by loading the starting address of the
corresponding trap service routine into the PC.
3. Interrupts are initiated by loading the starting address of the
corresponding interrupt service routine into the PC.
The O/S:
1. The LC-3 provides an EMPTY trap vector table to the o/s. The o/s
identifies what trap vector corresponds to what service routine, and loads
the starting address of the service routine into the trapvector table entry
and loads the service routine into memory starting at that address.
2. In the same way, the LC-3 provides an EMPTY interrupt vector table to the
o/s. The o/s determines what code should be executed in behalf of each
interrupting event, and loads the starting address of the service routine that
will execute that code into the interrupt vector table entry. ...and loads
the interrupt service routine into memory starting at that address.
So, the LC-3 is the bare machine. The o/s fills up the trap and
interrupt vector tables with starting addresses, and loads the corresponding
service routines into their proper locations.
The fact that there ARE interrupt and trap vector tables is part of the LC-3.
The CONTENTS of these tables are part of the O/S. All the service routines
are part of the O/S.
Since we do not have a full blown O/S in EE 306, what I have done is written
some of the O/S code so you could have the O/S do certain things for you.
These are the trap routines for TRAP x20, x21, x22, x23, x25.
In the final programming assignment, I wanted you to have some feel for how
interrupts work. I could have written the keyboard interrupt service routine
for you, and I could have installed it in the simulator, and stored its
starting address into x0180. I decided to let you have the fun of doing that
yourself
I hope this is better. If not, and you still have questions, please ask again
or see one of the TAs.
Yale Patt