Functional specification is list of capabilities of RCOS.java
Hardware
simulated CPU is pcode machine with additions for interrupt
handling (??) and paged memory
CPU will carry out obvious steps in instruction execution
cycle (instruction fetch, instruction execution, check for
interrupts and handle interrupts)
simulated disk is similar to RCOS disk however code will need
to be modified to stay inline with new interrupt handling
mechanism
should support multiple disks
terminal similar to RCOS including support for multiple terminals
size of RAM will need to be increased
NetworkCard simulation given time
all hardware simulation belongs to a class Machine
Programming Language
machine language is Pcode
source language will be Pascal (hopefully full version) and
possibly C++/C subset if appropriate compiler can be found/built
some work will need to be done so that code and data (variables and
stack) are placed into separate pages
theoretically possible to provide a compiler that runs from within
RCOS
which implies the need for a shell (and editor??) that runs on RCOS
Animation/Simulation
graphical animation/representation of all OS elements (will include
some representation of H/W elements)
provide as much direct manipulation as possible
ability to single step simulation at individual machine instruction,
interrupts, OS events, quantum switches through various levels
up to not at all
ability for guided tours implies need to automate setup and running
of system
ability to use components of the animation/OS to demonstrate
particular algorithms e.g. talking about CPU scheduling it would
be nice to show just the context switching going on
AnimationSupervisor is responsible for upkeep of main screen and
for delivering messages between the various other animators
Operating System
keep statistics in much the
same way as Nachos but provide graphical representation of stats
for each execution and ways to compare (useful for experiementation)
no support for OS threads at this time
base MMU is just real memory but support for virtual memory should
be added real soon, especially using TLB
programs will be divided into two regions text and data (including
both types of data and stack)
at a minimum the file system should support the RCOS CP/M like
file system, but preferably a more complete system that supports
directory hierarchies should be included
have a system call that allows a thread/process to give up CPU
(useful in testing concurrency problems)
simple mechanism for the addition of more system calls, probably
to hard to do will always require re-compilation of compiler
and Java
simulated hardware - the hardware RCOS runs on
CPU, ?RAM?, Disk, Terminal, ?NetworkCard?, Machine
operating system
Kernel, CPUScheduler, DiskScheduler, FileSystem, MemoryManager,
Process, ?File?, ?Directory?,
animation - responsible for the graphical representation, direct
manipulation
AnimationSupervisor, CPUSchedulerAnimator, KernelAnimator,
DiskSchedulerAnimator, FileSystemAnimator, MemoryManagerAnimator,
?ProcessAnimator (new thread for every process selected)?
?FileAnimator? ?DiskBlockAnimator?