Directories and Links
Lecture Notes for CS 140
Spring 2020
John Ousterhout
- Readings for this topic from Operating Systems: Principles and Practice:
Sections 13.1-13.2.
- Naming: how do users refer to their files? How does OS
find file, given name?
- First step: inode has to be stored on
disk, so it will persist across system reboots.
- Early UNIX versions: all inodes stored in a fixed-size array on disk.
- Originally: entire inode array was at the outer
edge of the disk. Result: long seeks between inodes
and file data.
- First improvement: place inode array mid-way across disk.
- Second improvement: many small inode arrays spread across
disk, so inodes can be near to file data.
- Space for inodes is fixed when the disk is
initialized, and can't be changed.
- UNIX/Linux/Pintos terms:
- Index of inode in the inode array: i-number.
Internally the OS uses the i-number as an identifier
for the file.
- When a file is open, its inode is kept in main
memory. When the file is closed, the inode is
stored back to disk.
- File naming: users want to use text names to refer to files.
Special disk structures called directories are used
to map names to i-numbers.
- Early approaches to directory management:
- A single directory for the entire disk:
- Many early personal computers worked this way.
- A single directory for each user (e.g. TOPS-10):
- Avoids problems between users, but still makes it
hard to organize information.
- Modern systems support hierarchical directory structures.
UNIX/Linux approach:
- Directories are stored on disk just like regular files (i.e.
inode with 14 pointers, etc.) except inode
has special "type" bit set to indicate that it's a directory.
- Each directory contains <name, i-number> pairs in no
particular order.
- The file pointed to by the i-number may be another directory.
Hence, get hierarchical tree structure. Names have
slashes separating the levels of the tree.
- There is one special directory, called the root. This
directory has no name; it has i-number 2 (i-numbers 0 and 1
have other special purposes).
- Only the operating system can read and write directories.
Working directories
- Cumbersome to specify the full path name
for all files.
- Have OS remember the i-number for one distinguished directory per
process, called the working directory.
- If a file name doesn't start with "/" then it is looked up
starting in the working directory.
- Names starting with "/" are looked up starting in the root
directory.
Links
- UNIX hard links:
- It is possible for more than one directory entry to
refer to a single file.
- UNIX uses reference counts in inodes to
keep track of hard links referring to a file.
- Files are deleted when the last directory entry
goes away.
- Must prevent circularities (don't allow links to directories).
- Symbolic links:
- A file whose contents are another file name.
- Stored on disk like regular files, but with special
flag set in inode.
- If a symbolic link is encountered during file lookup,
switch to target named in symbolic link, continue
lookup from there.