Input & Output 1: File systems

● What are files?

● A sequence of (usually) fixed sized blocks stored on a device. ● A device is often refered to as a . ● A large device might be split into several volumes, or partitions. ● Or a volume might span more than one device. ● Each volume, or partition is divided into numbered blocks.

Input & Output :

● The O/S has to keep track of which blocks are used by which file.

● A mapping between the file name, the volume, and the blocks in which it is kept. ● A special file known as a holds these mappings ● The simplest structure has a single volume and a single layer. ● A table holds the mapping information.

Input & Output : Flat File Systems

(MFS), A 400 kilobyte floppy disc based flat file system.

● Each file contained two parts, known as forks : ● Resource : – contains metadata in the form of attribute/value pairs – icon bitmaps – program segments – structured data ● Data Fork : – contains the file data in common with other file systems – Introduced with the in January 1984

Input & Output : Hierarchical File systems

● MS-DOS FAT(12/16/V) file system. Provided directories in a tree structure.

● Data stored in 512 byte sectors, grouped into clusters of 4 to 64 sectors. – Each cluster has an entry in the (FAT) to indicate how it is being used. – Entry values include: ● marked as ’bad’ ● unused ● used ● next cluster number/end of chain number

Input & Output : Hierarchical File Systems 2

● Each directory table has a 32 byte entry per file containing

● File name and – also used to indicate deletion ● File Attributes – Read-only – Hidden – System – Directory ● Change Date/time

● File Size

● Starting cluster number

Input & Output : Hierarchical File Systems 3

● Disk Structure :

● Volume Boot Sector, the first sector. ● File Allocation Table, held in the next sectors ● Two copies are kept – primary, – backup. ● Root Directory Table, following the 2nd FAT – Fixed size, which limits number of entries. – 1.44Mb floppy = 224 entries – Hard disk = 512 entries

Input & Output : Hierarchical File Systems 3

● Each directory has 2 special entries

● . and ..

● shorthand for the current directory and the parent directory. ● Files need not occupy adjacent clusters, leading to fragmented files.

● Chaining clusters together to hold files is risky. The directory table only holds the first cluster number.

● The FAT holds the chain information.

FAT16 Diagrams

File systems : Linux VFS

● Related calls

● file_ops : inode_ops:

● llseek (); create();

● read (); lookup();

● write (); link();

● readdir (); mkdir();

● poll (); rmdir();

● ioctl (); rename();

● mmap (); readpage();

● open (); writepage()

● release (); readlink();

Linux File systems: 2

● Review :

● Directories are special files containing variable length records, one for each file or – directory contained within the directory. struct dirent { unsigned short d_namlen; /* name length */ unsigned short d_reclen; /* entry length */ long int d_ino; /* inode number */ char d_name[]; /* file name */ }; ● They only hold the file name and a reference number, the index node.

Linux File systems: 3

● The inode has two forms

● The ’on-disk’ inode : – contains the information preserved when the file is closed, occupies 128 bytes. – The file mode, (permissions and access control) – The UID and the GID of the owner & group. – The size in bytes – Last access, modification & creation times – Link count – number of blocks – Array of pointers to actual data blocks. – Fragment information.

Linux File systems: 4

● The ’in-memory’ inode :

● contains the above + additional information – pointers to the linked list holding the inode – the device on which the inode is kept – the number of current users of this file. – – mutual exclusion information – – pointers to operations specific to the file type. – pointers into virtual memory holding the file – – file type specific information

Linux File systems: 5

● File Types can be

● file!

– -rwxr-xr-x 1 craig craig 249823232 2010-12-08 21:08 sdimage-new.dd

● directory

– drwx------2 ngunton ecestaff 4096 Feb 12 2004 mail

● socket

– srwxr-xr-x 1 ngunton ecestaff 0 Nov 18 20:17 SOff_

● soft link

– lrwxrwxrwx 1 root root 8 Jul 10 2002 cdrom->/dev/hdc

● block special (device)

– brw-r--r-- 1 root disk 22, 0 May 8 1995 hdc

● character special (device)

– crwx-w---- 1 ngunton tty 4, 1 Nov 22 09:20 tty1

● named pipe

– prw------1 ngunton ecestaff 0 Nov 22 17:29 mypipe

Linux File systems: 6

● Opening a file:

● Lookup the directory entry for the file. ● If the file does not exist, create it? ● Check the user privileges against file permissions ● Check if the file is already open – refuse access? – refuse if open for write? – refuse write if open for read? ● Create in-memory inode if above succeed. ● Return file-handle to user.

Getting a copy of the file info

Getting a copy of the file info

Getting a copy of the file info

Getting a copy of the file info

Linux File systems: On disk

Linux File systems: On disk

Linux File systems: On disk

Super Block:

● Every block group has a copy of the super block.

● Contains unchanging information about the file system (partition) including :

● total inode & free inode count

● total number of data blocks

● number of free blocks

● size of a block group

● location of first data block

● ID of this block group

● size of a block

● Copied into memory when the file system is mounted.

Block Group Descriptor:

● This is also present in each block group.

● A table of records, one for each block group, containing information specific to an

● individual block group.

● pointer to a bitmap tracking data block allocation

● pointer to a bitmap tracking inode allocation

● pointer to the inode table.

● counter of free data blocks in group.

● counter of free inodes in group.

● number of directories in this group.

● Also copied into memory when filesystem is mounted.

Bitmaps:

● Block bitmap:

● one bit for each data block, – 0 = free; – 1 = in use; ● Exactly one disk block in size.

● Inode bitmap:

● one bit for each inode, as per the block bitmap.

Inode Table :

Inode table

Inode table

Inode Table : 3

This limits the maximum file size to 64 gigabytes.