Student Computer Simulation Barbara Ericson Georgia Tech Sept 2005

advertisement
Student Computer Simulation
Barbara Ericson
Georgia Tech
Sept 2005
Georgia Institute of Technology
Operating System - Organizer
• Keep track of executing
programs
– Give them time with the CPU
– A program gets a slice of time
with the CPU
• Keep track of memory
– Decide when to move some
data to disk (virtual memory)
• Keep track of disk space
– Decide where to store stuff
• Interface with the user
– Accept input via keyboard and
mouse
• Keep track of devices
– USB drives, cameras, etc
Georgia Institute of Technology
Try it Out
• Type ctrl-alt-delete
(press all keys at the
same time)
– To bring up the task
manager
– Click on each of the
tabs
• To see the applications
running
• To see the processes
that are running
• To see how much
memory is used
Georgia Institute of Technology
CPU – Calculator Plus More
• Add, subtract, multiply,
divide numbers
• Compare numbers
– Characters are encoded as
numbers
• Jump to a new instruction
based on the result of a
comparison
• Can only work with one
program at a time!
– Keeps a program counter
which is the address of the
currently executing
instruction
Georgia Institute of Technology
Memory – Whiteboard
• Holds the currently
executing programs and
their data
• Clears when the power is
turned off
• Much faster than disk
• Has addresses for data
based on bytes
• Can get data from an
address
• Can put data into an
address
Georgia Institute of Technology
Disk – Storage Facility
• Stores data and
programs
• Doesn’t clear when
the power is turned
off
• Much slower than
memory
• Much cheaper than
memory
Georgia Institute of Technology
Program - Recipe
• Set of instructions to
the computer
• Carried out by the
CPU
• Accomplishes some
task
Georgia Institute of Technology
Computer Startup
• The power is turned on
– The Basic Input/Output System (BIOS)
• Loads from a memory chip (ROM) and executes
• Initializes the hardware (keyboard, disk drive, mouse, etc)
– Then loads and executes the operating system
• The Operating System waits for user input
• The user starts a program
– By double clicking on an icon or file
– Or by click on Start->Program->Some Program
Georgia Institute of Technology
Program Execution
• The operating system creates a process
for the program and reads it into memory
• It gives it a time slice of the CPU
• It saves the current state of the CPU when
it gives another program a time slice of the
CPU
– Context switch
• It can restore the state of the CPU
Georgia Institute of Technology
Student Computer Simulation
– Operating System – need 1
• Keep a list of programs to be run
• Tell CPU to run a program (set program counter to memory
address)
• Tell CPU to switch to another program
– Central Processing Unit – need 1
• Keep track of the contents of Registers A, B, and C and the
program counter
• Be able to save current state to memory
– Memory – need 1
• Have a list of values for addresses (on board)
– Disk – need 1
• Hold original programs and byte code versions
Georgia Institute of Technology
Simulation
• Give the person playing the disk the two programs and
the assembler version of the programs
• Have the operating system ask for program 1 to be
loaded into memory at address 0
• Have the disk give a copy of the assembler version of
program 1 to the memory
– And assign an address to the start of it (0)
• Have the operating system tell the CPU to start
executing from the memory address of the first program
– Have the CPU update the program counter to 0
– Ask the memory for the instruction at this address
– Execute the instruction and increment the program counter
Georgia Institute of Technology
Simulation – page 2
• Have the operating system ask for program 2 to be loaded into
memory at address 64
• Have the disk give a copy of program 2 to the memory
– And assign an address to the start of it (64)
• Have the operating system tell the CPU to save the current state to
the memory
• Ask memory to save the values of the registers and program counter
to 200
• Have the operating system tell the CPU to start executing from the
memory address of the second program (64)
– Have the CPU update the program counter to 64
– Ask the memory for the instruction at this address
– Execute the first two instructions and increment the program counter
• Keep doing this till both programs have finished
– When a program finishes tell the CPU and it can remove the program
from the list of programs to run
Georgia Institute of Technology
Program 1
// how many pizza slices?
int numPeople = 30;
int numSlicesPerPerson = 2;
int totalSlices = numPeople *
numSlicesPerPerson;
int numPizzas = totalSlices / 10;
Georgia Institute of Technology
Compiling
• Computers can’t execute source code
– They need to execute bytecodes
• Instructions for the machine the code is running on
– 1 might be add A and B and store the result in C
• We compile Java source code Name.java into
Name.class
– bytecodes for a virtual machine
• Not any particular machine
• Then we execute Java class files
– Runs a Java Virtual Machine to interpret the bytecodes
– Or compile to native bytecodes using a just-in-time compiler
Georgia Institute of Technology
Assembler
• Low level programming language
– Names for instructions instead of numbers
• ADD instead of 1
• LOADA instead of 20
• Use an assembler to convert to the
bytecodes for a machine
Georgia Institute of Technology
Example Assembler
LOADA mem - Load register A from memory address
LOADB mem - Load register B from memory address
CONB con - Load a constant value into register B
SAVEB mem - Save register B to memory address
SAVEC mem - Save register C to memory address
ADD - Add A and B and store the result in C
SUB - Subtract A and B and store the result in C
MUL - Multiply A and B and store the result in C
DIV - Divide A and B and store the result in C
COM - Compare A and B and store the result in test
JUMP addr - Jump to an address
JEQ addr - Jump, if equal, to address
JNEQ addr - Jump, if not equal, to address
JG addr - Jump, if greater than, to address
JGE addr - Jump, if greater than or equal, to address
JL addr - Jump, if less than, to address
JLE addr - Jump, if less than or equal, to address
STOP - Stop execution
Georgia Institute of Technology
Program 1 Assembler
0 CONB 30 // put 30 in register B
1 SAVEB 128 // int numPeople = 30;
2 CONB 2 // put 2 in register B
3 SAVEB 132 // int numSlicesPerPerson = 2;
4 LOADA 128 // get value in address 128
5 MUL
// multiply a and b and store result in c
6 SAVEC 136 // int totalSlices = numPeople * numSlicesPerPerson;
7 LOADA 136
8 CONB 10
9 DIV
// divide a and b and store result in c
10 SAVEC 140 int numPizzas = totalSlices / 10;
11 STOP
Georgia Institute of Technology
Program 2
•
•
•
•
// calculate if we have enough material
int width = 30;
int length = 50;
int total = width * height;
Georgia Institute of Technology
Program 2 Assembler
0 CONB 30
1 SAVEB 160 // (int width = 30)
2 CONB 50
3 SAVEB 164 // (int height = 50)
4 LOADA 160 // load width
5 LOADB 164 // load height
6 MUL
7 SAVEC 168 // (int total = width * height)
8 STOP
Georgia Institute of Technology
Download