200 likes | 335 Views
Student Computer Simulation. Barbara Ericson Georgia Tech Sept 2005. 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)
E N D
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