Design and implementation of a VFS buffer cache for iPosix
Design and implementation of a VFS buffer cache for iPosix
Background
For the Computing Science module "Operating Systems Practical" at the University of Oldenburg, the teaching operating system OS/161 has been used up to now. This operating system provides a very good basis for learning the structure, functionalities and requirements of an operating system. However, as OS/161 was largely written in C, there is a lack of precise delimitation of components, for example, which often makes it very difficult to replace them. Furthermore, library functions are usually not fully modelled in accordance with Posix, which makes them unnecessarily difficult to use. Currently, the module "Operating Systems Practical Course" focuses on synchronisation concepts, process modelling, system calls and virtual memory, with the processing of further concepts being offered as a final project. In 2009, the iPosix teaching operating system was designed and implemented as a possible replacement for OS/161 as part of a Bachelor's thesis. This system should also serve as a basis for students to understand, analyse and implement system components themselves. Instead of OS/161, however, iPosix is written in C++ and is primarily object-orientated. The use of concepts such as design patterns from software engineering is intended to make it easier for students to understand and shorten the familiarisation period, thus enabling them to work on further concepts as part of the operating systems practical course.
Job description
The aim of the work is the conception and implementation of an extension of the previous rudimentary VFS layer of the iPosix kernel by a so-called buffer cache. The connection between an actual file system (FAT32), the virtual file system abstraction and the physical memory management is to be investigated in iPosix. Based on this, existing interfaces are to be used or extended and, if necessary, new ones designed to enable the integration of a buffer cache, as envisaged by Tanenbaum or Silberschatz.
In order to check the correct functioning of the newly implemented VFS buffer cache, it is necessary to provide some simple cache strategies. For this purpose, an overview of cache strategies is to be created and their effects examined for different read and write behaviour. From this overview, a number of iPosix userland test programs will be derived, designed and implemented to simulate different read and write behaviours, such as sequential, cyclic and direct access.