File Allocation Table

File Allocation Table (בראשי תיבות: FAT, בתרגום טבלת מיקומי קבצים) היא מערכת קבצים שפותחה בשנת 1977 על ידי ביל גייטס ומארק מקדונלד'ס. המערכת שולבה לראשונה במערכת ההפעלה QDOS שפותחה על ידי חברת Seattle Computer Products. לאחר רכישת QDOS על ידי חברת מיקרוסופט, שולבה מערכת הקבצים לתוך MS-DOS וחלונות עד להחלפתה כמערכת ניהול הקבצים הראשית על ידי מערכת הקבצים NTFS במערכת ההפעלה חלונות NT.
קיימות שלוש גרסאות של מערכת הקבצים: FAT16 ,FAT12 ו-FAT32, הנבדלות ביניהן רק בכמות הבתים המשמשים להפניה לכתובת בדיסק. הבחירה בסוג ה-FAT נעשית על פי גודל הדיסק. האלגוריתמים לשימוש במערכות אלה מוגדרים בתקן ISO/IEC 9293:1994.

מבנה

בעת אתחול אמצעי האחסון (המדיה) מערכת הקבצים מחלקת את שטח המדיה לארבעה חלקים, הנמצאים במקומות קבועים:Bios Parameter Block (BPB) הנקרא גם Boot Sector, טבלת ה-FAT, ספריית ה-Root, ומקטע הנתונים. יישומים העובדים עם מערכת הקבצים מסתמכים על כך שהמקטעים נמצאים במקומות הנכונים לצורך עבודתם התקינה.

BIOS Parameter Block

ה-BPB נמצא בסקטור הראשון של הדיסק והוא מכיל פרטים כלליים על מערכת הקבצים, הדרושים לצורך עבודה עם המדיה, כגון: גודל סקטור בדיסק, כתובת הבית מערכת ההפעלה, כמות טבלאות ה-FAT שהדיסק מכיל, כמות הסקטורים (יחידות ההקצאה) בדיסק, גודל טבלת ה-FAT ועוד.
בעת טעינת מדיה, ניגש הראש הקורא להתחלת המדיה וקורא את תוכן ה-BPB על מנת לקבוע את סוג מערכת הקבצים. 36 הבתים הראשונים מכילים שדות זהים עבור כל סוגי ה-FAT. במערכות FAT12 ו-FAT16 מכילים 26 הבתים הבאים מידע על סוג מערכת הקבצים (Fat12, Fat16 או Fat32), התווית (Label) והמספר הסידורי של המדיה. במערכות FAT32 מכילים 62 הבתים הבאים מידע דומה ומידע נוסף על אופן השימוש במערכת הקבצים.

טבלאות ה-FAT

טבלת FAT היא מערך שכל אינדקס בו מייצג מקטע (Cluster) במדיה, תוכן כל תא מצביע על התא המכיל את החלק הבא של הקובץ, וסוף הקובץ מצוין באמצעות ערך מספרי מיוחד הנמצא מחוץ לטווח. באופן זה, בהינתן הכתובת שבה נמצאת התחלת הקובץ, ניתן לעקוב אחרי המצביעים לאורך הקובץ עד סופו. למטרות שרידות, כל מדיה המשתמשת ב-FAT מכילה לפחות שתי טבלאות FAT (בדרך כלל 2). אורך הטבלה וגודל כל תא נקבעים על פי סוג המערכת. (גודל תא ב-FAT12 הוא 12 ביטים ואורך הטבלה הוא 9 סקטורים, ב-FAT16 הוא גודל התא הוא 16 ביטים וב-FAT32 הוא 28 ביטים).

מקטע ספריית השורש

בגרסאות FAT12 ה-FAT16 מקטע ספריית השורש הנו בן 14 סקטורים, ובו מאוחסנת ספריית השורש. בספרייה זו ניתן לאחסן קבצים וספריות נוספים. בניגוד לשאר הקבצים והספריות במערכת FAT, גודל ספריית השורש מוגבל. במערכות המממשות FAT32 ספריית השורש נמצאת במקטע הנתונים, ולכן אינה מוגבלת במקום.

מקטע הנתונים

מקטע הנתונים הוא החלק בדיסק שבו נמצאים כל הקבצים והתיקיות. קובץ עשוי להיות מורכב ממספר חלקים שאינם רציפים, אשר ניתן לגשת אליהם באמצעות מעקב סדרתי אחר טבלת הקבצים.

קבצים וספריות

במערכת FAT כל הקבצים והתיקיות הם בעלי אותו מבנה ומכילים את שם הקובץ והסיומת (אורך השם המקסימלי הוא שמונה תווים ואורך הסיומת הוא שלושה תווים), תאריך יצירה, תאריך גישה אחרון, גודל הקובץ ומאפיינים דומים. גודל המבנה הוא 32 בתים והוא מאוחסן בספריה אליה שייך הקובץ.
בעת גישה לקובץ (או ספרייה) מערכת ההפעלה בודקת היכן נמצא החלק הראשון של הקובץ (באמצעות גישה לשדה המתאים) ומחפשת אותו בטבלת הFAT, לאחר מכן היא מחפשת את חלקי הקובץ בצורה סדרתית באמצעות מעקב אחר המצביעים בטבלת הFAT עד לסוף הקובץ.

גרסאות

מיקרוסופט שחררה מספר גרסאות למערכת הקבצים יחד עם הרחבות לגרסאות הקיימות.

FAT12

גרסה זו היא הגרסה הראשונה של מערכת הקבצים ונכללה במערכת QDOS. גודל כל תא בטבלת הקבצים הוא 12 סיביות וגודל הטבלה הוא 9 סקטורים. לפיכך גודל המדיה מוגבל ל-4608 סקטורים. בפועל, גודל המדיה הוגבל ל32 מגה. הגרסה הראשונה לא כללה תמיכה במבנה ספריות היררכי, שמות קבצים ארוכים, מחיצות והתמודדות עם שגיאות בסקטור אפס.

FAT16

גרסה זו הוצגה בשנת 1984 יחד עם מערכת ההפעלה DOS 3.0. כתובת סקטור בדיסק הייתה בגודל 16 סיביות, כך שגודל המדיה המקסימלי גדל ל-65,517 סקטורים. בפועל, עקב מגבלות טכניות גודל הקבצים המקסימלי לא השתנה מ-FAT12, אך נוספה תמיכה במחיצות מרובות כך שניתן היה לחלק מדיה אחת למספר מחיצות ובכך לנצל את מלוא הגודל של המדיה. בשנת 1987, הוצגה גרסה נוספת של FAT16 אשר איפשרה לשמור קבצים בגודל 2 ג'יגה.

תמיכה בשמות קבצים ארוכים (VFAT)

במערכות קבצים ישנות שמות הקבצים היו מצורת 8.3 (8 תווים לשם הקובץ + 3 תווים לסיומת), במערכת ההפעלה חלונות 95 הוסיפה חברת מיקרוסופט ל-FAT16 תמיכה בשמות קבצים ארוכים. המערכת אפשרה לשמור קבצים בעלי שמות עד 255 תווי UTF באמצעות שימוש במאפיינים מיוחדים המונעים ממערכות הפעלה מוקדמות יותר לראות את הקבצים.

FAT32

אחת המגבלות של FAT16 הייתה שככל שהיה הכונן גדול יותר, בגלל מספר הסקטורים המקסימלי, גודל הסקטור הפך לגדול יותר. כתוצאה מכך סקטורים רבים לא נוצלו עד תומם ונוצר בזבוז של שטחי הקצאה. כל זה נכון בתנאי שגודל המחיצה גדול מ-512MB (בכוננים קטנים יותר מערכת FAT32 לא מתפקדת).
במערכת ההפעלה Windows 95 OSR2 שיצאה לשוק ב-1997, הציגה מיקרוסופט את מערכת הקבצים FAT32. כתובת סקטור בדיסק היא 28 סיביות (כאשר 4 הסיביות הנותרות אינן בשימוש). באופן תאורטי ניתן לאחסן קבצים בגודל 2 טרה אך מגבלות טכניות גרמו לכך שגודל הקובץ המקסימלי האפשרי יהיה 4 ג'יגה. בנוסף, הגדלת טבלת מיקומי הקבצים יצרה סקטורים קטנים יותר (שטח זהה התחלק על מספר רב יותר של סקטורים) ובכך נחסך מקום אחסון.
חיסרון שהיה ל-FAT32 עם יציאתה לשוק היה חוסר תאימות עם מערכות הפעלה אחרות. היו משתמשים שהריצו על מחשביהם שתי מערכות הפעלה שונות (או יותר). מערכות אלו (ובהן DOS, Windows95, ‏windows NT עד גרסה 4  או יוניקס) לא ידעו לקרוא את מערכת הקבצים החדשה ולכן אסור היה להמיר דיסקים קשיחים שהיו מיועדים ליותר ממערכת אחת לפורמט החדש. מגבלה זו חלה על דיסקים שליפים ששימשו מספר מחשבים. ובמקרים בודדים גם על שרתים אליהם ניגשו בעזרת מערכות הפעלה שונות.
מיקרוסופט סיפקה כלי בשם Drive converter להמרת מחיצות  מ-fat16  ל-, fat32 אולם לא היה כלי להמרה הפוכה. מאחר שנוצר צורך בשוק גם להמרה חזרה, יצאה לשוק גרסת Partition Magic שידעה לעשות זאת.

exFAT

exFAT (ראשי תיבות של Extended File Allocation Table) היא מערכת קבצים קניינית מותאמת במיוחד לכונני Solid state drive וכן מרחיבה את יכולות ה-FAT32, שהיא מערכת הקבצים המפעילה אמצעי אחסן ניידים. התוכנה נועדה לשימוש בעיקר במקרים בהם לא ניתן ליישם שימוש במערכת הקבצים NTFS.
התוכנה פותחה על ידי מיקרוסופט והיא משובצת במערכת ההפעלה Windows Embedded CE 6.0 ובמערכות ההפעלה השולחניות, חלונות XP עם SP2 ומעלה, וויסטה עם SP1 ומעלה. ניתן להוריד את הדרייבר לexFAT  בחינם מאתר מיקרוסופט. משתמשי לינוקס יכולים לקרוא התקנים בהם מותקנת exFAT.
exFAT פותרת בעיות שהיו למשתמשי FAT32 ובהן מגבלת 4G כגודל קובץ. התוכנה מבוססת על 64 ביט (לעומת 32 ביט ב-FAT32) מערכת
הקבצים גוזלת פחות מקום מאמצעי האחסון (EXFAT צורכת 96KB מתוך דיסק נייד של 4 גיגה לעומת NTFS שלוקחת 47.2 מגה)