<< Chapter < Page | Chapter >> Page > |
Directories
As with other modern file systems, a directory in NTFS is a file whose data contains a collection of name/file mappings.
A reference is a (file number, sequence number) pair. The file number is the offset of the file's entry in the MFT table. It issimilar to the Unix inumber (Inode number).
If the directory is larger, then the top part of (the B+ tree of) the directory is in the MFT entry, which points to extents thatcontain the rest of the name/file mappings.
Computers can crash at any time, and we want the file system to behave sensibly in the face of crashes. The key idea is calledconsistency:
Insuring consistency requires two things:
There are three basic updates that happen when data is written to a file.
These operations must be done in the above order. If they are not, then it is possible to have a data block included in a filethat might have garbage (uninitialized data) in the block.
After rebooting, the recovery utility program on Unix, called "fsck", is going to traverse the entire directory structure of thedisk to insure that all free blocks are in the free list.
Recovery after a crash follows these steps:
At the completion of the algorithm, you can compare the actual bit map to the temporary one to find blocks that were allocated, butnever made it into a file.
NTFS assures that the file system will remain consistent by use of a write log. This technique is similar to that used in adatabase system.
As in other file systems, consistency means that a write (or group of writes) to a file either complete or do not happen at all. Itis not possible for a data block to be in an undefined state (e.g., allocated, but not written).
Disk scheduling: in a system with many processes running, it can often be the case that there are several disk I/O's requested atthe same time. The order in which the requests are serviced may have a strong effect on the overall performance of the disk.
First come first served (FIFO, FCFS): may result in a lot of unnecessary disk arm motion under heavy loads.
Shortest seek time first (SSTF): handle nearest request first. This can reduce arm movement and result in greateroverall disk efficiency, but some requests may have to wait a long time.
Scan: like an elevator. Move arm back and forth, handling requests as they are passed. This algorithm does notget hung up in any one place for very long. It works well under heavy load, but not as well in the middle (about 1/2 the time it will not get the shortestseek).
Minor variant: C-SCAN , which goes all the way back to front of disk when it hits the end, sort of like araster scan in a display.
LOOK algorithm. Like scan, but reverse direction when hit the last request in the current direction. C-LOOK isthe circular variant of LOOK. What most systems use in practice.
Notification Switch
Would you like to follow the 'Operating systems' conversation and receive update notifications?