Title: Chapter%204%20:%20File%20Systems
1Chapter 4 File Systems
- What is a file system?
- Objectives user requirements
- Characteristics of files directories
- File system implementation
- Directory implementation
- Free blocks management
- Increasing file system performance
2File System
- The collection of algorithms and data structures
which perform the translation from logical file
operations (system calls) to actual physical
storage of information
3Objectives of a File System
- Provide storage of data and manipulation
- Guarantee consistency of data and minimise errors
- Optimise performance (system and user)
- Eliminate data loss (data destruction)
- Support variety of I/O devices
- Provide a standard user interface
- Support multiple users
4User Requirements
- Access files using a symbolic name
- Capability to create, delete and change files
- Controlled access to system and other users
files - Control own access rights
- Capability of restructuring files
- Capability to move data between files
- Backup and recovery of files
5Files
- Naming
- Name formation
- Extensions (Some typical extensions are shown
below)
6Files (Cont.)
- Structuring
- (a) Byte sequence (as in DOS, Windows UNIX)
- (b) Record sequence (as in old systems)
- (c) Tree structure (as in some mainframe Oses)
7Files (Cont.)
- File types
- Regular (ASCII, binary)
- Directories
- Character special files
- Block special files
- File access
- Sequential access
- Random access
8Files (Cont.)
- File attributes
- Read, write, execute, archive, hidden, system
etc. - Creation, last access, last modification
9Files (Cont.)
- Create
- Delete
- Open
- Close
- Read
- Write
- Append
- Seek
- Get attributes
- Set Attributes
- Rename
10Directories
- Where to store attributes
- In directory entry (DOS, Windows)
- In a separate data structure (UNIX)
- Path names
- Absolute path name
- Relative path name
- Working (current) directory
- Operations
- Create, delete, rename, open directory, close
directory, read directory, link (mount), unlink
11Directories Files (UNIX)
Working Directory
- Working directory d2
- Absolute path to file f2 /d1/d2/f2
- Relative path to file f2 f2
12Physical Disk Space Management
Sector
Track
- Each plate is composed of sectors or physical
blocks which are laid along concentric tracks - Sectors are at least 512 bytes in size
- Sectors under the head and accessed without a
head movement form a cylinder
13File System Implementation
- Contiguous allocation
- Linked list allocation
- Linked list allocation using an index (DOS file
allocation table - FAT) - i-nodes (UNIX)
14Contiguous Allocation
- The file is stored as a contiguous block of data
allocated at file creation
(a) Contiguous allocation of disk space for 7
files (b) State of the disk after files D and E
have been removed
15Contiguous Allocation (Cont.)
- FAT (file allocation table) contains file name,
start block, length - Advantages
- Simple to implement (start block length is
enough to define a file) - Fast access as blocks follow each other
- Disadvantages
- Fragmentation
- Re-allocation (compaction)
16Linked List Allocation
- The file is stored as a linked list of blocks
17Linked List Allocation (Cont.)
- Each block contains a pointer to the next block
- FAT (file allocation table) contains file name,
first block address - Advantages
- Fragmentation is eliminated
- Block size is not a power of 2 because of pointer
space - Disadvantages
- Random access is very slow as links have to be
followed
18Linked list allocation using an index (DOS FAT)
FAT (File allocation table)
Disk size
EOF
Free
5
Free
File blocks
7
Bad
First block address is in directory entry
1
n
Free
19Linked list allocation using an index (Cont.)
- The DOS (Windows) FAT is arranged this way
- All block pointers are in FAT so that dont take
up space in actual block - Random access is faster since FAT is always in
memory - 16-bit DOS FAT length is (655362)2 131076
bytes
20Problem
- 16-bit DOS FAT can only accommodate 65536
pointers (ie., a maximum of 64 MB disk) - How can we handle large disks such as a 4 GB
disk?
Clustering
21i (index)-nodes (UNIX)
22i-nodes (Cont.)
- Assume each block is 1 KB in size and 32 bits (4
bytes) are used as block numbers - Each indirect block holds 256 block numbers
- First 10 blocks file size lt 10 KB
- Single indirect file size lt 25610 266 KB
- Double indirect file size lt 256256 266
65802 KB 64.26 MB - Triple indirect file size lt 256256256
65802 16843018 KB 16 GB
23Directory Implementation
- DOS (Windows) directory structure
- UNIX directory structure
24DOS (Windows) Directory Structure (32 bytes)
Attributes (A,D,V,S,H,R)
Pointer to first data block
25UNIX Directory Structure (16 bytes)
26The Windows 98 Directory Structure
- Extended MS DOS Directory Entry
- An entry for (part of) a long file name
27The Windows 98 Directory Structure
An example of how a long name is stored in
Windows 98
28Path Name Lookup /usr/ast/mbox
Blocks of file
29Two ways of handling long file names in a
Directory
In-line In a heap
30Shared Files
- File f2 is shared by two paths (users!) and there
is one physical copy. - The directories d1 d2 point to the same
i-node with link count equal to 2 - Deletion is done by decrementing the link count.
When it reaches zero the file is deleted
physically
31Disk Space Management
Block size
- Dark line (left hand scale) gives data rate of a
disk - Dotted line (right hand scale) gives disk space
efficiency - All files 2KB
32How to Keep Track of Free Disk Blocks
- Linked list of disk blocks
- Bit maps
- Indexing as used in DOS FAT
33Linked List of Disk Blocks
- Allocation is simple.
- Delete block number from free blocks list
34Bit Maps
- The bit map is implemented by reserving a bit
string whose length equals the number of blocks - A 1 may indicate that the block is used and 0
for free blocks - If the disk is nearly full then the bit map
method may not be as fast as the linked list
method
35Increasing File System Performance
- Disks (floopies, hard disks, CD ROMS) are still
slow when compared to the memory - Use of a memory cache may speed the disk
transfers between disk and process - Blocks are read into the cache first. Subsequent
accesses are through the cache - Blocks are swapped in out using replacement
algorithms such as FIFO, LRU - System crashes may cause data loss if modified
blocks are not written back to disk
36Where to Put the Current File Position Field
- The file position field is a 16 or 32 bit
variable which holds the address of the next byte
to be read or written in a file - Put it in the i-node
- Put it in process table
37File Position Field in i-node
- If two or more processes share the same file,
then they must have a different file position - Since i-node is unique for a file, the file
position can not be put in the i-node
38File Position Field in Process Table
- When a process forks, both the parent and the
child must have the same file position - Since the parent and the child have different
process tables they can not share the same file
position - So, we can not put in process table
39Solution
- Use an intermediate table for file positions
Process tables
i-node of file