6.033 - Computer System Engineering Memo assignment

Your first writing assignment in 6.033 will be to write a memo related to Design Project 1. The memo must be submitted online by 11:59 pm, Feb. 14.

The DP1 memo is the beginning of a conversation between you and your manager about design project 1. You are bringing a new idea to your manager, justifying its value, and proposing that you work on this new project. The memo should

You will receive feedback from your communication instructor, including suggestions on how to develop this memo into the design proposal. Your TAs will also review the memo and give feedback on your technical material.

We will be posting the details of Design Project 1 next week, but for the purposes of this memo, all you need to know are the high level details of the problem, which we have given below.

The Problem

Your job in Design Project 1 is to design a concept similar to Smart Folders on MacOS or Search Folders on Windows Vista into the UNIX file system. The goal is for the user to be able to create special "virtual" directories that contain the results of a file search query as symbolic links to the original files (see Section 2.5/Page 104 of the textbook for a discussion of symbolic links). The main challenge is to do this in a manner that maintains performance of both the virtual directories that contain the search results and the directories that are being searched.

Your search folders interface will take the form of a command-line tool with the following usage:

searchmount mountpoint searchpath [expression]

This command creates a new directory mountpoint and makes the new directory appear to contain symbolic links to files under searchpath matching the search query given in expression.

The expression given will be in a format similar to the one accepted by the UNIX find command. Several variations of the find command exist depending on whether you are using Linux, BSD, MacOS etc., but your system must support the following kinds of expressions:

Your design will take the form of an operating system extension that implements these features; it will need to be able to efficiently create virtual directories over search paths that contain millions of files, without introducing significant delays in the performance of the file system.