1 / 29

FAT32 Directory Entries and Operations Guide

FAT32 Directory Entries and Operations Guide. Operating Systems CS3430 Sarah Diesburg. Outline. Directory entries Short-name and long-name entries Project 3 operations. Directory Entries. Directory Entries. Lists names of files and directories in a directory Types

perdy
Download Presentation

FAT32 Directory Entries and Operations Guide

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. FAT32 Directory Entries and Operations Guide Operating Systems CS3430 Sarah Diesburg

  2. Outline • Directory entries • Short-name and long-name entries • Project 3 operations

  3. Directory Entries

  4. Directory Entries • Lists names of files and directories in a directory • Types • Short-name directory entry • Long-name directory entry

  5. Short-name Directory Entry • Limits name size to 8 bytes with additional 3 bytes after “.” • Compatible with previous FAT versions • 32 bytes total size • Holds important information about file or dir: • Attributes, timestamp, last access date, first cluster number, size

  6. Short-name Directory Entry • If DIR_Name[0] == 0xE5, then the directory entry is free (no file or directory name in this entry) • If DIR_Name[0] == 0x00, then the directory entry is free (same as for 0xE5), and there are no allocated directory entries after this one

  7. Long-name Directory Entry • Backwards-compatible way to allow longer names to be displayed • Each long-name directory entry is 32 bytes • A long file name can cover a set of long-name directory entries • Each set of long-name directory entries must correspond to a short-name directory entry • Long-name entries must immediately precede corresponding short-name entry

  8. Long-name Directory Entry Long-name part 1 Two long-name entries are needed to hold the file name Long-name part 2 Short-name

  9. Long-name Directory Entry Long-name part 1 Long-name part 2 Short name entry for the file must exist too Short-name

  10. Long-name Directory Entry Long-name part 1 Long-name entries for this file immediately precede short-name entry Long-name part 2 Short-name

  11. Directory entries • Long-name entry for “fatgen103.pdf"

  12. Directory entries • Short-name entry for “fatgen103.pdf"

  13. Long-name Directory Entries • You can ignore the long directory entries • Can just display the short names • This makes the project easier

  14. “Dot” Entries • All directories (except root directory of entire system) have “.” and “..” directory entries • “.” means “this directory” • “..” means “the parent directory” • Why do you think the root directory does not have these entries?

  15. Directory Entry Attributes • Offset 11 in directory entry, 1 byte long • ATTR_READ_ONLY 0x01 • ATTR_HIDDEN 0x02 • ATTR_SYSTEM 0x04 • ATTR_VOLUME_ID 0x08 • ATTR_DIRECTORY 0x10 • ATTR_ARCHIVE 0x20 • ATTR_LONG_NAME • ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID

  16. Utility Operations

  17. FAT32 Utility Oprations • info • open • close • size • cd • ls • read Utility recognizes the following built-in commands:

  18. Precautions • File or directory must exist before performing operations on it • File must be open and flagged for reading before you attempt to read from it • Be sure you are reading from the right location • Off by 1 byte can throw whole project off

  19. Handling Open Files • An open file is a file we allow I/O operations to be performed on read • To handle open files, we must maintain a table of files that are open

  20. Opening Files /] open FATINFO.TXT rw • If “FATINFO.TXT” is found in the current directory, open “FATINFO.TXT” • In order to find fatinfo.txt, you must be able to interpret the current directory and determine whether fatinfo.txt is part of that directory • Once you open fatinfo.txt, store its name in the open file table

  21. open • Check if the file is already open • Check that the provided file name exists in the requested directory • If it exists, add the file to your open file table

  22. close • Check that the file name provided exists in your open file table • If it does, remove that entry from your open file table

  23. Closing Files /] close FATINFO.TXT • Remove this file’s entry from the open file table

  24. ls • Make sure that provided directory name is directory and exists in requested directory • Seek first data cluster • Iterate through and print each directory entry in the cluster • If more directory entries left than first cluster can hold, seek next cluster and repeat 3

  25. size • Check that provided file name exists in the requested directory • Can be accomplished by seeking through the clusters of the requested directory • If it does, extract the size information • Pay attention to endianness!

  26. cd • Check that provided directory name is a directory and exists • Alter your current working directory to reflect the change • For ease of debugging and use, you may want to alter your prompt to show current working directory

  27. I/O on Open Files /] read “fatinfo.txt” 0 100 • Only allow the read if fatinfo.txt is open • In order to read fatinfo.txt, you must look into the open file table, look up the address of fatinfo.txt (or store it with its name), and read enough of the data clusters to satisfy the read request

  28. read • Make sure file name provided is in open-file table and flagged as read-capable • Check that the provided position is valid • Check that the requested number of bytes is valid • Seek to data cluster corresponding to the requested start position and begin reading • If more data to be read, seek the next clusters and repeat 4

  29. Use Cases • Be sure to look at the Project 3 Use Cases document and make sure you code acts the same way.

More Related