پاسخ : برسی یک سیستم 386
بلاک oem و سیستم فایل fat12
[hr]
حالا یه بار دیگه نگاهی به بلاک پارامترهای OEM که تو پست قبلی بهش اشاره کرده بودیم میندازیم. حالا به اندازه کافی پیش زمینه برای درک این کدهای به ظاهر خیلی زشت رو داریم. پس کمی بیشتر واردشون میشم.
بلاک oem و سیستم فایل fat12
[hr]
حالا یه بار دیگه نگاهی به بلاک پارامترهای OEM که تو پست قبلی بهش اشاره کرده بودیم میندازیم. حالا به اندازه کافی پیش زمینه برای درک این کدهای به ظاهر خیلی زشت رو داریم. پس کمی بیشتر واردشون میشم.
کد:
bpbBytesPerSector: DW 512 bpbSectorsPerCluster: DB 1 bpbReservedSectors: DW 1 bpbNumberOfFATs: DB 2 bpbRootEntries: DW 224 bpbTotalSectors: DW 2880 bpbMedia: DB 0xF0 bpbSectorsPerFAT: DW 9 bpbSectorsPerTrack: DW 18 bpbHeadsPerCylinder: DW 2 bpbHiddenSectors: DD 0 bpbTotalSectorsBig: DD 0 bsDriveNumber: DB 0 bsUnused: DB 0 bsExtBootSignature: DB 0x29 bsSerialNumber: DD 0xa0a1a2a3 bsVolumeLabel: DB "MOS FLOPPY " bsFileSystem: DB "FAT12 "
دو خط اول همونطور که از اسمشون پیداست به ترتیب تعداد بایت ها در هر سکتور و تعداد سکتورها در هر کلاستر رو مشخص میکنند که نشون میده تعداد سکتورها در فلاپی ما 1 هستش که البته میشه تغییرش داد ولی توصیه میکنم این کار رو نکنید. خط سوم هم تعداد سکتورهای رزرو شده رو مشخص میکنه. منظور از سکتور رزرو شده، سکتوری هست که توی جدول FAT استفاده نمیشه و نمیشه در حالت عادی اطلاعاتش رو تغییر داد. مثلاً تو حالت عادی شما اگه وارد یک CD ویندوز که قابلیت Bootable داره بشید. تو محیط ویندوز نمی تونید فایلهای مربوط به سکتور بوت اون دیسک رو ببینید ، در مورد درایو C یا فلاپی هم که سکتور راه انداز دارند وضع به همین ترتیب هستش. در حالت عادی ویندوز یا بقیه سیستم عاملها این اجازه رو به کابر نمیدن که اطلاعات این سکتور رو تغییر بدن، ولی با برنامه های خاصی مثل partcopy میشه این کار رو انجام داد. به همین دلیله که وقتی شما تو پست قبلی بوت لودرتون رو به فلاپی منتقل کردید بعد از وارد شدن به فلاپی چیزی نمیدید. از اونجایی که ما فقط به یک سکتور برای راه اندازی احتیاج داشتیم مقدار این پارامتر رو برابر 1 قرار دادیم.
پارامتر بعدی تعداد جدول های FAT رو مشخص میکنه که برای فلاپی همیشه برابر 2 هست. دو پارامتر بعدی به ترتیب حداکثر دایرکتوری های موجود در ریشه درایو و تعداد کل سکتورهای درایو رو نشون میدن که برای فلاپی به ترتیب 224 و 2880 باید باشه. پارامتر بعدی، یعنی bpbMedia یک عدد هشت بیتیه که هر بیت معنی خاصی داره که توضیح میدم.
بیت 0 : اگه 0 باشه یعنی فلاپی یک وجهی و اگه 1 باشه یعنی دو وجهیه
بیت 1 : اگه 0 باشه یعنی هر جدول FAT توی 9 سکتور جا میگیره و اگه 1 باشه توی 8 سکتور
بیت 2 : تعداد شیارها رو نشون میده که اگه 0 باشه یعنی 80 شیار و اگه 1 باشه یعنی 40 شیار
بیت 3 : نشون دهنده نوع دیسک هست که اگه 0 باشه یعنی ثابته ( مثل هارد ) و اگه 1 باشه یعنی قابل جابه جاییه ( مثل فلاپی و CD )
بیت های 4 تا 7 : بلا استفاده هستند.
در اینجا ما از عدد 0xF0 = 11110000 استفاده کردیم که نشون دهنده یک دیسک جابحا شونده و تک وجهی با 80 شیار و 9 سکتور در هر FAT هست.
پارامتر بعدی هم همون 9 سکتور در هر FAT رو مشخص میکنه. دو پارامتر بعدی هم به ترتیب تعداد سکتورها در هر شیار و تعداد هدها در هر سیلندر رو مشخص میکنند که برابر با 18 و 2 هستند.
چهار پارامتر بعدی مهم نیستند و همین مقادیر رو که میبینید همیشه براشون استفاده کنید.
سه پارامتر بعدی هم به ترتیب شماره سریال دیسک، برچسپ یا Label دسیک و نوع سیستم فایل دیسک رو مشخص میکنند. توجه کنید که برچسب دیسک حتماً باید 11 کاراکتر و نوع سیستم فایل 8 کاراکتر باشند. به همین دلیل از جای خالی استفاده شده. خب حتمآ میپرسید حالا این چیزهایی که گفتیم چه ربطی به ماجرا داره.
در واقع ما برای دستیابی به فایل ها روی هر دیسکی به این پارامترها احتیاج داریم. به طور ذاتی یک درایور دیسک چه از نوع سخت، چه از نوع نرم هیچ اطلاعی از نوع فایل سیستم، سکتور راه انداز، نحوه راه اندازی سیستم ، چگونگی تشکیل فایل و... نداره. حتی یک درایور هیچ تعریفی از فایل براش نشده. درایور دیسک فقط میتونه یک سری اطلاعات رو به صورت دسته ای از بیت ها در محل های مشخصی از دیسک ذخیره کنه یا اونها رو بخونه. در واقع این برنامه نویس هست که به CPU میفهمونه منظورش از یک فایل یا دایرکتوری چیه و تمام این مفاهیم قبل از استفاده به اون شکلی که مثلاً توی ویندوز دیدید باید توسط سیستم عامل تعریف بشه. مهمترین چیزی که برای تعریف مفهوم فایل به درد ما میخوره همین پارامترهای بلاک OEM هستش.
دیدگاه