------------- CONCEPT PAPER ------------- Virtual File System (vf 00.01.00): ---------------------------------- In systems with more than one file system active at any given time the need for a virtual file system arises. The virtual file system should be a part of the operating system not only because it needs special services from the operating system but also because of sheer speed. The virtual file system manages all real file systems mounted in the system. The rest of the operating system and user applications access all files through only one interface, that of the virtual file system. It is the responsibility of the virtual file system to dispatch all calls to the real file systems. Operating System Services: -------------------------- The virtual file system depends on different services of the operating system like the memory manager. It also needs information about all block devices connected to the system and partition information. It is the responsibility of the operating system loader to collect and provide these pieces of information. Of course, the virtual file system requires device drivers to be already loaded and running. Interface of the Virtual File System: ------------------------------------- The virtual file system will supply the following functions: - dir, - format, - make directory, - remove directory, - create file, - delete file, - open file, - read file, - write file, - close file and many more. Caching: -------- The virtual file system will incorporate methods for aggressive caching. But that will be implemented in a future version. Locking: -------- Of course, the virtual file system should also provide services to enforce mutual exclusion while operating on files. This will also be implemented at a later stage of the project. Wolfpack File System (fs 00.01.00): ----------------------------------- The Wolfpack file system has been designed with the following criteria in mind: - high speed access, - ease of use/update, - economy of storage, - aggressive caching, - security and - recoverability just to name the most important. The Wolfpack file system uses variable contiguous portions of blocks on the secondary storage device for file allocation. This provides better performance when accessing files because multiple blocks can be read in at a time (improves I/O performance). Besides, the order in which sectors a read from disk also has a great effect on performance. The variable size avoids waste of space usually encountered with clusters. The block size is 512 bytes which is the smallest allocatable chunk on a disk. This concept is easy to use because all that is required is a pointer to the first block and the number of blocks allocated. This results in small file allocation tables. Of course, the major drawback to this file organization is the fragmentation which will occur, making it difficult to find contiguous blocks of sufficient length. Thus it will be necessary to perform a defragmentation algorithm from time to time. It could be a process always running in the background in a multitasking operating system environment or just called before shutdown. The Wolfpack file system also addresses some features forgotten in today's file systems: - instant display of file/name/icon in a graphical file manager, - instant start of an application associated with a particular file without traversing a huge registry and - easy deinstallation of files. The Wolfpack file system supports disks of up to 8589934592 TB and file sizes of up to 16777216 GB. Wolfpack: --------- The name Wolfpack derives from my desire to write an SMP operating system some time (maybe next century). In my opinion Wolfpack is the ideal name for a multiprocessor operating system. Revision Convention: -------------------- Let's take vf.00.01.00 or some_module.xx.yy.zz: vf stands for virtual file system, xx is a major release, yy a minor release number and zz are just bug-fixes. Copyright (c) Firix Software Development and Adrian Hilgardth. All Rights Reserved.