Chapter 6: File Systems
File systems n Files n Directories & naming n File system implementation n Example file systems Chapter 6 CS 1550, cs.pitt.edu 2 (originaly modified by Ethan
Long-term information storage n Must store large amounts of data n Gigabytes -> terabytes -> petabytes n Stored information must survive the termination of the process using it n Lifetime can be seconds to years n Must have some way of finding it! n Multiple processes must be able to access the information concurrently Chapter 6 CS 1550, cs.pitt.edu 3 (originaly modified by Ethan
Naming files n Important to be able to find files after they’re created n Every file has at least one name n Name can be n Human-accessible: “foo.c”, “my photo”, “Go Panthers!”, “Go Banana Slugs!” n Machine-usable: 4502, 33481 n Case may or may not matter n Depends on the file system n Name may include information about the file’s contents n Certainly does for the user (the name should make it easy to figure out what’s in it!) n Computer may use part of the name to determine the file type Chapter 6 CS 1550, cs.pitt.edu 4 (originaly modified by Ethan
Typical file extensions Chapter 6 CS 1550, cs.pitt.edu 5 (originaly modified by Ethan
File structures 1 record 1 byte 12A 101 111 sab wm cm avg ejw sab elm br Sequence of bytes Sequence of records S02 F01 W02 Tree Chapter 6 CS 1550, cs.pitt.edu 6 (originaly modified by Ethan
File types Executable file Archive Chapter 6 CS 1550, cs.pitt.edu 7 (originaly modified by Ethan
Accessing a file n Sequential access n Read all bytes/records from the beginning n Cannot jump around n May rewind or back up, however n Convenient when medium was magnetic tape n Often useful when whole file is needed n Random access n Bytes (or records) read in any order n Essential for database systems n Read can be … n Move file marker (seek), then read or … n Read and then move file marker Chapter 6 CS 1550, cs.pitt.edu 8 (originaly modified by Ethan
File attributes Chapter 6 CS 1550, cs.pitt.edu 9 (originaly modified by Ethan
File operations n Create: make a new file n Append: like write, but only at the end of the file n Delete: remove an existing file n Seek: move the “current” pointer elsewhere in the file n Open: prepare a file to be accessed n Get attributes: retrieve attribute information n Close: indicate that a file is no longer being accessed n Set attributes: modify attribute information n Read: get data from a file n Rename: change a file’s n Write: put data to a file name Chapter 6 CS 1550, cs.pitt.edu 10 (originaly modified by Ethan
Using file system calls Chapter 6 CS 1550, cs.pitt.edu 11 (originaly modified by Ethan
Using file system calls, continued Chapter 6 CS 1550, cs.pitt.edu 12 (originaly modified by Ethan
Memory-mapped files Program Program text text abc Data Data xyz Before mapping After mapping n Segmented process before mapping files into its address space n Process after mapping n Existing file abc into one segment n Creating new segment for xyz Chapter 6 CS 1550, cs.pitt.edu 13 (originaly modified by Ethan
More on memory-mapped files n Memory-mapped files are a convenient abstraction n Example: string search in a large file can be done just as with memory! n Let the OS do the buffering (reads & writes) in the virtual memory system n Some issues come up… n How long is the file? n Easy if read-only n Difficult if writes allowed: what if a write is past the end of file? n What happens if the file is shared: when do changes appear to other processes? n When are writes flushed out to disk? n Clearly, easier to memory map read-only files… Chapter 6 CS 1550, cs.pitt.edu 14 (originaly modified by Ethan
Directories n Naming is nice, but limited n Humans like to group things together for convenience n File systems allow this to be done with directories (sometimes called folders ) n Grouping makes it easier to n Find files in the first place: remember the enclosing directories for the file n Locate related files (or just determine which files are related) Chapter 6 CS 1550, cs.pitt.edu 15 (originaly modified by Ethan
Single-level directory systems Root directory A A B C foo bar baz blah n One directory in the file system n Example directory n Contains 4 files ( foo , bar , baz , blah ) n owned by 3 different people: A, B, and C (owners shown in red) n Problem: what if user B wants to create a file called foo ? Chapter 6 CS 1550, cs.pitt.edu 16 (originaly modified by Ethan
Two-level directory system Root directory A B C A A B B C C C foo bar foo baz bar foo blah n Solves naming problem: each user has her own directory n Multiple users can use the same file name n By default, users access files in their own directories n Extension: allow users to access files in others’ directories Chapter 6 CS 1550, cs.pitt.edu 17 (originaly modified by Ethan
Hierarchical directory system Root directory A B C B B C C C A A A foo Papers bar foo blah Papers foo Photos A A A B B os.tex sunset Family foo.tex foo.ps A A A sunset kids Mom Chapter 6 CS 1550, cs.pitt.edu 18 (originaly modified by Ethan
Unix directory tree Chapter 6 CS 1550, cs.pitt.edu 19 (originaly modified by Ethan
Operations on directories n Create: make a new n Readdir: read a directory directory entry n Delete: remove a directory n Rename: change the name (usually must be empty) of a directory n Similar to renaming a file n Opendir: open a directory to n Link: create a new entry in allow searching it a directory to link to an n Closedir: close a directory existing file (done searching) n Unlink: remove an entry in a directory n Remove the file if this is the last link to this file Chapter 6 CS 1550, cs.pitt.edu 20 (originaly modified by Ethan
File system implementation issues n How are disks divided up into file systems? n How does the file system allocate blocks to files? n How does the file system manage free space? n How are directories handled? n How can the file system improve… n Performance? n Reliability? Chapter 6 CS 1550, cs.pitt.edu 21 (originaly modified by Ethan
Carving up the disk Entire disk Partition table Master Partition 1 Partition 2 Partition 3 Partition 4 boot record Boot Super Free space Index Files & directories block block management nodes Chapter 6 CS 1550, cs.pitt.edu 22 (originaly modified by Ethan
Contiguous allocation for file blocks A B C D E F A Free C Free E F n Contiguous allocation requires all blocks of a file to be consecutive on disk n Problem: deleting files leaves “holes” n Similar to memory allocation issues n Compacting the disk can be a very slow procedure… Chapter 6 CS 1550, cs.pitt.edu 23 (originaly modified by Ethan
Contiguous allocation 0 1 2 3 Data in each file is stored in n consecutive blocks on disk Simple & efficient indexing n n Starting location (block #) on disk ( start ) 4 5 6 7 n Length of the file in blocks ( length ) Random access well-supported n Difficult to grow files n 8 9 10 11 n Must pre-allocate all needed space n Wasteful of storage if file isn’t using all of the space Logical to physical mapping is easy n blocknum = (pos / 1024) + start; Start=5 offset_in_block = pos % Length=2902 1024; Chapter 6 CS 1550, cs.pitt.edu 24 (originaly modified by Ethan
Linked allocation 0 1 2 3 n File is a linked list of disk 4 6 blocks n Blocks may be scattered around the disk drive 4 5 6 7 n Block contains both pointer x x to next block and data n Files may be as long as needed 8 9 10 11 n New blocks are allocated as 0 needed n Linked into list of blocks in file Start=9 Start=3 n Removed from list (bitmap) End=4 End=6 of free blocks Length=2902 Length=1500 Chapter 6 CS 1550, cs.pitt.edu 25 (originaly modified by Ethan
Finding blocks with linked allocation n Directory structure is simple n Starting address looked up from directory n Directory only keeps track of first block (not others) n No wasted space - all blocks can be used n Random access is difficult: must always start at first block! n Logical to physical mapping is done by block = start; offset_in_block = pos % 1020; for (j = 0; j < pos / 1020; j++) { block = block->next; } n Assumes that next pointer is stored at end of block n May require a long time for seek to random location in file Chapter 6 CS 1550, cs.pitt.edu 26 (originaly modified by Ethan
Linked allocation using a RAM-based table 0 4 n Links on disk are slow 1 -1 n Keep linked list in memory 2 -1 3 -2 n Advantage: faster 4 -2 n Disadvantages 5 -1 n Have to copy it to disk at 6 3 B some point 7 -1 n Have to keep in-memory and 8 -1 on-disk copy consistent 9 0 A 10 -1 11 -1 12 -1 13 -1 14 -1 15 -1 Chapter 6 CS 1550, cs.pitt.edu 27 (originaly modified by Ethan
Using a block index for allocation n Store file block addresses in Name index size an array grades 4 4802 n Array itself is stored in a disk block 0 1 2 3 n Directory has a pointer to this disk block n Non-existent blocks indicated 6 by -1 4 5 6 7 9 n Random access easy 7 n Limit on file size? 0 8 8 9 10 11 Chapter 6 CS 1550, cs.pitt.edu 28 (originaly modified by Ethan
Recommend
More recommend