File System Implementation 04/05/2004 CSCI 315 Operating Systems Design 1 Acyclic-Graph Directories Have shared subdirectories and files. links: soft (symbolic) hard 04/05/2004 Unix: ln (read man page); need to keep a reference count on each file or directory. CSCI 315 Operating Systems Design 2 Acyclic-Graph Directories (Cont.) • Different names (aliasing) for the same file or directory. • If dict deletes list dangling pointer. Solutions: – Backpointers, so we can delete all pointers. Variable size records a problem. – Backpointers using a daisy chain organization. – Entry-hold-count solution. 04/05/2004 CSCI 315 Operating Systems Design 3 General Graph Directory 04/05/2004 CSCI 315 Operating Systems Design 4 General Graph Directory (Cont.) • How do we guarantee no cycles? – Allow only links to file not subdirectories. – Garbage collection. – Every time a new link is added use a cycle detection algorithm to determine whether it is OK. 04/05/2004 CSCI 315 Operating Systems Design 5 File System Mounting • A file system (partition) must be mounted before it can be accessed. Mounting allows one to attach the file system on one device to the file system on another device. • A unmounted file system needs to be attached to a mount point before it can be accessed. existing 04/05/2004 unmounted CSCI 315 Operating Systems Design 6 File Sharing • Sharing of files on multi-user systems is desirable. • Sharing may be done through a protection scheme. • On distributed systems, files may be shared across a network. • Network File System (NFS) is a common distributed filesharing method. 04/05/2004 CSCI 315 Operating Systems Design 7 Protection • File owner/creator should be able to control: – what can be done, – by whom. Discretionary Access Control (DAC) • Types of access: – – – – – – 04/05/2004 Read, Write, Execute, Append, Delete, List. CSCI 315 Operating Systems Design 8 Protection • Mandatory Access Control (MAC): – System policy: files tied to access levels = (public, restricted, confidential, classified, top-secret). – Process also has access level: can read from and write to all files at same level, can only read from files below, can only write to files above. • Role-Based Access Control (RBAC): – System policy: defines “roles” (generalization of the Unix idea of groups). – Roles are associated with access rules to sets of files and devices. – A process can change roles (in a pre-defined set of possibilities) during execution. 04/05/2004 CSCI 315 Operating Systems Design 9 Access Lists and Groups • • Mode of access: read, write, execute Three classes of users RWX a) owner access 7111 RWX b) group access 6 110 RWX c) public access 1 001 • Ask manager to create a group (unique name), say G, and add some users to the group. For a particular file (say game) or subdirectory, define an appropriate access. • owner group chmod 761 public game Associate a group with a file: chgrp G game 04/05/2004 CSCI 315 Operating Systems Design 10 File-System Structure • File structure: – Logical storage unit, – Collection of related information. • File system resides on secondary storage (disks). • File system is organized into layers. • File control block – storage structure consisting of information about a file. 04/05/2004 CSCI 315 Operating Systems Design 11 Layered File System 04/05/2004 CSCI 315 Operating Systems Design 12 A Typical File Control Block 04/05/2004 CSCI 315 Operating Systems Design 13 In-Memory File System Structures file open file read 04/05/2004 CSCI 315 Operating Systems Design 14 Virtual File Systems • Virtual File Systems (VFS) provide an objectoriented way of implementing file systems. • VFS allows the same system call interface (the API) to be used for different types of file systems. • The API is to the VFS interface, rather than any specific type of file system. 04/05/2004 CSCI 315 Operating Systems Design 15 Schematic View of Virtual File System same API for all file system types ext3 04/05/2004 FAT 32 CSCI 315 Operating Systems Design NFS 16 Directory Implementation The directory is a symbol table that maps file names to pointers that lead to the blocks comprising a file. • Linear list of file names with pointer to the data blocks: – simple to program, but… – time-consuming to execute. • Hash Table: – decreases directory search time, – collisions – situations where two file names hash to the same location, – fixed size. 04/05/2004 CSCI 315 Operating Systems Design 17 Allocation Methods An allocation method refers to how disk blocks are allocated for files: • Contiguous allocation, • Linked allocation, • Indexed allocation. 04/05/2004 CSCI 315 Operating Systems Design 18 Contiguous Allocation • Each file occupies a set of contiguous blocks on the disk. • Simple – only starting location (block #) and length (number of blocks) are required. • Random access. • Wasteful of space (dynamic storage-allocation problem). • Files cannot grow. 04/05/2004 CSCI 315 Operating Systems Design 19 Contiguous Allocation • Mapping from logical to physical. Q LA/512 R – Block to be accessed = ! + starting address – Displacement into block = R 04/05/2004 CSCI 315 Operating Systems Design 20 Contiguous Allocation of Disk Space 04/05/2004 CSCI 315 Operating Systems Design 21 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 set of block. Extents are allocated for each file. A file consists of one or more extents. 04/05/2004 CSCI 315 Operating Systems Design 22 Linked Allocation Each file is a linked list of disk blocks: blocks may be scattered anywhere on the disk. block 04/05/2004 = pointer CSCI 315 Operating Systems Design 23 Linked Allocation (Cont.) • Simple – need only starting address • Free-space management system – no waste of space • No random access Q • Mapping LA/511 R Block to be accessed is the Qth block in the linked chain of blocks representing the file. Displacement into block = R + 1 File-allocation table (FAT) – disk-space allocation used by MS-DOS and OS/2. 04/05/2004 CSCI 315 Operating Systems Design 24 Linked Allocation 04/05/2004 CSCI 315 Operating Systems Design 25 File-Allocation Table 04/05/2004 CSCI 315 Operating Systems Design 26 Indexed Allocation • Brings all pointers together into the index block. • Logical view. index table 04/05/2004 CSCI 315 Operating Systems Design 27 Example of Indexed Allocation 04/05/2004 CSCI 315 Operating Systems Design 28 Indexed Allocation (Cont.) • Need index table • Random access • Dynamic access without external fragmentation, but have overhead of index block. • Mapping from logical to physical in a file of maximum size of 256K words and block size of 512 words. We need only 1 block for index table. Q LA/512 R Q = displacement into index table R = displacement into block 04/05/2004 CSCI 315 Operating Systems Design 29 Indexed Allocation – Mapping (Cont.) • Mapping from logical to physical in a file of unbounded length (block size of 512 words). • Linked scheme – Link blocks of index table (no limit on size). Q1 LA / (512 x 511) R1 Q1 = block of index table R1 is used as follows: Q2 R1 / 512 R2 Q2 = displacement into block of index table R2 displacement into block of file: 04/05/2004 CSCI 315 Operating Systems Design 30 Indexed Allocation – Mapping (Cont.) • Two-level index (maximum file size is Q 5123) LA / (512 x 512) 1 R1 Q1 = displacement into outer-index R1 is used as follows: Q2 R1 / 512 R2 Q2 = displacement into block of index table R2 displacement into block of file: 04/05/2004 CSCI 315 Operating Systems Design 31 Indexed Allocation – Mapping (Cont.) outer-index index table 04/05/2004 CSCI 315 Operating Systems Design file 32 Combined Scheme: UNIX (4K bytes per block) 04/05/2004 CSCI 315 Operating Systems Design 33 Free-Space Management • Bit vector (n blocks) 0 1 2 n-1 bit[i] = … 0 block[i] free 1 block[i] occupied Block number calculation (number of bits per word) * (number of 0-value words) + offset of first 1 bit 04/05/2004 CSCI 315 Operating Systems Design 34 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 • Linked list (free list) – Cannot get contiguous space easily – No waste of space • Grouping • Counting 04/05/2004 CSCI 315 Operating Systems Design 35 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 04/05/2004 CSCI 315 Operating Systems Design 36 Linked Free Space List on Disk 04/05/2004 CSCI 315 Operating Systems Design 37 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. 04/05/2004 CSCI 315 Operating Systems Design 38 Various Disk-Caching Locations 04/05/2004 CSCI 315 Operating Systems Design 39 Page Cache • A page cache caches pages rather than disk blocks using virtual memory techniques. • Memory-mapped I/O uses a page cache. • Routine I/O through the file system uses the buffer (disk) cache. • This leads to the following figure. 04/05/2004 CSCI 315 Operating Systems Design 40 I/O Without a Unified Buffer Cache 04/05/2004 CSCI 315 Operating Systems Design 41 Unified Buffer Cache • A unified buffer cache uses the same page cache to cache both memory-mapped pages and ordinary file system I/O. 04/05/2004 CSCI 315 Operating Systems Design 42 I/O Using a Unified Buffer Cache 04/05/2004 CSCI 315 Operating Systems Design 43 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. 04/05/2004 CSCI 315 Operating Systems Design 44 Log Structured File Systems • Log structured (or journaling) file systems record each update to the file system as a transaction. • All transactions are written to a log. A transaction is considered committed once it is written to the log. However, the file system may not yet be updated. • The transactions in the log are asynchronously written to the file system. When the file system is modified, the transaction is removed from the log. • If the file system crashes, all remaining transactions in the log must still be performed. 04/05/2004 CSCI 315 Operating Systems Design 45