Aos Project 2
Aos Project 2
Aos Project 2
Second Phase
ASSUMPTIONS: Jobs may have program errors PI interrupt for program errors introduced No physical separation between jobs Job outputs separated in output file by 2 blank lines Paging introduced, page table stored in real memory Program pages allocated one of 30 memory block using random number generator Load and run one program at a time Time limit, line limit, out-of-data errors introduced TI interrupt for time-out error introduced 2-line messages printed at termination NOTATION M: memory IR: Instruction Register (4 bytes) IR [1, 2]: Bytes 1, 2 of IR/Operation Code IR [3, 4]: Bytes 3, 4 of IR/Operand Address M[&]: Content of memory location & IC: Instruction Counter Register (2 bytes) R: General Purpose Register (4 bytes) C: Toggle (1 byte) PTR: Page Table Register (4 bytes) PCB: Process Control Block (data structure) VA: Virtual Address RA: Real Address TTC: Total Time Counter LLC: Line Limit Counter TTL: Total Time Limit TLL: Total Line Limit EM: Error Message : Loaded/stored/placed into INTERRUPT VALUES SI service intrpt= 1 on GD = 2 on PD = 3 on H TI time inrpt = 2 on Time Limit Exceeded error :3 PIprog intrpt = 1 Operation Error = 2 Operand Error = 3 Page Fault if due to GD its valid always LR invalid SR valid
PD invalid,
CR-invalid
Error No Error Out of Data Line Limit Exceeded Time Limit Exceeded Operation Code Error Operand Error Invalid Page Fault
MOS (MASTER MODE) Case TI and SI of TI SI 0 1 0 2 0 3 2 1 2 2 2 3 Case TI and PI of TI PI 0 1 0 2 0 3 2 2 2 READ If next data card is $END, TERMINATE (1) Read next (data) card from input file in memory locations RA through RA + 9 EXECUTEUSERPROGRAM WRITE LLC LLC + 1 If LLC > TLL, TERMINATE (2) Write one block of memory from locations RA through RA + 9 to output file EXECUTEUSERPROGRAM TERMINATE (EM) Write 2 blank lines in output file Write 2 lines of appropriate Terminating Message as indicated by EM LOAD 2 1 2 3
Action READ WRITE TERMINATE (0) TERMINATE (3) WRITE, THEN TERMINATE (3) TERMINATE (0)
Action TERMINATE (4) TERMINATE (5) If Page Fault Valid, ALLOCATE, update page Table, Adjust IC if necessary, EXECUTE USER PROGRAM OTHERWISE TERMINATE (6) TERMINATE (3,4) TERMINATE (3,5) TERMINATE (3)
LOAD While not e-o-f Read next (program or control) card from input file in a buffer Control card: $AMJ, create and initialize PCB ALLOCATE (Get Frame for Page Table)= random no. generator. Not repeated and global Initialize Page Table and PTR Endwhile $DTA, STARTEXECUTION $END, end-while Program Card: ALLOCATE (Get Frame for Program Page) call random no. gen create frame Update Page Table Load Program Page in Allocated Frame End-While End-While STOP STARTEXECUTION IC 00 EXECUTEUSERPROGRAM END (MOS) EXECUTEUSERPROGRAM (SLAVE MODE) ADDRESS MAP (VA, RA) Accepts VA, either computes & returns RA or sets PI 2 (Operand Error) or PI 3 (Page Fault) LOOP ADDRESSMAP (IC, RA) //IC = VA If PI 0, End-LOOP (F) //no error IR M[RA] IC IC+1 ADDRESSMAP (IR[3,4], RA) If PI 0, End-LOOP (E) Examine IR[1,2] LR: R M [RA] SR: R M [RA] CR: Compare R and M [RA] If equal C T else C F BT: If C = T then IC IR [3,4] //no address map GD: SI = 1 (Input Request) PD: SI = 2 (Output Request) H: SI = 3 (Terminate Request) // no address map Otherwise PI 1 (Operation Error) End-Examine End-LOOP (X) X = F (Fetch) or E (Execute)
Extend the memory to 300 words instead of 100 words Use page table for every prog. Its size 10 prog card Use program control register storing info of tha tprog, eg= Load random no generator (0 to 29) PCR = IC, IR, PTR,TTC,TTL,TTC,TLL, SI,PI,TI