0% found this document useful (0 votes)
1K views25 pages

Allocation Free Space Management Memory Mapped Files

The document discusses various file allocation techniques used in operating systems, including contiguous allocation, extent-based allocation, linked allocation, indexed allocation, and file allocation tables. It also covers free space management, buffer caches, memory mapped files, and recovery in file systems. Log structured file systems record updates to the file system in a log for crash recovery.

Uploaded by

jafar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views25 pages

Allocation Free Space Management Memory Mapped Files

The document discusses various file allocation techniques used in operating systems, including contiguous allocation, extent-based allocation, linked allocation, indexed allocation, and file allocation tables. It also covers free space management, buffer caches, memory mapped files, and recovery in file systems. Log structured file systems record updates to the file system in a log for crash recovery.

Uploaded by

jafar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

Outline

 Allocation
 Free space management
 Memory mapped files
 Buffer caches

11/02/21 CSE 30341: Operating Systems Principles page 1


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.

11/02/21 CSE 30341: Operating Systems Principles page 2


Linked Allocation
 Each file is a linked list of disk blocks: blocks may be
scattered anywhere on the disk.

block = pointer

 Simple – need only starting address


 Free-space management system – no waste of space
 No random access

11/02/21 CSE 30341: Operating Systems Principles page 3


Linked Allocation

11/02/21 CSE 30341: Operating Systems Principles page 4


File-Allocation Table (DOS FAT)

11/02/21 CSE 30341: Operating Systems Principles page 5


Indexed Allocation
 Brings all pointers together into the index block.
 Logical view.

index table

11/02/21 CSE 30341: Operating Systems Principles page 6


Example of Indexed Allocation

11/02/21 CSE 30341: Operating Systems Principles page 7


Indexed Allocation (Cont.)
 Need index table to store pointers
 Allows random access by using the indexes
 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.

11/02/21 CSE 30341: Operating Systems Principles page 8


Indexed Allocation – Mapping (Cont.)

outer-index

index table file

11/02/21 CSE 30341: Operating Systems Principles page 9


Combined Scheme: UNIX (4K bytes per block)

11/02/21 CSE 30341: Operating Systems Principles page 10


Free-Space Management
 Bit vector (n blocks)
0 1 2 n-1

0  block[i] free


bit[i] =
1  block[i] occupied

 Block number calculation = (number of bits per


word) * (number of 0-value words) + offset of first 1
bit

11/02/21 CSE 30341: Operating Systems Principles page 11


Free-Space Management (Cont.)
 Bit map requires extra space
 Example:
block size = 212 bytes
disk size = 238 bytes (256 Gigabyte)
n = 238/212 = 226 bits (or 8 Mbytes)
 Easy to get contiguous files
 Linked list (free list)
 Cannot get contiguous space easily
 No waste of space
 Grouping
 Counting

11/02/21 CSE 30341: Operating Systems Principles page 12


Free-Space Management (Cont.)
 Need to protect against inconsistency:
 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

11/02/21 CSE 30341: Operating Systems Principles page 13


Linked Free Space List on Disk

11/02/21 CSE 30341: Operating Systems Principles page 14


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
 Compare these to LRU
 improve PC performance by dedicating section of
memory as virtual disk, or RAM disk
 It was observed that temporary files were accessed
frequently - hence make tmpfs using RAM memory

11/02/21 CSE 30341: Operating Systems Principles page 15


Memory-Mapped Files
 Memory-mapped file I/O allows file I/O to be
treated as routine memory access by mapping a
disk block to a page in memory
 A file is initially read using demand paging. A page-
sized portion of the file is read from the file system
into a physical page. Subsequent reads/writes
to/from the file are treated as ordinary memory
accesses.
 Simplifies file access by treating file I/O through
memory rather than read() write() system calls
 Also allows several processes to map the same file
allowing the pages in memory to be shared

11/02/21 CSE 30341: Operating Systems Principles page 16


Memory Mapped Files

11/02/21 CSE 30341: Operating Systems Principles page 17


Sample code using mmap
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

main(int argc, char *argv[], char *envp[]) {


int fd;
char *ptr, *path = (argc == 2) ? argv[1] : "file";

/* Open a file and write some contents. If file already exists,


delete old contents */
fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0660);
write(fd, "hello", strlen("hello"));
write(fd, " world", strlen(" world"));
close(fd);

11/02/21 CSE 30341: Operating Systems Principles page 18


(continued)
fd = open(path, O_RDWR);

// mmap(addr, len, prot, flags, fildes, off);


ptr = mmap(0, 4, PROT_READ|PROT_WRITE,
MAP_SHARED, fd, 0);
ptr+=2;
memcpy(ptr, "lp ", 3);
munmap(ptr, 4);
close(fd);
}
 Transform “hello world” into “help world”

11/02/21 CSE 30341: Operating Systems Principles page 19


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

11/02/21 CSE 30341: Operating Systems Principles page 20


I/O Without a Unified Buffer Cache

11/02/21 CSE 30341: Operating Systems Principles page 21


Unified Buffer Cache
 A unified buffer cache uses the same page cache
to cache both memory-mapped pages and ordinary
file system I/O

11/02/21 CSE 30341: Operating Systems Principles page 22


I/O Using a Unified Buffer Cache

11/02/21 CSE 30341: Operating Systems Principles page 23


Recovery
 Consistency checking – compares data in directory
structure with data blocks on disk, and tries to fix
inconsistencies
 scandisk in DOS, fsck in unix
 Use system programs to back up data from disk to
another storage device (floppy disk, magnetic tape,
other magnetic disk, optical)

 Recover lost file or disk by restoring data from


backup

11/02/21 CSE 30341: Operating Systems Principles page 24


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

11/02/21 CSE 30341: Operating Systems Principles page 25

You might also like