FAT یک فایل سیستمی است که توسط مایکروسافت برای محیط DOS طراحی شد و هم اکنون ورژنهای بالاتر ویندوز و ویندوز ME را نیز ساپورت می کند
به عنوان مثال FAT که در فلاپی های منعطف و یا دیسک های نوری استفاده می شود (FAT12 و FAT16 بدون نام فایل طولانی) با استانداردهای Iso/IEC 9293 استانداردسازی شده اند .
فایل سیستمی FAT پیچیده نبوده و تقریباً توسط تمام سیستم های عامل در کامپیوتر های شخصی ساپورت می شود . و این حالت همه گیر و فراگیر آن باعث شده که عنوان یک فرمت ایده آل برای فلاپی ها ، کارت های مموری است و یک روش مناسب جهت Share کردن داده ها روی سیستم عاملهایی که روی یک کامپیوتر نصب شده اند می باشد .
زمانی که تعدادی فایل را حذف و سپس فایل های جدید را روی هارد خود می ریزید ؛ بر طبق نقشه طراحی شده اطلاعات روی دیسک قرار می گیرد و این باعث می شود که سرعت پروسه Read یا Write کند شود .
یک راه حل برای این کار استفاده از Defragmentation ( یکپارچه سازی ) می باشد ولی معمولاً این پروسه خیلی زمان بر است و لازم است که این عمل بطور مرتب انجام شود تا فایل سیستمی شما مرتب باشد .
نباید روی کارت های مموری Solid- State ( نیمه هادی ) این کار را انجام داد مگر اینکه این کارت ها دیگر بالکل از کار افتاده باشد .
تاریخچه :

نام FAT از اینجا سرچشمه گرفت که از جدولی حاوی اطلاعات مربوط به اینکه کدام نواحی به فایل ها تعلق دارد چه نواحی آزاد بوده و کدام یک غیر قابل استفاده اند و یا اینکه هر فایل در کدام قسمت هارد ذخیره شده است .
برای اینکه اندازه این جدول و تعداد بیت های موجود فضای هارد به فایل ها بصورت گروهی از سکتور ها ی به هم پیوسته که کلاستور نامیده می شود ، تخصیص داده می شود .
تعداد کلاستور ها به طور چشمگیری افزایش پیدا کرده است و تعداد بیت هایی که لازم است تا یک کلاستور مشخص شود به عنوان نام ورژن فایل سیستمی استفاده می شود .
FAT استاندارد ، از طرق دیگر نیز توسعه داده شده است بطوریکه با نرم افزار های موجود سازگاری داشته باشد .
FAT12 :
اولین ورژن FAT با نام FAT 12 منتسب است . این فایل سیستمی برای فلاپی دیسکت ها طراحی شده بود . این فایل سیستمی محدودیت های زیر را دارد :
طول آدرس دهی کلاستور ها فقط 12 بیت است و این باعث می شود که تعداد کلاستورها بیش از 4078 نشود .
و به صورت 8 – bit یا 16 – bit اطلاعات ذخیره می شود .
اندازه هاردی که اطلاعات در آن 16 – bit سکتوری ذخیره می شود به 32MB محدود می شود .
FAT 12 توسط سازندگان مختلفی با فرمت های فیزیکی متفاوت فلاپی دیسکت استفاده می شود . فلاپی های با اندازه 5.25 اینچ که Single – Side هستند و 40 تراک داشته و در هر تراک 8 سکتور داشته و ظرفیت آن 160 KB ( هم برای نواحی سیستم عامل و هم نواحی مربوط به فایل ) دارند ، می باشد . با اینکه ظرفیت این فلاپی دیسک ها افزایش پیدا کرده است ولی هنوز این محدودیت ظرفیت با گذشت چندین سال باقی مانده است .
به طور قرار دادی همه ساختارهای کنترلی ، برای فیت کردن تراک اول طراحی شده اند . بنابراین از تغییر مکان هد هنگام عملیات Read یا Write جلو گیری کنید . هر چند این مکان به سازنده و فرمت فیزیکی هارد بستگی دارد .
Initial FAT 16 :
در سال 1984 ، IBM یک PC AT ساخت که هارددیسکی با ظرفیت 20 MB است . همزمان و بطور موازی مایکروسافت ورژن MS- DOS را معرفی کرد و آدرس کلاستور تا 16 بیت افزایش پیدا کرد و امکان افزایش تعداد کلاستور ها (تا 65517) نیز وجود دارد و در نتیجه اندازه فایل سیستمی افزایش پیدا می کند .
هر چند ماکزیمم تعداد سکتورها و ماکزیمم سایز 32 MB تغییر نمی کند . بنابراین اگر چه بصورت تکنیکال " FAT 16 " نامیده می شود ، این فرمت با آنچه که امروزه تحت این نام استفاده می شود ، خیلی فرق می کند .
هاردی که تحت MS – DOS 3.0 فرمت شده باشد توسط MS – DOS 2.0 قابل دسترسی نیست و البته MS – DOS 3.0 به MS – DOS 2.0 دسترسی خواهد داشت .
همچنین MS- DOS 3.0 دیسکت های با چگالی بالا 1.2 MB با اندازه 5.25 اینچ که در هر Track ، 15 سکتور دارد را نیز ساپورت می کند .
و ارتقای اندازه کلاستور از 2 سکتور به 1 سکتور را به همراه خواهد داشت . سرعت این دیسکت ها بطور قابل ملاحظه ای نسبت به نوع Double density خیلی کند تر است .
Extended Partition و درایو های منطقی :
جدای از بهبود ساختار فایل سیستمی FAT ، ماکزیمم فضای ذخیره سازی FAT نی افزایش پیدا کرده است و به همین دلیل امکان ایجاد پارتیشن های FAT چندگانه را فراهم می کند .
به طور کلی این پارتیشن ها تنها جهت استفاده به عنوان Share کردن بین سیستم عامل ها ی DOS و Xenix استفاده می شود . DOS برای این منظور است که یک پارتیشن یا فرمت FAT را راه اندازی کند .
نمی توان بوسیله ابزارهای DOS ، چند پارتیشن ایجاد کرد .
به طور ساده امکان ایجاد پارتیشن در DOS وجود دارد ولی با مشکل نام گذاری مواجه هستید . C باید اولین پارتیشن FAT در هارددیسک شما باشد و به عنوان پارتیشن فعال در جدول پارتیشن ها مارک دار شده است . بنابراین آیا ورژنهای مختلف DOS هنوز وجود دارند ؟ و کدام پارتیشن C نامیده می شود اگر که سیستم از روی دیسکت بوت شود ؟
برای اینکه بتوانید از تعداد بیشتری پارتیشن FAT بطور سازگار با هم استفاده کنید ، یک نوع جدید پارتیشن جدید معرفی شد (در سال 1986) که Extended Partition نامیده می شود و حاوی پارتیشن های دیگری که Logical Drives نامیده می شوند ، می باشد .
عموماً یک درایو منطقی (Logical Drive) امکان دارد که افزایش ظرفیت هارددیسک تا 64 مگابایت را فراهم کند . در ورژن MS –DOS 3.3 در سال 1987 این محدودیت به 24 درایو افزایش پیدا کرد . و این به خاطر نحوه نام گذاری دیسک است که از حروف الفبا برای نام گذاری استفاده می شود ( A و B برای فلاپی درایو رزرو شده اند .)
آنچه که به عنوان درایو های منطقی در ساختار هارد دیسک توضیح داده شد ، بسیار شبیه MBR ( Master Boot Record) می باشد که Primary Partition یا پارتیشن ابتدایی نامیده می شود .
این پارتیشن ها به گونه ای قرار می گیرند که شبیه بلوک های جداگانه کهداخل یک جعبه قرا می گیرند ، می باشند . این بلوک ها بصورت یک زنجیره به هم پیوسته هستند و یک Link در قسمت EBR آنها وجود دارد .
درایو های منطقی Bootable نیستند . و پارتیشن Extended تنها زمانی که پارتیشن Primary ( اولیه و اصلی ) ایجاد شده باشد قابل ایجاد شدن است .
یک فایده اساسی پارتیشن Extended این است که می توان تعداد بیشتری پارتیشن در هارددیسک PC خود داشت و همچنین امکان بوت کردن از پارتیشن های مختلف نیز فراهم می شود .
بعضی از کنترلرهای هارد قادرند کاری کنند که بصورت دو هارد جداگانه نشان داده شوند .
FAT 16 نهایی :
در سال 1987 ، Compaq DOS 3.31 تولید شد که امروزه به آن فرمت FAT 16 گفته می شود . که در آن فهرست سکتور های هارد از 16 بیت به 32 بیت افزایش پیدا کرده است .
این فایل سیستمی به عنوان DOS 3.31 Large File System نام گذاری شده است . هر چند تغییرات هارد خیلی کم است ولی کدهای هارد لازم است به 32 بیت تبدیل شوند . چرا که این کدها به زبان اسمبلی 16 بیتی نوشته شده اند . در سال 1988 یک بهبود عظیم و چشمگیر در این عرصه بوجود آمد و آن حضور MS-DOS 4.0 و OS/21.1 می باشد . در حال حاضر اندازه معمول و رایج سکتورها ، 512 بایت می باشد . و به این صورت اندازه کلاستور 32 KB می شود و در نتیجه اندازه هارد ماکزیمم می تواند 2 گیگابایت باشد . در هاردهای که مدیای آن ها مگنت نوری است و می توانند سکتورهای 1KB یا 2KB داشته باشند این محدودیت بیشتر است .
بعدها در ویندوز NT اندازه کلاستور تا 64KB افزایش پیدا کرد .
هر چند فرمت حاصله با هیچ فرمت FAT سازگار نبود و بصورت وسیع در هارد ایجاد Fragment می کند . در ویندوز 98 می توان این نوع متغیر ها را خواند یا ضبط کرد ولی سیستم با این فرمت کار نمی کند
تعداد ثبت های دایرکتوری اصلی هنگام فرمت کردن تنظیم می شود و بصورت 16 بیتی ذخیره می شود . تعدادثبت ها در این حالت 32767 عدد خواهد بود .
به دلایل تاریخی FAT12 و FAT16 از 512 بایت برای دایرکتوری اصلی استفاده می کند . دیگر اندازه ها با بعضی نرم افزار ها یا Device ها ناسازگار است .
بعضی از ابزار های قسمت سوم امکان Set کردن این پارامتر ها را می دهد .
Long File Name (VFAT , LFNs)
یکی از تجربه های کاربران مورد هدف طراحان ویندوز 95 قرار گرفت و ان توانایی استفاده از نام طولانی فایل است .نام فایل های کلاسیک بصورت 8.3 هستند .
ورژن فایل سیستمی که می توان توسط آن نام فایل را بصورت طولانی وارد کرد معمولاً بصورت VFAT شناخته می شود . در اسناد قدیمی تر از آن با نام "Virtual FAT" نیز یاد می شود .
درایور VFAT قبل از ویندوز 95 در ویندوز مخصوص Workgroup 3.11 پدیدار شد ولی فقط برای دسترسی های 32 بیتی استفاده می شود . در ویندوز NT از ورژن 3.2 به بعد از طریق بکار گیری EA (Extended Attribute) امکان استفاده از نام طولانی فایل فراهم شد . هرچند نام طولانی فایل VFAT در OS/2 قابل مشاهده نیست و نیز قوانین EA در ویندوز قابل مشاهده نیست .
FAT 32 :
به منظور حل کردن مشکل محدودیت اندازه هارد در FAT16 بدون کم شدن حافظه در دسترس ، شرکت مایکروسافت تصمیم گرفت یک ورژن جدیدتری از FAT که FAT 32 نامیده می شد را طراحی کند در FAT 32 اندازه کلاستور در فیلدهای 32بیتی نگه داری می شوند که از این 32 بیت ، 28 بیت برای نگهداری عدد کلاستور استفاده می شود . ماکزیمم 250 میلیون کلاستور (228) می توان داشت .
و به این ترتیب می توان اندازه درایو تا 8 ترابایت که کلاستورهای 32 KB دارد افزایش داد . سکتور بوت از یک فیلد 32 بیتی برای شمردن سکتور استفاده می کند و به همین دلیل ظرفیت درایو به 2 ترابایت با 512 بایت سکتور محدود می شود .
در ویندوز 95 و 98 بسته به ورژن برنامه Microsoft ScanDisk با توجه به این دو نوع سیستم عامل برنامه ها بصورت 16 بیتی می باشند و ساختار FAT امکان داشتن بیش از 4 میلیون کلاستور را نمی دهد و ظرفیت پارتیشن را به 127.53 گیگبایت محدود می کند .
این محدودیت در ورژنهای اورجینال ویندوز 98 و 98SE بیش از 64 گیگابایت است .
ورژن صحیح از طریق مایکروسافت در دسترس خواهد بود . این محدودیت در مورد ویندوز 2000 و XP جز در وضعیت Set Up ، تا 32 گیگابایت محدود می شود .
ویندوز ME ، فایل سیستمی FAT32 را بدون هیچ محدودیتی ساپورت می کند .
FAT32 توسط ویندوز 95 OSR2 معرفی و به باتزار ارائه شد. با ویندوز 98 یک برنامه همراه بود که FAT16 را به FAT32 بدون از دست رفتن اطلاعات تبدیل می کرد .
درایور رایگان FAT32 که مخصوص ویندوز NT 4.0 از طریق Winternal در دسترس است .
ویندوز 2000 و ویندوز XP می توانند هر سایزی از FAT32 را Read و Write کند .
ولی فرمت برنامه در ویندوز 2000 و ورژنهای بالاتر فقط می تواند فایل سیستمی FAT32 که 32 GB یا کمتر است را ایجاد کند . این محدودیت به خاطر نوع طراحی آن بوده و فایل سیستمی FAT32 که اندازه آن بزرگتر بوده بسیار کند شده و غیر موثرند . البته این محدودیت ها بوسیله برنامه های دیگر قابل رفع خواهد بود .
ماکزیمم اندازه فایل در یک فایل سیستمی FAT32 ، 4GB – 1B است . برنامه های Video Capture و دیگر برنامه های ویرایش از این محدودیت تخطی می کنند .
فایل های بزرگتر از یک نوع فایل سیستمی دیگر مانند HFS+ یا NTFS استفاده می کنند .
تا اواسط 2006 افرادی که از دو سیستم عامل برای بوت استفاده می کنند و یا از درایوهای External در بین کامپیوتر های با سیستم عامل های مختلف با Fat32 انتخاب کمتری دارند
از آن موقع به بعد ساپورت کامل NTFS توسط لینوکس و دیگر سیستم عاملها ، از طریق نصب کردن Fuse Library در لینوکس به همراه NTFS-3G ، در دسترس خواهد بود . مبادله اطلاعات بین ویندوز و لینوکس از طریق بکارگیری Linux - Native EXT2 یا EXT3 از طریق درایو های external برای ویندوز مانند EXT2 IFS امکان پذیر است . البته ویندوز نمی تواند از پارتیشن های Ext2 یا Ext3 بوت شود .
Fragmentation (تکه تکه سازی):
فایل سیستمی FAT مکانیسمی که مانع از ذخیره فایل ها بصورت پراکنده شود ، ندارد .
دیگر فایل های سیستمی شبیه HPFS از یک سری بیت مپ هایی که امکان استفاده از کلاستور هاای که قادرند بطور خیلی سریع دنبال فضاهای آزاد را فراهم می کند ، استفاده می کنند .
روش دیگر لینک کردن همه کلاستور ها به یک یا تعداد بیشتری لیست ( مانند چیی که در فایل سیستمی یونیکس وجود دارد ) می باشد .
در عوض فایل سیستمس FAT لازم است که بصورت آرایه ای به دنبال کلاستور های ازاد که می توان از آنها به عنوان پنالتی (جبرانی ) استفاده می شود .
در حقیقت ، محاسبه فضای آزاد در FAT نیاز به خواند محتویات FAT بصورت خطی می باشد .
یک سطربندی توسط مایکروسافت برای محدود کردن ماکزیمم اندازه پارتیشن انجام می شود که به این عملیات " DIR " گفته می شود در این سطر بندی در سطر آخر فضای آزاد دیسک نمایش داده می شود .
فایل سیستمی HPFS (High Performance File System):
این فایل سیستمی ، فضای هارد را به باند هایی تقسیم بندی می کند که هر باند فضای آزاد مخصوص به خود را دارد . زمانی که چند فایل بطور همزمان باز می شوند بایستی بطور جداگانه بسط داده شوند .
مشکلات و مسائلی که در نتیجه Fragment شدن فایل پیش می آیند ، به خاطر سیستم عامل و محدودیت سخت افزاری است .
سیستم عامل DOS که در هر لحظه تنها یک برنامه را می توانست اجرا کند ( Single Tasking ) هیچ مکانیسمی مبنی بر اینکه بتواند از تکه تکه سازی فایل بکاهد ، نداشت .
به همین نحو ف امکان Write – Behind Caching در برنامه های مایکروسافت وجود نداشت و اگر وجود داشت باعث از دست رفتن اطلاعات در بعضی موارد شد . که به دلیل فقدان پشتیبانی بین برنامه های کاربردی و سیستم بوجود می آمد .
همچنین MS- dos سیستمی که بتواند اعلام کند که در دو فایل که قرار است روی هارد دیسک شما ذخیره شود فایل اولی هنوز کاملاً Write نشده است ندارد .
Cache هارددیسک در سطح بلوک های هارد دیسک عمل می کند و از ساختار سطوح بالاتر اطلاعی ندارد . در این جور موقعیت ها ، موضع گرفتن با توجه به پیشرفت واقعی عملکرد دیسک بسیار خطر ناک است .
سیستم عامل های جدید این بهبود و بهینه سازی را در پارتیشن های FAT ایجاد کرده اند اما این نوع بهبود ها هنوز هم اثر تصنعی بر روی خرابی سیستم دارند . در سیستم ویندوز NT ، از فضاهایی برای تخصیص فایل در نظر گرفته شده است . و نواحی هم جوار و پیوسته بزرگ استفاده می کنند . به همین دلیل فضای بیشتری برای ذخیره فایل نسبت به حالت ذخیره سازی تصادفی نیاز دارد .
با کلاستور های با اندازه بزرگتر 16 یا 32k ف تکه تکه سازی خارجی کمتر قابل توجه است . ولی تکه تکه سازی داخلی مانند فضایی از هارد که از بین رفته ( مگر در مواردی که اندازه فایل مضربی از اندازه کلاستور ها باشد . )باعث بروز مشکلاتی مخصوصاً زمانی که تعداد زیادی فایل با اندازه کوچک داریم ف می شود .
Third Party Setup :
دیگر سیستم عامل های IBM ، مانند لینوکس ، Free BSD ، Be OS و JNODE همگی فایل سیستمی FAT را پشتیبانی می کند . و هم چنین VFAT ، FAT32 ، JFAT را نیز ساپورت می کند . هم چنین لینوکس از فایل سیستمی که با عنوان UMSDOS شناخته شده و ترکیبی از FAT و UNIX است نیز ساپورت می کند .
UMSDOS بعد از اینکه VFAT به بازار آمد از رده خارج شد ، هم چنین توسط ورژن 2.5.7 لینوکس قابل استفاده نبود . سیستم عامل Mac OSX فایل سیستمی FAT را در پارتیشن هایی غیر از بوت ساپورت می کند .
FAT و جریانهای فرعی Data (ADS):
فایل سیستمی FAT برای ساپورت از ADS طراحی نشده است ولی بعضی از سیستم ها ی عامل از روشهای مختلفی برای handle کردن آن در FAT بکاربرده اند .
بعضی از روشها حتی اطلاعات قدیمی را در فایلها و یا دایرکتوری های جدید ، ذخیره می کند ( Mac OS)
و یا اینکه از معنای جدیدی برای فیلد های استفاده نشده در FAT استفاده می کنند ( OS/2 , Windows NT)
طراحی بعدی که احتمالاً بیشتر کارایی داشته باشد و مانع از کپی سازی یا Back up از پارتیشن ها که از ابزار های غیر هوشمند استفاده می کنند ، می شود . دستکاری این نوع هاردها با استفاده از برنامه های غیر کاربردی (مانند CHKDSK) باعث از بین رفتن اطلاعات می شود .
Mac OS از PC Exchange برای ذخیره صفات ، نام های فایل در یک فایل مخفی که FINDER.DAT نامیده می شود استفاده می کنند . شاخه اصلی آن در دایرکتوری فرعی RESOURCE.FRK نامیده می شود.
از PC Exchange 21 به بعد نام طولانی را بصورت استاندارد ذخیره می کند و نام های طولانی تر از 31 کاراکتر را به نام فایل 31 کاراکتری تبدیل می کند .
Mac OSX شاخه اصلی و متا دیتا ( شامل صفات و دیگر ADS ها) را در یک فایل مخفی به نام " DS - Store" ذخیره می شود .
OS/2 این موارد را در یک فایل که آن هم بصورت hidden بوده و " EADATA.SF" نامیده می شود در دایرکتوری اصلی FAT12 یا FAT16 ذخیره می کند .
در FAT32 16 بیت آغازین ، عدد کلاستور را نگه می دارد . به همین دلیل باعث می شود که ذخیره EA ها با سختی انجام می شود . این موارد از طریق صفحه Workplace Shell از طریق اسکریپت های REXX در دسترس اند .
به منظور اصلاح سیستم های فرعی OS/2 ، ویندوز NT ، EA را از طریق HPFS ، NTFS ، FAT ساپورت می کند .
همانطور که در OS/2 ذخیره می شوند در FAT و HPFS نیز ذخیره می شوند . ولی دیگر موارد ADS غیر از EA را از یک هارد با فرمت NTFS به هارد دیگر با فرمت FAT یا HPFS ذخیره کنید یک پیغام خطا مبنی بر اینکه آن ADS از بین خواهد رفت مواجه می شوید .
ویندوز 2000 به بعد مانند ویندوز NT عمل می کند به جز در مواردیکه صفات EA را هنگام کپی کردن در FAT32 بدون هیچ پیغام خطایی از قلم می اندازد .

