Beruflich Dokumente
Kultur Dokumente
Essential requirements
Length
Distinguish between upper and lower case
Characters allowed
File structure types
(keyed)
File types
1. Regular files
2. Directories (folders)
3. Special
1. Character special (used for serial I/O: ports,
printers, networks, etc.)
2. Block special (used for disks)
Regular files
ASCII or binary
ASCII is easy to use
Record oriented (delimiter)?
Binary is space efficient
Fixed or variable length
File access
1. Sequential
2. Random
seek() and fseek()
Binary
unbuffered: read(), write()
Buffered: fread(), fwrite()
ASCII, buffered: fscanf(), fprintf()
File attributes
File operations
Create Append
Delete Seek
Open Get attributes
Close Set attributes
Read Rename
Write
Memory-mapped files
1. Single level
2. Two level
3. Hierarchical
Two level directory systems
Hierarchical directory systems
Path names
Create Readdir
Delete Rename
Same or similar
Opendir so be careful! Link
Closedir Unlink
Disk organization
Physical disks
Divided into one or more “partitions” (logical, separate
disks).
Each partition can have its own file system.
Sector 0 = MBR (master boot record)
List of partitions (start and ends)
Indicates boot partition
Every partition has a boot block (although it may be empty)
Boot steps:
1. boot code in MBR executes
2. reads in boot block code of boot partition and executes it
3. boot block code boots OS code in partition
File system layout
IMPLEMENTING FILES
Implementing files
1. Contiguous allocation
4. I-nodes (index-nodes)
1. Implementing files: contiguous
allocation
Given 1KB blocks, a 50KB file would be allocated 50
consecutive blocks
+ simple: all we need to know if the disk address of the
first block and the number of blocks (or length of the
file)
+ fast: only 1 seek + one read needed for the entire file
+ sequential and random access are efficient
- fragmentation (holes or compaction)
- Must specify the size of the file ahead of time.
Excellent for CDs and DVDs.
1. Implementing files: contiguous
allocation
2. Implementing files: linked list allocation
2. Implementing files: linked list allocation
+ no fragmentation
- Sequential access is easy but requires
multiple seeks and reads.
- Random access is slow (basically becomes
sequential access).
3. Implementing files: linked list w/ table
in memory
FAT = file allocation table
+ random access requires only sequential
memory access (which is fast)
- Need memory to store the table.
20GB and 1KB blocks requires a table with 20M
entries. (20M x 4 bytes-per-entry = 80MB)
Size of table is proportional to disk size.
3. Implementing files: linked list w/ table
in memory
4. Implementing files: i-nodes
(disk)
MISC. TOPICS
Implementing directories (folders)
i-nodes
Shared files (i.e., files in more than one
directory)
Disk space management
Block size
Might want/need to consider:
page size
sector, track, or cylinder size
what is the average size of a file
For Unix, 1KB is commonly used.
Keeping track of free blocks
Linked list of free block numbers
Bitmap
Disk quotas
Limits on disk space usage by users.
File system reliability
Backups
1. Full
2. Incremental
Backups
1. Physical dump
2. Logical dump
Consistency
When the system is not shut down properly.
File system performance
MS-DOS/Windows3.1/Windows95
Windows98
NTFS
Unix V7
MS-DOS/Windows3.1/Windows95
First byte is sequence number & Invalid attr’s 0x0f for all long file entries.
NTFS (from ntfs.com and msdn.com)
simple
disk addr of file block 0
disk addr of file block 9