Contiguous Allocation of Disk Space 1 Linked Allocation

  • Slides: 14
Download presentation
Contiguous Allocation of Disk Space 1

Contiguous Allocation of Disk Space 1

Linked Allocation 2

Linked Allocation 2

File-Allocation Table (DOS, others) • Section of disk at start of partition • Table

File-Allocation Table (DOS, others) • Section of disk at start of partition • Table with one entry per disk block • Indexed by block# • Each entry contains link to next block • Special code for EOF • “ 0” means empty block 3

Indexed Allocation § Brings all pointers (for one file) together into an index block.

Indexed Allocation § Brings all pointers (for one file) together into an index block. § Supports both sequential and random access • (Index into table, pointer to block) § Wasteful for small files (use entire block for index) • But no external fragmentation § Logical view. index table 4

Example of Indexed Allocation 5

Example of Indexed Allocation 5

Indexed Allocation – Multilevel Index (Supports very large file size) � outer-index table 6

Indexed Allocation – Multilevel Index (Supports very large file size) � outer-index table 6 file

Combined Scheme: UNIX inode (Example with 4 K bytes per block) Size: blocks, bytes

Combined Scheme: UNIX inode (Example with 4 K bytes per block) Size: blocks, bytes link 12 7 One inode table per partition 64 bytes per inode Directory entries point to inode Link count Direct index supports 48 k file Double indirect supports huge files (>4 GB)

Maximum File Size with inodes § Assume 12 direct blocks, 4 K blocks, 4

Maximum File Size with inodes § Assume 12 direct blocks, 4 K blocks, 4 byte block pointer § Estimate maximum addressable up to the double indirect blocks: • • • Direct blocks (12) 48 k Single indirect (4096/4=1024 ptrs to blocks) 4096 k Double indirect (1024 of these)4194304 k Total 4198448 k (> 4 GB) § Didn’t even use triple indirect! 8

File Access With Unix inodes Data blocks n usr directory bin wc (file) wc

File Access With Unix inodes Data blocks n usr directory bin wc (file) wc bin directory usr #2 (root) 0 9 root directory § “Superblock” and other structures not shown § “root” directory is inode #2 § Directories contain pointers to inodes § Access path shown to /usr/bin/wc § Notice 8 disk accesses to get first block of wc!

In-Memory File System Structures Re. Visited: (Unix Case) Opening A file inode Reading A

In-Memory File System Structures Re. Visited: (Unix Case) Opening A file inode Reading A file 10 Pointer to Memory copy Of inode Copy of inode

Free-Space Management § Bit vector (n blocks) 0 1 2 n-1 ��� … bit[i]

Free-Space Management § Bit vector (n blocks) 0 1 2 n-1 ��� … bit[i] = 1 block[i] free 0 block[i] occupied To find a free block: find the first non-zero word, locate first 1 -bit. Block number (of first free block) is: (number of bits per word) * (number of 0 -value words) + offset of first 1 bit 11

Bit Vector (Cont. ) § Bit map requires extra space. Example: block size =

Bit Vector (Cont. ) § Bit map requires extra space. Example: block size = 212 bytes disk size = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (or 32 K bytes) § Easy to get contiguous files • Just look for consecutive 1’s in bit map 12

Linked List of Free Space on Disk 13

Linked List of Free Space on Disk 13

Free List Approach § Linked list • Hard to find contiguous space easily •

Free List Approach § Linked list • Hard to find contiguous space easily • But no waste of space § Grouping • Store addresses of n free blocks in the first block • Last of these addresses is to a block that contains addresses of another n free blocks • So many free blocks can be found at one time § Counting • Clusters of contiguous free blocks recorded together • Keep list of first block address, count of contiguous free ones 14