UNIX File Systems (Chap 4. in the book - PowerPoint PPT Presentation

About This Presentation
Title:

UNIX File Systems (Chap 4. in the book

Description:

Title: Chap 16. Abstract Data Types Author: R5me Last modified by: Bong-Soo Sohn Created Date: 11/7/2000 6:20:08 AM Document presentation format: ... – PowerPoint PPT presentation

Number of Views:80
Avg rating:3.0/5.0
Slides: 51
Provided by: R5m6
Category:

less

Transcript and Presenter's Notes

Title: UNIX File Systems (Chap 4. in the book


1
UNIX File Systems(Chap 4. in the book the
design of the UNIX OS)
Acknowledgement Soongsil Univ. Presentation
Materials
2
File System
  • Abstraction used by the kernel to represent and
    organize the systems storage resources
  • Properties
  • Hierarchical structure
  • Ability to create and delete files
  • Dynamic growth of files
  • Protection of file data
  • Treatment of peripheral devices as files

3
UNIX File System Overview
4
UNIX File System Overview
5
File System Layout
6
Sample File System
7
Table of Contents
  • Inodes
  • Structure of a regular file
  • Directories
  • Conversion of a path name to an Inode
  • Super block
  • Inode assignment to a new file
  • Allocation of disk blocks
  • Other file types
  • Summary

8
Summary
  • Inode is the data structure that describes the
    attributes of a file, including the layout of its
    data on disk.
  • Two version of the inode
  • Disk copy store the inode information when file
    is not in use
  • In-core copy record the information about
    active files.
  • ialloc/ifree assignment of a disk inode
  • iget/iput allocation of in-core inodes
  • bmap locate disk blocks of a file, according to
    byte offset
  • Directories files that correlate file name
    components to inode numbers
  • namei convert file names to inodes
  • alloc/free assignment of new disk blocks to a
    file

9
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

10
Definition of Inodes
  • Every file has a unique inode
  • Contain the information necessary for a process
    to access a file
  • Exist in a static form on disk
  • Kernel reads them into an in-core inode to
    manipulate them.

11
Contents of Disk Inodes
  • File owner identifier (individual/group owner)
  • File type (regular, directory,..)
  • File access permission (owner,group,other)
  • File access time
  • Number of links to the file (chap5)
  • Table of contents for the disk address of data in
    a file (byte stream vs discontiguous disk blocks)
  • File size
  • Inode does not specify the path name that
    access the file

12
Sample Disk Inode
  • File owner identifier
  • File type
  • File access permission
  • File access time
  • Number of links to the file
  • Table of contents for the disk address of data in
    a file
  • File size
  • Owner mjb
  • Group os
  • Type regular file
  • Perms rwxr-xr-x
  • Accessed Oct 23 1984 145 P.M
  • Modified Oct 22 1984 103 A.M
  • Inode Oct 23 1984 130 P.M
  • Size 6030 bytes
  • Disk addresses

13
Distinction Between Writing Inode and File
  • File change only when writing it.
  • Inode change when changing the file, or when
    changing its owner, permisson,or link settings.
  • Changing a file implies a change to the inode,
  • But, changing the inode does not imply that the
    file change.

14
Contents of The In-core copy of The Inode
  • Fields of the disk inode
  • Status of the in-core inode, indicating whether
  • Inode is locked
  • Process is waiting for the inode to become
    unlocked
  • Differ from the disk copy as a result of a change
    to the data in the inode
  • Differ from the disk copy as a result of a change
    to the file data
  • File is a mount point

15
Contents of The In-core copy of The Inode
  • Logical device number of the file system
  • Inode number (linear array on disk, disk inode
    not need this field)
  • Pointers to other in-core inodes
  • Reference count

16
Accessing Inodes
  • Kernel identifies inodes by their file system and
    inode number
  • Allocate in-core inodes at the request of
    higher-level algorithms (in-core inode, by iget
    algorithm)
  • Kernel maps the device number inode number into
    a hash queue
  • Search the queue for the inode

17
Block Number Byte Offset
  • Computing logical disk block number
  • Block number
  • ((inode number 1) / number of inodes per
    block)
  • start block inode list
  • Computing byte offset of the inode in the block
  • ((inode number 1) mod (number of inodes per
    block))
  • size of disk inode

18
Inode Lock and Reference Count
  • Kernel manipulates them independently
  • Inode lock
  • Set during execution of a system call to prevent
    other processes from accessing the inode while it
    is in use.
  • Kernel releases the lock at the conclusion of the
    system call
  • Inode is never locked across system calls.
  • Reference count
  • Kernel increase/decrease when reference is
    active/inactive
  • Prevent the kernel from reallocating an active
    in-core inode

19
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

20
Direct and Indirect Blocks in Inode
21
Byte Capacity of a File
  • System V UNIX. Assume that
  • Run with 13 entries
  • 1 logical block 1K bytes
  • Block number address a 32 bit (4byte) integer
  • 1 block can hold up to 256 block number (1024byte
    / 4byte)
  • 10 direct blocks with 1K bytes each10K bytes
  • 1 indirect block with 256 direct blocks
    1K256256K bytes
  • 1 double indirect block with 256 indirect
    blocks256K25664M bytes
  • 1 triple indirect block with 256 double indirect
    blocks64M25616G
  • Size of a file 4G (232), if file size field in
    inode is 32bits

22
Byte Offset and Block Number
  • Process access data in a file by byte offset.
  • The file starts at logical block 0 and continues
    to a logical block number corresponding to the
    file size
  • Kernel accesses the inode and converts the
    logical file block into the appropriate disk
    block (bmap algorithm)

23
Conversion of Byte Offset to Block Number
  • Algorithm bmap / block map of logical file byte
    offset to file system block /
  • Input inode, byte offset
  • Output (1)block number in file system, (2)byte
    offset into block,
  • (3)bytes of I/O in block, (4)read
    ahead block number
  • calculate logical block number in file from byte
    offset
  • calculate start byte in block for I/O /
    output 2 /
  • calculate number of bytes to copy to user /
    output 3 /
  • check if read-ahead applicable, mark inode /
    output 4/
  • determine level of indirection
  • while(not at necessary level of indirection)
  • calculate index into inode or indirect block
    from logical block number in file
  • get disk block number from inode or indirect
    block
  • release buffer from previous disk read, if any
    (algorithm brelse)
  • if(no more levels of indirection) return (block
    number)
  • read indirect disk block (algorithm bread)
  • adjust logical block number in file according
    to level of indirection

24
Block Layout of a Sample File and Its inode
0
Byte 9000 in a file -gt 8block 808th byte
8
8
816th byte
(10K256K)
Byte 350,000 in a file
11
25
Block Entry in the Inode is 0
  • Logical block entry contain no data.
  • Process never wrote data into the file at that
    byte offset
  • No disk space is wasted
  • Cause by using the lseek and write system call

26
Two Extensions to the inode Structure
  • 4.2 BSD file system
  • The more data the kernel can access on the disk
    in a single operation, the faster file access
    becomes
  • But it increase block fragmentation
  • Solution one disk block can contain fragments
    belonging to several files
  • To store file data in the inode
  • By expanding the inode to occupy an entire disk
    block
  • The remainder can store the entire file

27
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

28
Directories
  • A directory is a file
  • Its data is a sequence of entries, each
    consisting of an inode number and the name of a
    file contained in the directory
  • Path name is a null terminated character string
    divided by /
  • Each component except the last must be the name
    of a directory, last component may be a
    non-directory file

29
Directory Layout for /etc
Byte Offset in Directory Inode Number (2 bytes) File Names
0 16 32 48 ... 224 240 256 83 2 1798 1276 ... 0 95 188 . .. init fsck crash mkfs inittab
30
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

31
Algorithm for Conversion of a Path Name to an
Inode
  • Algorithm namei / convert path name to inode /
  • Input path name
  • Output locked inode
  • if(path name starts from root) working inode
    root inode (algorithm iget)
  • else working inode current directory inode
    (algorithm iget)
  • while(there is more path name)
  • read next path name component from input
  • verify that working inode is of
    directory,access permission OK
  • if(working inode is of root and component is
    ..)
  • continue / loop back to while /
  • read directory (working inode) by repeated use
    of algorithms
  • bmap,bread and brelse

32
Algorithm for Conversion of a Path Name to an
Inode
  • if(component matches an entry in directory
    (working inode))
  • get inode number for matched component
  • release working inode (algorithm iput)
  • working inodeinode of matched
    component(algorithm iget) else / component
    not in directory
  • return (no inode)
  • return (working inode)

33
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

34
Super block
  • File System
  • Consists of
  • the size of the file system
  • the number of free blocks in the file system
  • a list of free blocks available on the file
    system
  • the index of the next free block in the free
    block list
  • the size of the inode list
  • the number of free inodes in the file system
  • a list of free inodes in the file system
  • the index of the next free inode in the free
    inode list
  • lock fields for the free block and free inode
    lists
  • a flag indicating that the super block has been
    modified

boot block super block inode list
data blocks
35
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

36
Inode Assignment to a New File
  • File system contains a linear list of inodes
  • Inode is free its type field is zero (0)
  • Super block contains an array to cache the
    numbers of free inodes in the file system (to
    improve performance)

37
Algorithm for Assigning New Inodes
  • Algorithm ialloc / allocate inode /
  • Input file system
  • Output locked inode
  • while(not done)
  • if(super block locked)
  • sleep(event super block becomes free)
    continue
  • if(inode list in super block is empty)
  • lock super block
  • get remembered inode for free inode search
  • search disk for free inodes until super block
    full,
  • or no more free inodes (bread and brelese)
  • unlock super block
  • wake up (event super block becomes free)
  • if(no free inodes found on disk) return (no
    inode)
  • set remembered inode for next free inode
    search

38
Algorithm for Assigning New Inodes
  • / there are inodes in super block inode list
    /
  • get inode number from super block inode list
  • get inode (algorithm iget)
  • if(inode not free after all)
  • write inode to disk
  • release inode (algorithm iput)
  • continue / while loop /
  • / inode is free /
  • initialize inode
  • write inode to disk
  • decrement file system free inode count
  • return (inode)
  • // end of while

39
Assigning Free Inode from Middle of List
40
Assigning Free Inode Super Block List Empty
41
Algorithm for Freeing Inode
  • Algorithm ifree / inode free /
  • Input file system inode number
  • Output none
  • increment file system free inode count
  • if(super block locked) return
  • if(inode list full)
  • if(inode number less than remembered inode for
    search)
  • set remembered inode for search input inode
    number
  • else
  • store inode number in inode list
  • return

42
Placing Free Inode Numbers Into the Super Block
43
Table of Contents
  • Inodes
  • Structure of a Regular File
  • Directories
  • Conversion of a Path Name to an Inode
  • Super Block
  • Inode Assignment to a New File
  • Allocation of Disk Blocks
  • Other File Types
  • Summary

44
Linked List of Free Disk Block Numbers
45
Algorithm for Allocating Disk Block
  • Algorithm alloc / file system block allocation
    /
  • Input file system number
  • Output buffer for new block
  • while(super block locked) sleep (event super
    block not locked)
  • remove block from super block free list
  • if(removed last block from free list)
  • lock super block
  • read block just taken from free list (algorithm
    bread)
  • copy block numbers in block into super block
  • release block buffer (algorithm brelse)
  • unlock super block
  • wake up processes (event super block not
    locked)

46
Algorithm for Allocating Disk Block
  • get buffer form block removed from super block
    list (algorithm getblk)
  • zero buffer contents
  • decrement total count of free blocks
  • mark super block modified
  • return buffer

47
Requesting and Freeing Disk Blocks
super block list
109
109
211 208 205 202 .. 112
original configuration
109 949 ..
109
211 208 205 202 . 112
After freeing block number 949
48
Requesting and Freeing Disk Blocks
109 ..
109
211 208 205 202 . 112
After assigning block number(949)
211 208 205 202 112
211
344 341 338 335 . 243
After assigning block number(109) replenish
super block free list
49
Table of Contents
  • Inodes
  • Structure of a regular file
  • Directories
  • Conversion of a path name to an Inode
  • Super block
  • Inode assignment to a new file
  • Allocation of disk blocks
  • Other file types
  • Summary

50
Other File Types
  • Pipe
  • fifo(first-in-first-out)
  • Its data is transient once data is read from a
    pipe, it cannot be read again
  • Use only direct block (not the indirect block)
  • Special file
  • block device, character device
  • The inode contains the major and minor device
    number
  • Major number indicates a device type such as
    terminal or disk
  • Minor number indicates the unit number of the
    device
Write a Comment
User Comments (0)
About PowerShow.com