نمایش نتایج: از شماره 1 تا 1 از مجموع 1
  1. #1
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    32
    ارسال ها
    1,307
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    Bios Prameter Block و اینکه چرا ما BPB رو ابتدای کد تعریف میکنیم نه انتهای کد ؟

    در مورد BPB یا Bios Prameter Block و اینکه چرا ما اینو اول تعریف میکنیم و آخر تعریف نمیکنیم این مطلب رو بخونید . بزارید با هم یکبار دیگه ساختار جدول فت(12) رو ببینیم :
    و حالا اطلاعات خود بوت سکتور !!! که تو فایل اولی که برای دنلود گذاشته بودم .
    توضیح :
    سه بایت اول مربوط به پرش هست (پرش ما ). هشت بایت بعدی اسم شرکت سازنده یا اصطلاحا OEM IDهست که جمعا میشه 11 بایت .(منظورش متغییری هست که زیر جامپ تعریف کردیم !) بعد از این 11 بایت ما یه چیزی داریم با نام BPB که مخفف bios parameter Block هست به معنای بلاک پارامتری بایوس(یعنی همه اون متغییر هایی که تعریف کردیم بعدش مثل تعداد سکتور در هر کلاستر و غیره اینا تشکیل BPBرو میدن) . بطور خیلی خلاصه .BPB اطلاعات لازم و مورد نیاز برای بخش اجرایی بوت سکتور(یعنی بوت لودر ما) رو فراهم میکنه تا بتونه فایل NTLDR رو پیدا کنه(فایل NTLDR هم مربوط به ویندوز هست . این فایل خودش وظیفش لود کردن بخش دوم کرنل هست . برای ما این فایل میتونه خود کرنل ما باشه . ) .بخاطر اینکه BPB همیشه از یه آفست شروع میشه(یعنی همیشه باید اون بالا تعریف بشه) پارامتر های استاندار هم همیشه تو یه مکان مشخص وجوددارن(یعنی مثلا جایی که میشه تعداد سکتور در هر کلاستر رو گرفت و فهمید قضیه دیسک چجوریه همیشه یک جاست).تمامی قابلیت های تنظیمی مرتبط با اجرای دیسک ها مختلف با اندازه ها و ساختار های مختلف در این BPB کپسوله هست.(یعنی قرار داره .باز یعنی بکمک این میشه با انواع و اقسام دیسک های مختلف کار کرد چون مشخصاتشون تو این ذخیره میشه).BPB یه فرمت خاص داره که هربخشش معرف یه سری اطلاعات خاصه . این فرمت خاص رو من تو جدول بالا پیاده کردم . پس الان متوجه شدید که چرا 11 بایت اول خالیه!(اینم یه سوال دیگه از تمرین استاد بود)(یعنی متغییری نبود که توش مقدار بدیم!! سه بایت اول جامپ بود که خودمون بالا نوشتیم ! بعدش 8 بایت میموند که بعنوان یه متغییر بعد از جامپ تعریف کردیم و بعدش هم که BPBشروع میشه یعنی همون اطلاعات اساسی برای کار با دیسک )خوب حالا همه اینا یعنی چی ؟ -------------------- یعنی چی ؟ یعنی اینکه بوت لودر ما !!! توی سکتور صفر وجود داره!!! یعنی ما داریم بوت سکتور رو میسازیم!!! برای همین هم هست که اون جدول رو اول برناممون میزاریم . چون توی بوت سکتور اینطوری باید قرار بگیره .! دستورات code segmnet ! و بعدش assume cs:code اینها همش مال موفعی هست که ما داریم برنامه رو مینویسیم ! برای این هست که کامپایلر بما گیر نده! وقتی که بوت لودر ما بخواد تو سکتور صفر قرار بگیره!!! از جامپ ما شروع میشه و میره تا آخر !!(یعنیاولین چیزی که تو بوت سکتور یا سکتور صفر پیدا میکنیم این دستور جامپ ماست ! بعدش سه بایت میرید جلو میرسید به اسم شرکت سازنده باز 8 تا دیگه میرید جلو و میرسید به اطلاعات مربوط به تعداد بایت در هر سکتور و الی اخر) این یعنی اینکه JMP ما 3 بایت اشغال میکنه ( چون far jump هست!) و بعدش دقیقا یه 8 بایت داده برای OEMname هست! و این ساختار ادامه پیدا میکنه تا آخر . !!!!این یعنی ما داریم ساختار بوت سکتور رو درست میکنیم . باز یعنی داریم تو بوت سکترو دادهای حیاتی رو قرار میدیم که هر بار که سیستم میخواد بوت بشه بایوس به این سکتور صفر مراجعه میکنه و با دیدین این ترتیب اطلاعات شروع به کار میکنه ! برای همین اگه ما این داده ها رو که بجای اینکه ابتدای سکتور صفر قرار بدیم ببریم انتهای سکتور صفر . با ارور DISK NOT FORMATTED مواجه میشم . الان تونستم برسونم که چرا ما باید اول بنویسیم اون اطلاعات رو ؟ آقا ما باید سکتور صفر و بر اساس طرح بالایی که وجودداره پیاده کنیم تا اصولی کار کرده باشیم ومشکلی پیش نیاد .وگرنه وقتی رفتیم تو سیستم عاملمون میگه دیسک فرمت شده نیست!!! چرا چون اطلاعاتی که باید تو بایتهای اول سکتور صفر پیدا کنه پیدا نمیکنه و فکر میکنه دیسک فرمت نشده که اینا این تو نیستن!!! حالا متوجه شدید ؟ برای همینه که بالا تو توضیحات کد رو قرمز کردم چون BPB همیشه باید یه جای ثابت باشه! و دسترسی به اون ها هم چون جاشون ثابته بصورت ثابت انجام میگیره. امیدوارم رسونده باشم منظورمو اگه نه فرداایشالله با هم صحبت میکنیم .
    این دیگه کامل گفته یعنی چی :
    The Reserved sectors, located at the very beginning. The first reserved sector (sector 0) is the Boot Sector (aka Partition Boot Record). It includes an area called the BIOS Parameter Block (with some basic file system information, in particular its type, and pointers to the location of the other sections) and usually contains the operating system's boot loader code. The total count of reserved sectors is indicated by a field inside the Boot Sector. Important information from the Boot Sector is accessible through an operating system structure called the Drive Parameter Block in DOS and OS/2. For FAT32 file systems, the reserved sectors include a File System Information Sector at sector 1 and a Backup Boot Sector at Sector 6


    موضوعات مشابه:
    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




 

 

کاربران برچسب خورده در این موضوع

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 10:56 AM بر حسب GMT +4.5 می باشد.