1 / 10

CSE451 Introduction to Operating Systems Spring 2008

CSE451 Introduction to Operating Systems Spring 2008. Tour of the Windows NT File Systems Gary Kimura & Mark Zbikowski. History. Portable System Group formed November 1988 Started with five software engineers Later became Windows NT FAT for NT was written in early 1989

aiko
Download Presentation

CSE451 Introduction to Operating Systems Spring 2008

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE451 Introduction to Operating Systems Spring 2008 Tour of the Windows NT File Systems Gary Kimura & Mark Zbikowski

  2. History • Portable System Group formed November 1988 • Started with five software engineers • Later became Windows NT • FAT for NT was written in early 1989 • Supported DOS disk format • Entirely new code base and programming model • FASTFAT started in late 1989 (two person effort) • Other file systems done by the Core NT group were • HPFS, NTFS, CDFS, NPFS • FS development was done concurrently with kernel development • A lot of cooperative design between the file systems, I/O system, Memory Management, and the Cache manager

  3. Fat on-disk Structure • Boot sector, followed by reserved sector Area • File Allocation Table (FAT) • 12, 16, and 32 bit FAT • Clusters size • Typically two copies of FAT • Root Directory • Fixed size • 32 byte Directory Entries (dirent) • 8.3 names • Data area • Once only for file data, later expanded to include subdirectories

  4. 1.44 MB Floppy format • Number of sectors = 0xB40 (2,880) • Sector size = 0x200 (512) • Number of Fats = 0x2, Sectors per Fat = 0x9 • Root directory Size = 0xE (14) sectors, 0xE0 (224) entries • Layout • Sector 0x0: boot sector • Sector 0x1: start of first FAT • Sector 0xA: start of second FAT • Sector 0x13: start of root directory • Sector 0x21: start of data area • Disk Edit utility to help in your project • Added to the project4 directory (copy everything to your vhd)

  5. I/O – FS Interface • Layering of drivers (file systems, disks, etc.) • All orchestrated by the I/O System • Driver Objects (one per file system). Each driver “registers” with the I/O system, see DriverEntry(…) in FatInit.c • Device Objects (one per volume). Created when a new volume is mounted, see FatMountVolume(…) in Fsctrl.c • File Objects (one per CreateFile call). See FatCommonCreate(…) in create.c • I/O Call Driver model using I/O Request Packets (IRP) • IRP Stack locations (see “inc\ddk\wdm.h”) • Major and minor functions • IoCallDriver(…) and IoCompleteRequest(…) • File Object • FsContext and FsContext2

  6. Windows FS Architecture • Data Structure Layout • Mimics as much as practical the on-disk directory/file hierarchy • Keeps in memory the opened files and directories • Volume Control Block (VCB) • File Control Block (FCB) and Directory Control Block (DCB) • Context Control Block (CCB) • All rooted in FatData (See FatStruc.h)

  7. Windows FS Architecture (Continued) • FSD/FSP Model • User Thread versus Worker Thread • Driven off of IRP Major Function • See DriverEntry(…) in FatInit.c • Fat Common Routines • Everything looks like a file • FatReadVolumeFile(…) • Some things to watch out for • Kernel Stack Space Limitation • Being able to wait for I/O • Recursive routines

  8. Cache/MM Interaction • Virtual caching • Memory Mapped Files • Fast read and fast write • Ancillary file system data also cached • Borrowing a pin and unpin logic from databases • Noncached I/O • Where the actual read/write to disk occur • Synchronous and Asynchronous I/O • See read.c, write,c and deviosup.c

  9. CreateFile Operation • Some of the main files and functions to look at • Create.c and dirsup.c • FatFsdCreate • FatCommonCreate • FatCreateNewFile • FatCreateNewDirent • FatConstructDirent

  10. Programming Style • Engineering practices • Comments • Indentation • Variable names • Project 4 description has a synopsis of each source file

More Related