contigious

15
Contiguous Allocation 1

Upload: ramasubbu-p

Post on 19-May-2015

1.077 views

Category:

Education


0 download

DESCRIPTION

PPT

TRANSCRIPT

Page 1: Contigious

Contiguous

Allocation

1

Page 2: Contigious

Contiguous Allocation of Disk Space

Page 3: Contigious

Linked Allocation

Page 4: Contigious

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

Page 5: Contigious

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

Page 6: Contigious

Example of Indexed Allocation

Page 7: Contigious

Indexed Allocation – Multilevel Index(Supports very large file size)

outer-index

index table file

Page 8: Contigious

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

1212

linklink

Size:blocks, bytes

One inode table per partition64 bytes per inodeDirectory entries point to inodeLink countDirect index supports 48k fileDouble indirect supports huge files (>4 GB)

Page 9: Contigious

Maximum File Size with inodes

Assume 12 direct blocks, 4K blocks, 4 byte block pointer Estimate maximum addressable up to the double indirect

blocks:• Direct blocks (12) 48k• Single indirect (4096/4=1024 ptrs to blocks) 4096k• Double indirect (1024 of these) 4194304k• Total 4198448k• (> 4 GB)

Didn’t even use triple indirect!

Page 10: Contigious

File Access With Unix inodes

“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!

inodes

(root)root

directory

usrdirectory

bindirectory

wc(file)

Data blocks

usr

bin

wc

#2

0

n

Page 11: Contigious

In-Memory File System Structures Re-Visited: (Unix Case)

Opening A file

Reading A file

inode

Copy ofinode

Pointer toMemory copyOf inode

Page 12: Contigious

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

Page 13: Contigious

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 32K bytes)

Easy to get contiguous files• Just look for consecutive 1’s in bit map

Page 14: Contigious

Linked List of Free Space on Disk

Page 15: Contigious

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