File systems are an integral part of any operating system with the capacity for long-term storage. There are two distinct parts of a file system, the mechanism for storing files and the directory structure into which they are organized. In modern operating systems where several users can access the same files simultaneously, it has also become necessary for such features as access control and different forms of file protection to be implemented. A file is a collection of binary data.
A file could represent a program, a document, or in some cases, part of the file system itself. In modern computing, it is quite common for several storage devices attached to the same computer. A common data structure such as a file system allows the computer to access many storage devices in the same way; for example, when you look at the contents of a hard drive or a CD, you view it through the same interface even though they are completely different mediums with data mapped on them in completely different ways.
Files can have very different data structures within them but can all be accessed by the same methods built into the file system. The arrangement of data within the file is then decided by the program creating it. The file systems also store several attributes for the files within it. The system also stores the location of a file. In some file systems, files can only be stored as one contiguous block. This has simplified storage and access to the file as the system then only needs to know where the file begins on the disk and how large it is.
However, it leads to complications if the file is to be extended or removed as there may not be enough space available to fit the larger version of the file. Most modern file systems overcome this problem by using linked file allocation. This allows the file to be stored in any number of segments. The file system then has to store where every block of the file is and how large they are. This greatly simplifies file space allocation but is slower than contiguous allocation as the file can be spread out all over the disk.
Modern operating systems overcome this flaw by providing a disk defragmenter. This is a utility that rearranges all the files on the disk to be all in contiguous blocks. Information about the files’ protection is also integrated into the file system. Protection can range from the simple systems implemented in the FAT system of early windows where files could be marked as read-only or hidden to the more secure systems implemented in NTFS. The file system administrator can set up separate read and write access rights, different users or user groups.
Although file protection adds a great deal of complexity and potential difficulties, it is essential in an environment where many computers or users can access the same drives via a network or time-shared system such as raptor. Some file systems also store data about which user created a file and at what time they created it. Although this is not essential to the running of the file system, it is useful to the system users. For a file system to function properly, they need several defined operations for creating, opening, and editing a file. Almost all file systems provide the same basic set of methods for manipulating files.
A file system must be able to create a file. To do this, there must be enough space left on the drive to fit the file. There must also be no other file in the directory to be placed with the same name. Once the file is created, the system will make a record of all the attributes noted above. Once a file has been created we may need to edit it. This may be simply appending some data to its end or removing or replacing data already stored within it. When doing this, the system keeps a write pointer marking where the next write operation to the file should occur. In some cases, it is not possible to read all the files into memory.
File systems also allow you to deposit the read pointer within a file. The system needs to know how far into the file you want the read pointer to jump to perform this operation. An example of where this would be useful is a database system. When a query is made on the database, it is obviously inefficient to read the whole file until the required data is. Instead, the application managing the database would determine where in the file the required bit of data is and jump to it. This operation is often known as a file seek.