File System Implementation - aryanjoshi0823/5143-Operating-System GitHub Wiki

Implementing a file system within an operating system involves orchestrating various on-disk and in-memory data structures to manage how data is stored, organized, and accessed on storage devices. This process ensures efficient data retrieval, security, and reliability.

Key Components of File System Implementation:

  1. On-Disk Structures:

    • Boot Control Block: Contains essential information for booting the operating system from the storage volume. In NTFS, it's known as the partition boot sector; in UNIX, it's the boot block.
    • Volume Control Block (Superblock): Stores details about the file system, such as the total number of blocks, block size, free blocks count, and pointers to free blocks.
    • Directory Structures: Maintain file names and their corresponding inode numbers or addresses, facilitating file organization and hierarchical structuring.
    • File Control Blocks (Inodes): Contain metadata for individual files, including size, permissions, timestamps, and disk block pointers.
  2. In-Memory Structures:

    • In-Memory Mount Table: Records information about each mounted volume, aiding in translating file requests to the correct volume.
    • Directory-Structure Cache: Holds recently accessed directory information to expedite directory searches.
    • System-Wide Open-File Table: Tracks all open files across the system, including their in-memory file control blocks and other pertinent data.
    • Per-Process Open-File Table: Maintains information about files opened by each process, including pointers to the system-wide open-file table and current file offsets.

Steps in File System Implementation:

  1. Partitioning the Storage Device:

    • The storage device is divided into partitions, each potentially housing a distinct file system or serving specific purposes like swap space.
  2. Mounting File Systems:

    • The operating system mounts file systems by associating them with directories in the global directory structure, enabling seamless access to files across different volumes.
  3. File Operations:

    • File Creation: Allocates a new file control block, updates directory structures, and reserves disk space.
    • File Reading/Writing: Utilizes the open-file tables to access file control blocks, translating logical file operations into physical disk operations.
    • File Deletion: Removes directory entries, deallocates associated disk blocks, and updates free space management structures.
  4. Free Space Management:

    • Bitmaps: Use bits to represent the allocation status of blocks; a '0' indicates a free block, while a '1' signifies an occupied block.
    • Free Lists: Maintain linked lists of free blocks, facilitating efficient allocation and deallocation during file operations.
  5. Caching and Buffering:

    • Implementing caches for frequently accessed data and directories reduces disk I/O operations, enhancing overall system performance.
  6. Journaling and Log-Structured File Systems:

    • Employing journaling techniques records changes before they are committed, aiding in recovery after crashes and ensuring file system consistency.