Currently your operating system has only been able to run one
process, probably sosh
. In this milestone you will
implement the process related system calls:
process_create
, process_delete
,
my_id
, process_status
and
process_wait
. Obviously each new process should run
it its own address space. This will require you to carefully
manage L4 memory spaces.
Currently process_create
need only run executables
contained within the DIT image, and need only run these
executables in-place, and only run them successfully once.
The code update will gives you a dit_lookup
function
which will find a named entry from the dite image.
The code update also includes a new sosh which has an
exec
command. This command provides a simple
interface to the process_create
system call. In a
similar style to UNIX shells, if the third argument to
exec
is an & then it will run
the process in the background. Otherwise sosh will use
process_wait
to wait until the child process has
finished executing.
As with most milestones, a lot of the design work will be working out suitable data structures to hold process information. You may also need to extend other data structures in your operating system to handle multiple processes.
You also probably want to change your crt
so that when a
process's main function exits it will kill itself.
There is a new code update available.
This update contains libelf which will be used in milestone 8, and updated copy of sosh, a new sos.h header file, some additions to the dite library, and bug fixes for lwip. If you have modified sosh you may want to keep a backup of it as this update will overwrite it.
You should show sosh
executing a sub-process and
show that the ps
command works. As processes will be
running in-place you need only execute each one once.
You may want to add a kill
command to sosh to show
that process_delete
works.
As always you should be able to explain the data structures and algorithms used.