CSCE 351 Operating System Kernels
Fall 2001
Steve Goddard
In this assignment each team will create a simple command shell, called smsh (for Simple MINIX Shell), for your MINIX system. In general your shell should follow the shell template shown in Figure 1-10 of your textbook.
You do not need to provide shell redirection, pipes, background execution, history, or other fancy shell features. Your shell should, however, be able to read in a correctly typed command (program) and its arguments; fork() and execve() the program, passing the correct input parameters; wait for the command (program) to terminate; and then prompt the user for another command. If the user types a command that is not in the environment path, or the path given is incorrect, then an error message should be generated. Your shell should only terminate if an exit command is given or if the kill signal is received.
This programming assignment is not meant to be difficult. Its purpose is to familiarize you with some of the basic system calls and the MINIX environment. You will also need to create and turn in a simple Makefile that will build your program.
The programs you hand in should work correctly and be documented. When you hand in your programming assignment, you should include:
1. A program listing containing in-line documentation.
2. A separate (typed) document of approximately two pages describing the overall program design, a verbal description of "how it works" including the basics of what the system is doing underneath, and design tradeoffs considered and made. Also describe possible improvements and extensions to your program (and sketch how they might be made).
3. A separate description of the tests you ran on your program to convince yourself that it is indeed correct. Also describe any cases for which your program is known not to work correctly.
4. A make file that compiles your program(s).
Please hand in your source file(s), the Makefile, and your documentation using the Web handin program. If your program is handed in after 6:00 pm on October 11 it will considered late.
The program should be neatly formatted (i.e., easy to read) and structured and documented. Use the handin program to submit your program(s) for grading. This is assignment 1. Your grade will be determined as follows:
Program Listing
works correctly 40%
in-line documentation 15%
quality of design/readability 25%
Design Document 15%
Thoroughness of test cases 05%