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.
You are supplied with a dit_lookup
function which
will find a named entry from the dite image.
sosh 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.
NOTE: The stime and ctime fields of the process_t data structure are optional. Unlike previous versions of L4, Pistachio does not maintain these values for you.
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.
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.