- file system or filesystem (FS or fs)
- free-space management:
- bitmap
- linked list
- consistency:
- utilities:
fsck(UNIX),sfc(Windows) - inconsistency cases:
- missing block (appears in neither table)
- duplicate free block
- (possible only with free lists, not bitmaps)
- duplicate data block (same block referenced by multiple files)
- both free and allocated
- utilities:
- block cache (buffer cache)
- write policies
- write-through
- non write-through
- write policies
- layout:
- master boot record (MBR)
- Unified Extensible Firmware Interface (UEFI)
- partition table
- GUID Partition Table (GPT)
- globally unique identifiers (GUID)
- free-space management:
file
- file
- filename
- structures:
- byte sequence
- record sequence
- tree
- file types:
- regular
- ASCII file vs binary file
- executable vs non-executable file
- directory
- device file (or device node or special file) (in UNIX, they are in
/dev/)- character special file
- block special files
- pseudo-devices (e.g.
/dev/null,/dev/random,/dev/zero)
- named pipe (or FIFO)
- hard link
- symbolic link (or symlink or soft link)
- regular
- implementation:
- contiguous allocation
- linked list allocation
- linked list allocation using an index
- indexed allocation
- file attributes
- archive
- header
- module name
- date
- owner
- protection
- size
- group
- number of links
- device number
- device number for special file
- i-node number
- object module
- header
- archive
-
executable binary file
- file access
- random access (or direct access)
- sequential access
- memory-mapped file
directory
-
a directory is a special file that contains directory entries
- a directory entry is a pair
-
an inode (index node)
- contains metadata (not the filename):
- file type
- file size (in bytes)
- number of links
- owner / group ID
- access permissions
- timestamps (atime, mtime, ctime)
- block pointers
- block pointers:
- direct pointers: contain direct addresses of data blocks
- single indirect pointer: points to a block that stores addresses of data blocks
- double indirect pointer: points to a block of pointers to indirect blocks
- triple indirect pointer: adds one more level of indirection
- (addresses per indirect block)
- let:
- = block size (bytes)
- = disk address (pointer) size (bytes)
- = number of direct pointers
- = number of indirect pointers (single, double and triple. resp.), usually everyone is 1.
- number of addresses per indirect block:
- maximum file size (bytes):
- maximum file size (bytes) with blocks limit of :
-
- let:
- contains metadata (not the filename):
-
disk quota
-
disk partitioning
-
boot sector
-
partition table
-
superblock