CPSC 457: Operating Systems

Professor Carey Williamson

Fall 2008

Assignments

CPSC 457 will have four programming assignments. In aggregate, the assignments count 30% toward your final grade in CPSC 457. Each assignment will be graded on a percentage scale. All assignments will be equally weighted.

Assignments are to be done individually, unless stated otherwise in the assignment specification.

Some possible ideas for assignments are: writing a shell command interpreter; adding a new system call to the Linux kernel; implementing size-based scheduling in the Linux kernel; evaluating file system space allocation policies; designing a simple encrypted file system; and elevator scheduling policies for disk subsystems.

Assignments are to be submitted on time to your TAs using the submit system. For a brief overview, see David Ma's CPSC 457 TA page.

Assignment 1: The Unix Shell

Details on Assignment 1 are available here. It was due on Thursday, October 2 at 11:59pm. Suggested grading scheme.

Here is a sample solution courtesy of student Tom Flanagan. README biggies oldies Makefile myshell.h myshell.c userinput.c processline.c runcommand.c

Here are my own shell script examples: biggies oldies

Assignment 2: CPU Scheduling

Assignment 2 is available here. It was due on Thursday, October 23 at 11:59pm. Here are some starter tips as well.

Here is the suggested grading scheme, along with the pieces of a sample solution: spinner.c victimize.c fork.c hider.c ass2.out

Assignment 3: Memory Management

Assignment 3 is available now. It is due on Thursday, November 20 at 11:59pm. Here are some starter tips.

Here is the suggested grading scheme.

Here is a sample solution courtesy of student Amber Ott. README Makefile snap.c snapshot.c snapper.h unistd_32.h syscall_table_32.S SimpleSnapshot Filtering Zooming Movie

Assignment 4: File Systems

Assignment 4 is available now. It is due on Tuesday, December 2 at 11:59pm. Here are some tips.

Here is the proposed grading scheme.

Here is a sample solution courtesy of student Mark Przepiora. README revcat.c read_write.c inode.c balloc.c xattr.c random.c random.h
QuickTime movie showing random block allocation