M7: Process management
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. Pistachio does not maintain these values
internally.
Design issues
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.
Assessment
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.
Last modified:
18 Oct 2004.
|