File System Interface

Download Report

Transcript File System Interface

O/S 4740
Chapter 9
File-System Interface
File Concept
• Uniform logical view of information storage
(no matter the medium)
• OS abstracts from physical properties into
a logical storage unit, the file
• Files mapped onto physical devices,
usually nonvolatile
• File is a collection of related information
– Smallest allotment of nameable storage
File Concept (2)
• Contiguous logical address space
• Types:
– Data
• numeric
• character
• binary
– Program
– May be free form or rigidly formed (structured)
File Structure
• None - sequence of
words, bytes
• Simple record
structure
– Lines
– Fixed length
– Variable length
• Complex Structures
– Formatted document
– Relocatable load file
• Can simulate last two
with first method by
inserting appropriate
control characters
• Who decides:
– Operating system
– Program/programmer
File Attributes
• Name
– only information kept in human-readable form
• Identifier
– unique tag (number) identifies file within file system
• Type
– needed for systems that support different types
• Location
– pointer to file location on device
• Size
– current file size
File Attributes (2)
• Protection
– controls who can do reading, writing,
executing
• Time, date, and user identification
– data for protection, security, and usage
monitoring
• Information about files are kept in the
directory structure, which is maintained on
the disk
File Operations
• File is an abstract data type
– Create
• find space, add entry to directory
– Write
• write data at current file position pointer location and update
pointer
– Read
• read file contents at pointer location, update pointer
– Reposition within file (seek operations) )
• change pointer location
– Delete
• free space and remove entry from directory
– Truncate
• delete data starting at pointer
Open Files
• Open(Fi) – allow process to access a file
– Returns a file handle for system call reference
to the file
– Search the directory structure on disk for
entry Fi, and move the content or cache some
of entry to memory
• Close(file handle) – end processes’
access to the file
– Move the content of entry Fi in memory to
directory structure on disk
Open Files (2)
• Several pieces of data are needed to
manage open files:
– File pointer: pointer to last read/write location,
per process that has the file open
– File-open count: counter of number of times a
file is open – to allow removal of data from
open-file table when last processes closes it
– Disk location of the file: cache of data access
information
– Access rights: per-process access mode
information
Open File Data Structures
• Usually a global table containing process-independent open
file information
–
–
–
–
Size
Access dates
Disk location of the file: cache of data access information
File-open count: counter of number of times a file is open
• To allow removal of data from open-file table when last processes
closes it
• Per-process open file table contains pertinent info, plus
pointer to entry in global open file table
– Current file position pointer: pointer to next read/write location
– Access rights: per-process access mode information
• read, write, append
Open File Locking
• Provided by some operating systems and
file systems
• Mediates access to a file
– Shared or exclusive
• Mandatory or advisory:
– Mandatory – access is denied depending on
locks held and requested
– Advisory – processes can find status of locks
and decide what to do
File Locking Example – Java
API
import java.io.*;
import java.nio.channels.*;
public class LockingExample {
public static final boolean EXCLUSIVE = false;
public static final boolean SHARED = true;
public static void main(String arsg[]) throws IOException {
FileLock sharedLock = null;
FileLock exclusiveLock = null;
try {
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
// get the channel for the file
FileChannel ch = raf.getChannel();
// this locks the first half of the file - exclusive
exclusiveLock = ch.lock(0, raf.length()/2, EXCLUSIVE);
/** Now modify the data . . . */
// release the lock
exclusiveLock.release();
File Locking Example –
Java API (Cont.)
// this locks the second half of the file - shared
sharedLock = ch.lock(raf.length()/2+1, raf.length(),
SHARED);
/** Now read the data . . . */
// release the lock
sharedLock.release();
} catch (java.io.IOException ioe) {
System.err.println(ioe);
}finally {
if (exclusiveLock != null)
exclusiveLock.release();
if (sharedLock != null)
sharedLock.release();
}
}
}
File Types
• Most operating systems recognize file types
– Filename extension
– I.e. resume.doc, server.java, readerthread.c
• Most support them
– Automatically open a type of file via a specific application (.doc)
– Only execute files of a given extension (.exe, .com)
– Run files of a given type via a scripting language (.bat)
• Can get more advanced
– If source code modified since executable compiled, if attempt
made to execute, recompile and then execute (TOPS-20)
– Mac OS encodes creating program’s name in file attributes
• Double clicking on file passes the file name to appropriate application
– Unix has magic number stored in file at first byte indicating file
type
File Types – Name, Extension
File Structure
• Types can indicate internal file structure
– Some Oses enforce, some use as hints, some ignore
• But some most conform to OS-required format
– I.e. executable file
– Some support more formats
• DEC VMS supported 3
– The more that are supported, the more kernel code, etc
– Some enforce access methods
– Others allow arbitrary access
• Unix supports directory files, executable files
• But all files are strings of bytes
– Can open a directory file via a text editor
• Files stored in fixed-size disk blocks
– Can have internal fragmentation
Access Methods
• Sequential Access
read next
write next
reset
no read after last write
(rewrite)
• Direct Access
read n
write n
position to n
read next
write next
rewrite n
•
n = relative block number
Sequential-access File
• Simulation of Sequential Access on a Direct-access File
Example of Index and Relative
Files
Disk Structure
• Disk can be subdivided into partitions
• Disks or partitions can be RAID protected against failure
• Disk or partition can be used raw – without a file system, or
formatted with a file system
• Partitions also known as minidisks, slices
• Entity containing file system known as a volume
• Each volume containing file system also tracks that file
system’s info in device directory or volume table of
contents or directory)
– Records information for all files on the volume
• As well as general-purpose file systems there are many
special-purpose file systems, frequently all within the same
operating system or computer
A Typical File-system
Organization
Directory Structure
• A collection of nodes containing information
about all files
Directory
Files
F1
F2
F3
F4
Fn
Both the directory structure and the files reside on disk
Directory
• Operations Performed on directories
– Search for a file
– Create a file
– Delete a file
– List a directory
– Rename a file
– Traverse the file system
Directory (2)
• Organize the Directory (Logically) to
Obtain
– Efficiency
• locating a file quickly
– Naming – convenient to users
• Two users can have same name for different files
• The same file can have several different names
– Grouping
• logical grouping of files by properties, (e.g., all
Java programs, all games, …)
Single-Level Directory
• A single directory for all users
Naming problem
Grouping problem
Two-Level Directory
• Separate directory for each user
 Path name
 Can have the same file name for different users
 Efficient searching
 No grouping capability
Tree-Structured Directories
Tree-Structured Directories (2)
• Efficient searching
• Grouping Capability
• Current directory (working directory)
– cd /spell/mail/prog
– type list
Tree-Structured Directories (3)
• Absolute or relative path name
• Creating a new file is done in current directory
• Delete a file
– rm <file-name>
• Creating a new subdirectory is done in current directory
–
mkdir <dir-name>
• Example: if in current directory /mail
– mkdir count
mail
prog
copy prt exp count
• Deleting “mail”  deleting the entire subtree rooted by
“mail”
Acyclic-Graph Directories
• Have shared
subdirectories
and files
Acyclic-Graph Directories (2)
• Adds ability to directly share directories between
users
– But can now have multiple absolute paths to the
same file
• Two different names (aliasing)
• If dict deletes list  dangling pointer
Solutions:
– Backpointers, so we can delete all pointers
Variable size records a problem
– Entry-hold-count solution
Acyclic-Graph Directories (3)
• New directory entry type
– Link – another name (pointer) to an existing
file
• Indirect pointer
• Delete link separate from the files
• Hard and symbolic
– Resolve the link – follow pointer to locate the
file
General Graph Directory
General Graph Directory (3)
• How do we guarantee no cycles?
– Allow only links to file not subdirectories
– Garbage collection
– Every time a new link is added use a cycle
detection
algorithm to determine whether it is OK
– Or just bypass links during directory traversal
File System Mounting
• A file system must be mounted before it can be accessed
• A unmounted file system is mounted at a mount point
(a) Existing. (b) Unmounted Partition
Mount Point
• From previous image,
the umounted file
system is mounted at
the point of users
– NOTE that fred and bill
directories are no
longer accessible.
• Not deleted.
File Sharing
• Sharing of files on multi-user systems is
desirable
• Sharing may be done through a protection
scheme
• On distributed systems, files may be shared
across a network
• Network File System (NFS) is a common
distributed file-sharing method
File Sharing – Multiple Users
• User IDs identify users, allowing
permissions and protections to be per-user
• Group IDs allow users to be in groups,
permitting group access rights
File Sharing – Remote File
Systems
• Uses networking to allow file system access between systems
– Manually via programs like FTP
– Automatically, seamlessly using distributed file systems
– Semi automatically via the world wide web
• Client-server model allows clients to mount remote file systems from
servers
–
–
–
–
–
Server can serve multiple clients
Client and user-on-client identification is insecure or complicated
NFS is standard UNIX client-server file sharing protocol
CIFS is standard Windows protocol
Standard operating system file calls are translated into remote calls
• Distributed Information Systems (distributed naming services) such
as LDAP, DNS, NIS, Active Directory implement unified access to
information needed for remote computing
File Sharing – Failure Modes
• Remote file systems add new failure modes,
due to network failure, server failure
• Recovery from failure can involve state
information about status of each remote
request
• Stateless protocols such as NFS include all
information in each request, allowing easy
recovery but less security
• but stateless protocols can lack features, so NFS V4 and
CIFS are both state-ful
File Sharing – Consistency
Semantics
• Consistency semantics specify how multiple
users are to access a shared file simultaneously
– Similar to Ch 6 process synchronization algorithms
• Tend to be less complex due to disk I/O and network latency
(for remote file systems
– Andrew File System (AFS) implemented complex
remote file sharing semantics
– Unix file system (UFS) implements:
• Writes to an open file visible immediately to other users of
the same open file
• Sharing file pointer to allow multiple users to read and write
concurrently
– AFS has session semantics
• Writes only visible to sessions starting after the file is closed
Protection
• File owner/creator should be able to control:
– what can be done
– by whom
• Types of access
–
–
–
–
–
–
–
Read
Write
Execute
Append
Delete
List
Others can include renaming, copying, editing, etc
Access Lists and Groups
•
•
•
•
Mode of access: read, write, execute
Three classes of users
RWX
a) owner access
7

111
RWX
b) group access
6

110
RWX
c) public access
1

001
Ask manager to create a group (unique name), say G, and add some users to the
group.
For a particular file (say game) or subdirectory, define an appropriate access.
owner
Attach a group to a file
chmod
chgrp
group
761
G
public
game
game
Access Control
• More generally solved via access control
lists
– For a given entity, keep list of user-ids
allowed to access and what access methods
– Constructing such as list can be tedious and
unrewarding
– Data structure must be stored somewhere
• Variable size
Windows XP Access-Control
List Management
A Sample UNIX Directory
Listing
Q&A