INF422_8

25
8. Files and File Systems 8.  Files and File Systems File Storage Structure File System Implementation Kernel Abstraction Communication Through a Pipe 146 / 303

Transcript of INF422_8

Page 1: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 1/25

8. Files and File Systems

8. Files and File Systems

File Storage StructureFile System ImplementationKernel AbstractionCommunication Through a Pipe

146 / 303

Page 2: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 2/25

Page 3: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 3/25

8. Files and File Systems  – File Storage Structure

8. Files and File Systems

File Storage StructureFile System ImplementationKernel AbstractionCommunication Through a Pipe

148 / 303

Page 4: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 4/25

8. Files and File Systems  – File Storage Structure

Storage Structure: Inode

Index Node

UNIX distinguishes file data  and   information about a file   (or meta-data)File information is stored in a structure called   inode 

Attached to a particular device

Attributes

File TypeNumber of hard links (they all share the same inode)File length in bytesDevice identifierUser identifier (UID, file owner)

Group identifier (GID, user group of the file)Timestamps: last status change (e.g., creation, modification, and access)Access rights

Possibly more attributes, depending on the file system

149 / 303

Page 5: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 5/25

8. Files and File Systems  – File Storage Structure

Inode: Access Rights

Classes of file accesses

user:   ownergroup:  users who belong to the file’s group, excluding the owner

others:  all remaining users

Classes of access rights

read:  directories: controls listing 

write:  directories: controls file status changes execute:  directories: controls searching (entering)

Additional file modes

suid:   with  execute, the process gets the file’s UIDdirectories: nothing 

sgid:   with  execute, the process gets the file’s GIDdirectories: created files inherit the creator process’s GID 

sticky:   (not portable)directories: files owned by others cannot be deleted or renamed 

150 / 303

Page 6: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 6/25

8. Files and File Systems  – File Storage Structure

File System Storage

General Structure

Boot block Boot flag (bootable or not) Link to data blocks holding boot code

Super block File system status (mount point) Number of allocated and free nodes

Link to lists of allocated and free nodesInode table

Data blocks Note: directory  =   list of file names in a

data block

Boot block

Super block

Inode table

Data blocks ...

...

Simplified file system layout 

151 / 303

Page 7: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 7/25

8. Files and File Systems  – File Storage Structure

Inode: Data Block Addressing

Every Inode has a table of block addresses

Addressing: direct, one-level indirect, two-levels indirect, ...

Third-level

Second-level

Data blocksFirst-level

...

...

...

...

...

...

...

...

Inode

Meta-data

Indirect block addressing 

Direct block addressing 

152 / 303

8 Fil d Fil S Fil S S

Page 8: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 8/25

8. Files and File Systems  – File Storage Structure

File Meta-Data

Protection Modes for   chmod   Command

Mode Octal value Commentu±rwx   00700 mask for file owner permissionsu±r   00400 owner has read permissionu±w   00200 owner has write permissionu±x   00100 owner has execute permissiong±rwx  (or g±rwX) 00070 mask for group permissions

g±r   00040 group has read permissiong±w   00020 group has write permissiong±x  (or g±X) 00010 group has execute permissiono±rwx   00007 mask for permissions for otherso±r   00004 others have read permissiono±w   00002 others have write permissiono±x  (or o±X) 00001 others have execute permission

u±s   04000 SUID bitg±s   02000 SGID bit±t   01000 restricted deletion flag (sticky bit)

153 / 303

8 Fil d Fil S Fil S I l i

Page 9: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 9/25

8. Files and File Systems  – File System Implementation

8. Files and File Systems

File Storage StructureFile System ImplementationKernel AbstractionCommunication Through a Pipe

154 / 303

8 Fil d Fil S t Fil S t I l t ti

Page 10: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 10/25

8. Files and File Systems  – File System Implementation

File Systems

Virtual File System

Mounting multiple file systems under a common tree $ mount   options   device directory 

Superset API for the features found in modern file systems Software layer below system calls Full support of UNIX file systems Integration of pseudo file systems

/proc,  /sys,  /dev,  /dev/shm, etc. Supports “virtual” devices

Loopback devices:   /dev/loop0,  /dev/loop1... for encryption, compression,swap files, etc.

Support foreign and legacy file systems: FAT, NTFS, ISO9660, etc.

155 / 303

Page 11: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 11/25

8 Files and File Systems File System Implementation

Page 12: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 12/25

8. Files and File Systems  – File System Implementation

Modern File Systems

Features

Transparent defragmentationUnbounded file name and size

Minimize down-time with   journaling  Maximal protection (default): support logging of all data and meta-data blocks Minimal overhead: logging of meta-data blocks only

Atomic (transactional) file operationsAccess control Lists (ACL)

Notes About Linux EXT3

Compatible with EXT2

Journalization through a specific block device

Use a hidden file for the log records

156 / 303

8 Files and File Systems File System Implementation

Page 13: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 13/25

8. Files and File Systems  – File System Implementation

Modern File Systems

Features

Transparent defragmentationUnbounded file name and size

Minimize down-time with   journaling  Maximal protection (default): support logging of all data and meta-data blocks Minimal overhead: logging of meta-data blocks only

Atomic (transactional) file operationsAccess control Lists (ACL)

Notes About Windows NTFS

Optimization for small files: “resident” data

Direct integration of compression and encryption

156 / 303

8 Files and File Systems – Kernel Abstraction

Page 14: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 14/25

8. Files and File Systems  – Kernel Abstraction

8. Files and File Systems

File Storage StructureFile System ImplementationKernel AbstractionCommunication Through a Pipe

157 / 303

8 Files and File Systems – Kernel Abstraction

Page 15: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 15/25

8. Files and File Systems  Kernel Abstraction

I/O Kernel Structures

One table of  file descriptor s per process:System.in,   System.out,   System.err

Table of  open file s (status, including opening mode and offset)

Inode table (for all open files)

File locks

......

...

... ...

opening mode lock pointerinode pointer

linked lists 

File locking 

...

Descriptor tables 

offset # of openings# of descriptors

Open file table Inode table  158 / 303

8. Files and File Systems – Kernel Abstraction

Page 16: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 16/25

8. Files and File Systems  Kernel Abstraction

I/O Kernel Structures

Example: file descriptor aliasing E.g., process creation (e.g., via the   ProcessBuilder  class in Java)

......

...

... ...

opening mode lock pointerinode pointer

linked lists 

File locking 

...

Descriptor tables 

offset # of openings# of descriptors

Open file table Inode table  158 / 303

8. Files and File Systems – Kernel Abstraction

Page 17: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 17/25

8. Files and File Systems  Kernel Abstraction

I/O Kernel Structures

Example: open file aliasing E.g., multiple processes opening the same file

......

...

... ...

opening mode lock pointerinode pointer

linked lists 

File locking 

...

Descriptor tables 

offset # of openings# of descriptors

Open file table Inode table  158 / 303

8. Files and File Systems  – Kernel Abstraction

Page 18: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 18/25

8 es a d e Syste s Ke e bst act o

File Permissions

Process and File Permissions

Every file I/O is conditioned to read/write/execute access rights, relative toUID (user) and GID (group)

Java InterfaceFile  class checkRead(),   checkWrite(),   checkExec(), etc. checkPermission()

FilePermission  class More precise control and interaction with security policies

159 / 303

8. Files and File Systems  – Kernel Abstraction

Page 19: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 19/25

y

Application: I/O Redirection

ExampleNo redirection

Terminal

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  

...

Descriptor table 

file 1

file 2

No redirection

stdinstdoutstderr

160 / 303

8. Files and File Systems  – Kernel Abstraction

Page 20: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 20/25

y

Application: I/O Redirection

ExampleStandard input redirection:   System.setIn()

Terminal

< file_1

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  

...

Descriptor table 

file 1

file 2

stdinstdoutstderr

160 / 303

8. Files and File Systems  – Kernel Abstraction

Page 21: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 21/25

y

Application: I/O Redirection

ExampleStandard output redirection:   System.setOut()

Terminal

> file_2

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  

...

Descriptor table 

file 1

file 2

stdinstdoutstderr

160 / 303

8. Files and File Systems  – Kernel Abstraction

Page 22: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 22/25

Application: I/O Redirection

ExampleStandard error redirection:   System.setErr()

Terminal

2> file_2

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  

...

Descriptor table 

file 1

file 2

stdinstdoutstderr

(with sh/bash)

160 / 303

8. Files and File Systems  – Communication Through a Pipe

Page 23: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 23/25

8. Files and File Systems

File Storage StructureFile System ImplementationKernel AbstractionCommunication Through a Pipe

161 / 303

8. Files and File Systems  – Communication Through a Pipe

Page 24: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 24/25

FIFO (Pipe)

Principles

Channel to stream data among processes Data traverses the pipe  first-in  (write)  first-out   (read) Blocking read and write by default (bounded capacity) Illegal to write into a pipe without reader (delivers UNIX signal   PIPE = 13) A pipe without writer simulates  end-of-file 

Terminal

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  Descriptor table 

...

FIFO inode

out

in

162 / 303

8. Files and File Systems  – Communication Through a Pipe

Page 25: INF422_8

8/11/2019 INF422_8

http://slidepdf.com/reader/full/inf4228 25/25

FIFOs and I/O Redirection

Question

Implement $   ls | more

Solution

new PipeInputStream()

new PipeOutputStream()

Process to become  ls System.setOut() new ProcessBuilder().start()

(which calls   getRuntime().exec()

on  "ls")

Process to become  more

System.setIn() new ProcessBuilder().start()

(which calls   getRuntime().exec()

on  "more")

Terminal

... ...

opening mode inode pointer

offset # of openings# of descriptors

Open file table Inode table  Descriptor table 

...

FIFO inode

out

in

163 / 303