MINIX3 has a Virtual File System (VFS) server process, which handles all file-related process state and system calls, and passes on calls to the right File System (FS) server processes as appropriate. Context switches between processes are expensive however, so if VFS can avoid making calls to FS servers, it can generally complete the system call faster. In particular, path name lookups happen very frequently, and often involve calls to several FS servers. for these reasons, we are interested in adding a name lookup cache in VFS. This cache would help resolve path names (partially or even fully), thereby possibly avoiding the need to call one ore more of those FS servers to perform an actual lookup.
We would like you to implement such a name lookup cache - possibly just a prototype, but preferably code that we can actually check in. In any case, we want you to answer these two main questions: exactly what does it take to realize this name lookup cache, and what are the resulting differences in performance?
There is an additional constraint, and that is that certain parts of the cached naming tree have to be kept up-to-date at all times. More specifically, our /proc file system should be able to use the cache to reconstruct path names from file/directory objects (think /proc/<pid>/cwd,root,exe,fd/N symlinks), despite changes to the directory structure underlying those objects. For example, if a directory is renamed, the easiest thing VFS could do is just throw out all cached entries that are beneath that directory, but in this case, VFS would have to correctly apply the rename to its cache as well. Unless you can find a better solution to this problem - this is all open for discussion.
In principle this is an IPA project, but it may be possible to turn this into an MSc project instead as well. Come talk to us!