Filesystem Support in Minix

The Minix operating system, compatible with UNIX V7 at the system call level, was written by Andrew Tanenbaum and described in his book Operating Systems, Design and Implementation [TANE87]. As a lecturer in operating systems for 15 years, he found it difficult to teach operating system concepts without any hands-on access to the source code. Because UNIX source code was not freely available, he wrote his own version, which although compatible at the system call level, worked very differently inside. The source code was listed in the book, but a charge was still made to obtain it. One could argue that if the source to Minix were freely available, Linux may never have been written. The source for Minix is now freely available across the Internet and is still a good, small kernel worthy of study.

Because Minix was used as a teaching tool, one of the goals was to allow students to work on development of various parts of the system. One way of achieving this was to move the Minix filesystem out of the kernel and into user space. This was a model that was also adopted by many of the microkernel implementations.

Minix Filesystem-Related Structures

Minix is logically divided into four layers. The lowest layer deals with process management, the second layer is for I/O tasks (device drivers), the third for server processes, and the top layer for user-level processes. The process management layer and the I/O tasks run together within the kernel address space. ...

Get UNIX Filesystems: Evolution, Design, and Implementation now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.