360 likes | 543 Views
Chapter 11: File System Implementation. Chapter 11: File System Implementation. File System Structure File System Implementation Directory Implementation Allocation Methods Free-Space Management Efficiency and Performance Recovery Log-Structured File Systems. File-System Structure.
E N D
Chapter 11: File System Implementation • File System Structure • File System Implementation • Directory Implementation • Allocation Methods • Free-Space Management • Efficiency and Performance • Recovery • Log-Structured File Systems
File-System Structure • File structure • Logical storage unit • Collection of related information • File system resides on secondary storage (disks) • File system organized into layers • File control block – storage structure consisting of information about a file
Layered File System Summary • I/O control – device drivers & interrupt handlers • Basic File System – issues command to device driver to read/write physical blocks (uses numeric disk address: drive 1, cyl 73, track 2, sector 10) • File-Organization Module – translates logical block address to physical block address, manages free-space • Logical File System – Manages the “metadata” – information relating to the file-system structure via FCBs
Overview • On- Disk structures • Boot control block – information needed to boot the system • Partition control block – contains partition details – number of blocks in partition, size of block, free- block data • Directory structure – contains data about organization of files • FCBs – actual file data • In-Memory structures • Partition table – information about mounted partitions • Directory structure – recently accessed directories • System-wide open-file table – FCB of open file • Per-process open-file table – pointer to system-wide open-file table’s entry … (index is returned from open( ))
In-Memory File System Structures • The following figure illustrates the necessary file system structures provided by the operating systems. • Figure 12-3(a) refers to opening a file. • Figure 12-3(b) refers to reading a file.
Directory Implementation • Linear list of file names with pointer to the data blocks. • simple to program • time-consuming to execute • Hash Table – linear list with hash data structure. • decreases directory search time • collisions – situations where two file names hash to the same location • fixed size – difficult to change size of directory- must change hash function and reorganize all entries
Allocation Methods An allocation method refers to how disk blocks are allocated for files: • Contiguous allocation • Linked allocation • Indexed allocation
Contiguous Allocation • Each file occupies a set of contiguous blocks on the disk. Advantages • Simple – only starting location (block #) and length (number of blocks) are required. • Entire file can be read from disk in one operation • Random access. Disadvantages • Need to know maximum size at creation • Extreme fragmentation until reaches fullsize • Files cannot grow – size may be underestimated • Placement strategies – first fit/best fit
Extent-Based Systems • Many newer file systems (I.e. Veritas File System) use a modified contiguous allocation scheme. • Extent-based file systems allocate disk blocks in extents. • An extent is a contiguous block of disks. Extents are allocated for file allocation. A file consists of one or more extents.
pointer block = Linked Allocation • Each file is a linked list of disk blocks: blocks may be scattered anywhere on the disk.
Linked Allocation (Cont.) Advantages • Simple – need only starting address • Free-space management system – no waste of space • Fragmentation only in last block Disadvantages • No random access • If one block goes bad – lose entire file • Pointer is substantial overhead Alternative: collect blocks into clusters and allocate clusters – pointers use much smaller percentage of disk space
Linked using Index • Remove pointer from data block and store pointer in a table Advantages • Speed up random access • Lookup can be done in memory Disadvantages • Tables needs to be in memory • Small blocks create large tables Example: File Allocation Table – Index set aside at start of disk partition. Indexed by physical blocks (0 indicates free block).
Indexed Allocation • Brings all pointers together into the index block. The ith index indicates physical address of ith block • Logical view. index table
Indexed Allocation (Cont.) Advantages • Random access is simple and fast • Files can grow – add entry to index Disadvantages • Index table has fragmentation • Random access How large should the index block be? How should we index large files? • Linked scheme – link several indexes together • Multilevel index – use first level to point to next level • Combine – UNIX inode scheme
Indexed Allocation – Multilevel outer-index file index table
Free-Space Management Bit vector (n blocks) 0 1 2 n-1 … 0 block[i] free 1 block[i] occupied bit[i] = Block number calculation (number of bits per word) * (number of 0-value words) + offset of first 1 bit
Free-Space Management (Cont.) • Bit map requires extra space. Example: block size = 212 bytes disk size = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (or 32K bytes) • Easy to get contiguous files
Free-Space Management (Cont.) Linked list (free list) - free list head pointer points to first free block. • Cannot get contiguous space easily • No waste of space – only one pointer to keep in memory Allocation – remove block on front of list, change head pointer to next block Adding free block – add to front of list
Free-Space Management (Cont.) Grouping – Use first free block to store the next n free block addresses. At end of this block point to n+1 block which contains the next n free blocks. Only one block needs to be stored in memory. • Allocation – delete first entry in first block • Adding to free list – add entry to first available spot in block (may need to go to next block) Counting – If blocks are allocated contiguously – store address of start block and number of free blocks in the same format as grouping
Free-Space Management (Cont.) • Need to protect: • Pointer to free list • Bit map • Must be kept on disk • Copy in memory and disk may differ. • Cannot allow for block[i] to have a situation where bit[i] = 1 in memory and bit[i] = 0 on disk. • Solution: • Set bit[i] = 1 in disk. • Allocate block[i] • Set bit[i] = 1 in memory
Efficiency and Performance • Efficiency dependent on: • disk allocation and directory algorithms • types of data kept in file’s directory entry • Performance • disk cache – separate section of main memory for frequently used blocks • free-behind and read-ahead – techniques to optimize sequential access • improve PC performance by dedicating section of memory as virtual disk, or RAM disk.
Recovery • Consistency checking – compares data in directory structure with data blocks on disk, and tries to fix inconsistencies. • Use system programs to back up data from disk to another storage device (floppy disk, magnetic tape). • Recover lost file or disk by restoring data from backup.