[CSE]  Advanced Operating Systems 
COMP9242 2011/S2 
UNSW
CRICOS Provider
Number: 00098G

PRINTER Printer-Friendly Version

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 in its own address space. This will require you to carefully manage seL4 address spaces.

Currently process_create need only run executables that have been concatenated by the dite program and placed in the boot image. All the functionality for process creation can be found in the om_server interface.

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.

Adding new applications

  • Pick a name for your new application that is <= 16 characters long. The dite loading library will truncate any names longer than this.
  • Create the following folder structure for your new app:
    apps/newapp
    apps/newapp/crt
    apps/newapp/crt/crt0.S
    apps/newapp/src
    apps/newapp/Makefile
    apps/newapp/Kconfig
            
  • Use the following Makefile template to create the Makefile:
               # Targets
    TARGETS := newapp.bin
    
    # Source files required to build the target
    CFILES   := $(patsubst $(SOURCE_DIR)/%,%,$(wildcard $(SOURCE_DIR)/src/*.c))
    ASMFILES := $(patsubst $(SOURCE_DIR)/%,%,$(wildcard $(SOURCE_DIR)/crt/crt0.S))
    
    # Libraries required to build the target
    LIBS := sel4c sel4 sos_interface sos
    #export DEBUG=1
    include $(SEL4_COMMON)/common.mk
            
  • Copy and appropriately modify the crt0.S from sosh or tty_test.
  • Use the following Kconfig template to create a Kconfig file:
    config APP_NEWAPP
        bool "New app"
        depends on LIB_SEL4 && LIB_SEL4_C && LIB_SOS && LIB_SOS_INTERFACE
        select HAVE_SEL4_APPS
        help
            A new app
            
  • Modify the apps/Kconfig file, adding the following line:
    source "$SEL4_APPS_PATH/newapp/Kconfig"
                
  • Now you need to include your new application in the build. At a terminal at the root of the source tree, type make menuconfig. Navigate to Applications -> newapp and select it by pressing 'Y'.
  • Now you need to modify the top level Makefile to include your new application. You should be able to look at the places where sosh and tty_test are used in this file to see where to add your application.

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 check how the crt works, so you can make sure 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.

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: 16 Sep 2011.