Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 4. INTERNAL REPRESENTATION OF FILES

Similar presentations


Presentation on theme: "Chapter 4. INTERNAL REPRESENTATION OF FILES"— Presentation transcript:

1 Chapter 4. INTERNAL REPRESENTATION OF FILES
THE DESIGN OF THE UNIX OPERATING SYSTEM Maurice J. bach Prentice Hall

2 contents Inodes Structure of a regular file
Conversion of a path name to an inode Super block Inode assignment to a new file Delete Inode

3 File System Algorithms
namei alloc free ialloc ifree iget iput buffer allocation algorithms getblk brelse bread bwrite Lower Level File system Algorithms

4 4.1 Inode contains the information necessary for a process to access a file exits in a static form on disk and the kernel reads them into an in-core inode

5 4.1 Inodes - file owner identifier consists of - file type
- file access permissions - file access times - number of links to the file - table of contents for the disk address of data in a file - file size

6 4.1 Inodes in-core copy of the inode contains
- status of the in-core inode - logical device number of file system - inode number - pointers to other in-core inodes - reference count

7 iget (inode_no) //getIncoreInode
while (not done) if (inode in inode cache) if (inode locked) sleep(event inode becomes unlocked) continue if (inode on inode free list) remove from free list return locked inode if (no inode on free list) return error remove new inode from free list set inode number remove inode from old hash queue and place on new one read inode from disk set reference count 1 return locked indoe

8 iput (inode_no) //releaseIncoreInode
lock inode if not locked decrement inode refernece count if (refernce count==0) if (inode link==0) free disk block set file type to 0 free inode if (file accessed or inode changed or file changed) update disk inode put inode on free list Release inode lock

9 4.2 Structure of a regular file
direct0 direct1 direct2 direct3 direct4 direct5 direct6 direct7 direct8 direct9 single indirect double indirect triple indirect Inode Data Blocks

10 4.2 Structure of a regular file
Suppose System V UNIX Assume that a logical on the file system holds 1K bytes and that a block number is addressable by a 32 bit integer, then a block can hold up to 256 block numbers 10 direct blocks with 1K bytes each=10K bytes 1 indirect block with 256 direct blocks= 1K*256=256K bytes 1 double indirect block with 256 indirect blocks= 256K*256=64M bytes 1 triple indirect block with 256 double indirect blocks= 64M*256=16G bytes

11 4.4 Path conversion to an inode
if (path name starts with root) working inode= root inode else working inode= current directory inode while (there is more path name) read next component from input read directory content if (component matches an entry in directory) get inode number for matched component release working inode working inode=inode of matched component return no inode return (working inode)

12 4.4 Conversion of a path name to an inode
algorithm namei - If path name starts from root, then the kernel assigns root inode(iget) to working inode - Otherwise, the kernel assigns current directory inode to working inode - While there is more path name, the kernel reads next path name component from input, and verifies that working inode is of directory, access permissions OK • If working inode is of root and component is ‘..’, then the kernel checks whether there is more path name or not • Otherwise the kernel reads directory by repeated use of bmap,bread,brelse

13 4.5 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

14 4.6 Inode assignment to a new file
free inodes empty array1 Super Block Free Inode List index free inodes empty array2 Assigning Free Inode from Middle of List

15 4.6 Inode assignment to a new file
Assigning Free Inode – Super Block List Empty empty array1 Super Block Free Inode List index free inodes array2 remembered inode index

16 4.6 Inode assignment to a new file
free inodes remembered inode Original Super Block List of Free Inodes index Free Inode 499 free inodes remembered inode index Free Inode 601 free inodes remembered inode index

17 4.6 Inode assignment to a new file
Locked inode illoc() while (not done) If (super block locked) Sleep (event super block becomes free) Continue If (inode list in super block empty) Lock super block Get remember inode for free inode search Search until super block full or no more free inode Unlock super block and wake up (event super block free)\ If no free inode found on disk return error Set remmbered inode for next free inode search Get inode number from super block inode list Get inode Write inode to disk Decrement free inode count Return inode

18 Freeing inode ifree(inode_no) Increment free inode count
If super block locked return If (inode list full) //at super block if (inode number <remembered inode) Set remembered inode as input inode Else Store inode number in inode list return

19 4.7 Allocation of disk blocks
………………………….. …………………… 109 …………………… 214 211 …………………… 310 linked list of free disk block number

20 4.7 Allocation of disk blocks
algorithm alloc - The kernel wants to allocate a block from a file system it allocates the next available block in the super block list - Once allocated , the block cannot be reallocated until it becomes free - If the allocated block is the last block , the kernel treats it as a pointer to a block that contains a list of free blocks • The kernel locks super block, reads block jut taken from free list, copies block numbers in block into super block, releases block buffer,and unlocks super block - Otherwise, • The kernels gets buffer for block removed from super block list , zero buffer contents, decrements total count of free blocks, and marks super block modified

21 4.7 Allocation of disk blocks
super block list 109 ………………………………………………………… 109 …………………………….. 112 original configuration ………………………………………………….. 109 ………………………………. 112 After freeing block number 949

22 4.7 Allocation of disk blocks
109 ……………………………………………………….. 109 ………………………………. 112 After assigning block number(949) ……………………………… 112 211 ………………………………. 243 After assigning block number(109) replenish super block free list


Download ppt "Chapter 4. INTERNAL REPRESENTATION OF FILES"

Similar presentations


Ads by Google