Title: File Systems
1File Systems
6.1 Files 6.2 Directories 6.3 File system
implementation 6.4 Example file systems
2Long-term Information Storage
- Must store large amounts of data
- Information stored must survive the termination
of the process using it - Multiple processes must be able to access the
information concurrently. In short
3Long-term Information Storage
- Files Good!
- No Files Bad!
4File Naming
5File Structure
- Three kinds of files
- byte sequence
- record sequence
- tree
6File Types Text and Binary
- (a) An executable file (b) An archive
7File Access
- Sequential access
- read all bytes/records from the beginning
- cannot jump around, could rewind or back up
- convenient when medium was mag tape
- Random access
- bytes/records read in any order
- essential for data base systems
- read can be
- move file marker (seek), then read or
- read and then move file marker
8File Attributes
9Example
Assume all counters are currently 0. Consider
the case when pages 0,2,4, and 5 are referenced
between last interrupt.
10File Operations
- Create
- Delete
- Open
- Close
- Read
- Write
- Append
- Seek
- Get attributes
- Set Attributes
- Rename
11- -rwxr-xr-x 1 dickens spcprj 20580000 Nov 16
2003 BM.Contention.Big - -rw-r--r-- 1 dickens spcprj 5832 Nov 14
2003 LR.Contention.Low - -rwxr-xr-x 1 dickens spcprj 5180000 Nov 14
2003 bitmap.contention.1 - -rwxr-xr-x 1 dickens spcprj 12434 Nov 14
2003 Companion.4 - -rw-r--r-- 1 dickens spcprj 2767 Nov 14
2003 temp.Swap - -rw-r--r-- 1 dickens spcp 2767 Nov 14
2003 temp - -rwxr-xr-x 1 dickens spc 16969 Nov 14
2003 ind_calc - -rw-r--r-- 1 dickens spcprj 1217 Nov 14
2003 Temp_File.contention
12An Example Program Using File System Calls (1/2)
13An Example Program Using File System Calls (2/2)
14Memory Mapped Files
- Use system calls like
- map (filename, starting address, size)
- unmap (filename, starting address, size)
- Implemented through paging mechanism.
- Advantages of this ?
15DirectoriesSingle-Level Directory Systems
- A single level directory system
- contains 4 files
- owned by 3 different people, A, B, and C
16Two-level Directory Systems
- Letters indicate owners of the directories and
files
17Hierarchical Directory Systems
- A hierarchical directory system
18Path Names
19Path Names
- To Open dict path is /usr/jim/dict.
20Directory Operations
- Readdir
- Rename
- Link
- Unlink
- Create
- Delete
- Opendir
- Closedir
21File System Implementation
- A possible file system layout
22Implementing Files (1)
- (a) Contiguous allocation of disk space for 7
files - (b) State of the disk after files D and E have
been removed
23Implementing Files (2)
- Storing a file as a linked list of disk blocks
24Implementing Files (3)
- Linked list allocation using a file allocation
table in RAM
25- Entry 4 bytes. Blocks 1K. 20 Million Entries
80 MB for table.
26Implementing Files (4)
27 Double Indirection
Triple Indirection
Disk block containing addresses of disk blocks
containing addresses
28Implementing Directories (1)
- (a) A simple directory
- fixed size entries
- disk addresses and attributes in directory entry
- (b) Directory in which each entry just refers to
an i-node
29Implementing Directories (2)
- Two ways of handling long file names in directory
- (a) In-line
- (b) In a heap
30Shared Files (1)
- File system containing a shared file
31Shared Files (1)
32Links
- (a) Situation prior to linking
- (b) After the link is created
- (c) After the original owner removes the file
33Symbolic Links
- Provide the path name of the target file in the
linked file
34Disk Space Management (1)
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
35Disk Space Management (2)
- (a) Storing the free list on a linked list
- (b) A bit map
36- Quotas for keeping track of each users disk use
37Consistency Issues
- File system can become inconsistent if there is a
system crash and recent changes have not all been
written to disk. - Consider
- inode cached
- New block allocated to file
- Block filled, written to disk
- Free list updated and written to disk
- System crash
- Now block not on either free list or listed as
part of a file
38- Consider
- inode cached
- Free list cached
- Block 10 deleted from file A. Cached inode
updated. - Block 10 now on free list and allocated to file
B. - File B closed, inode written to disk.
- System crash.
- Now block 10 listed as belonging to two files.
39File System Consistency
- Build two tables, each of which counts number of
blocks. - Table 1 Number of times block is in a file.
- Table 2 Number of times block is in the free
list. - Read all inodes.
- Increment tables.
40File System Reliability (3)
- File system states
- (a) consistent
- (b) missing block
- (c) duplicate block in free list
- (d) duplicate data block
41- Figure b- missing block.
- Adds it back to the free list.
- Figure c- block listed twice in free list
- Rebuilds the free list.
- Figure d- Same block belongs to two or more
files. - Make copy and insert in one of the files.
42File System Performance (1)
- The block cache data structures
43Problem with LRU
- If frequently used block is inode or directory
block, may want to write it out. - Modify LRU to account for importance of block.
- Unix synch()
- MS-DOS Write-through cache
44- Most systems write critical blocks to disk
immediately (but not necessarily non-critical
blocks). - If system crashes, file system likely intact (but
users may become unglued). - Unix System call sync that causes all modified
blocks to be written to disk. - An update daemon is running in the background and
alternates between sleeping and calling synch.
Generally every 30 seconds. - MS-DOS Write-through cache. Every change is
written through to disk.
45File System Performance (2)
- I-nodes placed at the start of the disk
- Disk divided into cylinder groups
- each with its own blocks and i-nodes
46CP/M
- 8080 Chip
- Max 64K RAM
- 720K Floppy.
- Size of entire OS 3584 bytes.
- Shell 2K bytes.
47The CP/M File System (1)
48Directory
- One directory
- Entries 32 bytes (fixed).
- After booting, reads in directory and computes
free list. - Does not save free list.
- Provides 38 systems calls, 17 File system
related. - File blocks are 1K.
49The CP/M File System (2)
- The CP/M directory entry format
50MS-DOS
- Added hierarchical directory structure.
- Use fixed 32-byte directory entry
- Added attributes read-only, archived, hidden,
system. - Time field seconds (5 bits), minutes (6 bits),
hours (5 bits). - Date day (5 bits), month (4 bits), year (7 bits
only good to 2107).
51The MS-DOS File System (1)
- The MS-DOS directory entry
52File Allocation Table (FAT)
- Entry 4 bytes. Blocks 1K. 20 Million Entries
80 MB for table.
53The MS-DOS File System (2)
- Maximum partition for different block sizes
- The empty boxes represent forbidden combinations
54Windows 98
- Used 32-bit FAT.
- Used the additional 10 bits from DOS entry.
- Allowed arbitrarily long file names
- Backward compatible to MS-DOS.
55The Windows 98 File System (1)
Bytes
- The extended MOS-DOS directory entry used in
Windows 98
56The Windows 98 File System (2)
Bytes
Checksum
- An entry for (part of) a long file name in
Windows 98
57The Windows 98 File System (3)
- An example of how a long name is stored in
Windows 98
58The UNIX V7 File System (1)
- A UNIX V7 directory entry
59The UNIX V7 File System (1)
- A UNIX V7 directory entry
60The UNIX V7 File System (2)
61The UNIX V7 File System (3)
- The steps in looking up /usr/ast/mbox