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 undersearchpath
matching the search query given inexpression
.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:
- File size is greater than, less than, or equal to a given value.
- Time of file's creation, last modification, or last use is greater than, less than, or equal to a given value.
- File's user or group ID is equal to or not equal to a given value.
- File's permission bits match a specified value exactly, or at least one of the specified bits are set, or all of the specified bits are set.
- File has an extended attribute with a given name. (E.g. with the
-xattrname
syntax of the MacOS version offind
).- Boolean combinations of the above (e.g. with the "operators" supported by
find
).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.