
	 
	 File System Abstraction
	 
	 
    
                    
-  File system can be viewed as an abstract data type.
  
  -  Present the reading, writing and other operations to
      to the client.
  
 -  Implement using blocks of file storage.
  
 -  Changes to the system must survive the processes make them,
      and across system reboot.
  
 
 -  Visible file structure.
  
  -  A file is a sequence of bytes.
  
 -  Previously
    
    -  A sequence of fixed-size records.
    
 -  Key/value pairs.
    
 
   -  Current practice is to allow applications or library to build 
      whatever needed structure in the byte-array file.
  
 
 -  File names
  
  -  Various limits on length or characters.
  
 -  Case sensitive or not.
  
 -  Unix is case-sensitive.
  
 -  DOS is famous 8/3, case insensitive.
  
 -  Windows is case insensitive, but remembers the case used when the
      name was created.
  
 -  Extensions and applications.
    
    -  Some (notably Windows) use part of the file name to indicate content.
    
 -  Associate an application with a file by its ending.
    
 -  Some systems record this separately from the file name.
    
 -  Some just leave it to the user.
    
 
   
 -  File types.
  
  -  Special types recognized by the kernel.
    
    -  Directories (most OSs).
    
 -  Device files which represent a device instead of storage.
    
 -  Communications channels (Unix).
    
 
   -  File formats
    
    -  A particular arrangement of the bytes in the file, eg. jpg image
    	format, mpg audio format, favorite word processor format, etc.
    
 -  Any OS must recognize
      
      -  It's own executable format.
      
 -  It may recognize others, or leave them to applications.
      
 
     -  Associating files with applications which understand them.
      
      -  Windows uses file extensions (part of the name).  Windows.
      
 -  Some OS's record this with the file apart from the name.
      
 -  Sometimes applications use name extensions, but not the kernel.
      
 
     
   
 -  File access.  
  
  -  Sequential.  Start to finish in order.
  
 -  Random.  Read in order directed by a program.
  
 
 -  File attributes
  
  -  Information associated with the file besides the data.
  
 -  Most essential: name.
  
 -  Size
  
 -  Write date and other dates.
  
 -  Creator, owner, permissions.
  
 -  Many others.
  
 -  Some OSs support arbitrary user-defined attributes.
  
 
 -  There are many file operations, varying a bit by OS.
Create, delete, open, close, read, write, append, seek, get attributes,
set attributes, rename.
 -  Directory layout.
  
  -  Early OSs had a single directory for the whole system.
  
 -  Some have had one directory per user, and other special arrangements.
  
 -  Modern systems have general trees.
    
    -  Files arranged in a tree, where files are leaves and internal nodes
    	are directories.
    
 -  Root node at the top of the tree.
    
 
   -  File Paths.
    
    -  Full file names represent paths through the tree.
    
 -  Separator character varies.
    
 -  Windows uses one tree per device, rather than a single tree.
    
 -  File names starting with the separator are full path names.
    
 -  File names starting without the separator are relative.
      
      -  Each process has a current directory to which the kernel 
      	  treats them as relative.
      
 -  Other software may have directory name or names which it
      	  uses to build a full path.
      
 
     
   
 -  Directory operations.  
    Create, delete, opendir, closedir, readdir, rename, link, unlink
      
      -  Read and write operations are specialized to reading directory
      	  entries, rather than general reading ans writing.
      
 -  Link and unlink refer to adding and removing directory entries.