Assignment 1 complete
Test script completes
Use "Purge" to regain control from GladOS
commit from memory in to gh-pages
Merge branch 'main' into gh-pages
Disabled testing script for further development (assignment 3)
Virtual memory implemented
TODO - modify shell commands to work with virtual memory
ShellLoad() modified to use the MMU
TODO - Update MMU.load(args) to use logical memory
MMU.load(opCodes, partition) modified, loading correctly
TODO - possible bug in shellLoad() command.  Verify that it's skipping loads when _MMU.getFreePartition() returns -1
Load modified to use partitions.  Verified user program output on run working.
KNOWN ISSUE - Run fails if pid > 0 (specifically, branch isn't working)
TODO - implement pids for run command, verify branch works correctly across memory partitions
Run modified to use pids, memory partitioning enforced
TODO - clean up memory after process terminates, mark partitions free.  better feedback when loading fails (specifically, say why - like no free partitions, etc...)
Software Interrupt implemented
CPU Execute modified to queue SWI on kernel int queue on invalid opcode
TODO - Better processing of SWI's: clean up memory after process terminates, mark partitions free, clean up the ready queue.
better feedback when loading fails (specifically, say why - like no free partitions, etc...)
  still need a scheduler
Cpu.execute() modified to enqueue SWI invalid opcode
Cpu.translateAddress() modified to ensure memory protection
Cpu.translateAddress() modified to use SWI's for oob and invalid address errors.
TODO - Better processing of SWI's: clean up memory after process terminates, mark partitions free, clean up the ready queue.
better feedback when loading fails (specifically, say why - like no free partitions, etc...)
  still need a scheduler
Ready Queue display added (replaced active PCB display)
TODO - Better processing of SWI's: clean up memory after process terminates, mark partitions free, clean up the ready queue.
better feedback when loading fails (specifically, say why - like no free partitions, etc...)
  still need a scheduler
Implemented Kill
Run and Kill updated to use shellPIDcheck()
known bug: ready queue clean up not happening on normal completion or user program. (works on kill though)
TODO - Move kill and run to kernel, call kernel routines from shell.  This should facilitate consistent cleanup of ready queue on ab/normal termination of user code.
CPU scheduler
RunAll
Quanta
fixed load feedback when no free partitions
Implemented Kill
Run and Kill updated to use shellPIDcheck()
known bug: ready queue clean up not happening on normal completion or user program. (works on kill though)
TODO - Move kill and run to kernel, call kernel routines from shell.  This should facilitate consistent cleanup of ready queue on ab/normal termination of user code.
CPU scheduler
RunAll
Quanta
PS
fixed ready queue clean up bug
TODO - Flesh out CPU scheduler
shell commands:
RunAll
Quanta
PS
implemented shellPS() to list processes
TODO - Flesh out CPU scheduler
shell commands:
RunAll
Quanta
Implemented shellQuantum()
TODO - Flesh out CPU scheduler
shell commands:
RunAll
Runall implemented, chains loaded programs
TODO:
 implement the context switching
 flesh out the scheduler switch cases as needed
Completely retooled the ready queue, scheduler and runall
TODO - finish context switching
iProject 3 complete and tested
known issues:
killing a process while runall is executing can result in a zombie, but not every time.