دانشگاه شهید بهشتی
ترم اول ۹۱-۹۰

زبان ماشین و اسمبلی

گروه درسی بر روی گوگل
استاد : دکتر احمد محمودی
کمک درس : عباس نادری ، علیرضا زباندان
کمک تدریس | زبان ماشین و اسمبلی - دانشگاه شهید بهشتی - ترم اول سال تحصیلی ۹۱-۹۰ | فرآیند بوت IBM-PC
آخرین به روز رسانی : 1392/2/4

پروژه پایانی - محتوای کمکی


فرآیند بوت IBM-PC

برگرفته از دستورالعمل آزمایشگاه سیستم عامل / عباس نادری

پس از مطالعه این بخش:

برنامه BIOS و تغییر پیکربندی اولیه سیستم جزء سیستم عامل نیست، ولی به دلیل تأثیر فراوانی که این برنامه بر روی کارکرد کل سیستم و بخصوص سیستم عامل نصب شده در کامپیوتر دارد، از اینرو خوب است قبل از شروع با آن سیستم آشنا شویم. اما قبل از پرداختن به بایوس سیستم و اعمال تغییرات در آن بهتر است با فرایند بوت، برنامه مدیر بوت، BIOS و CMOS آشنا شویم.

فرآیند بوت و برنامه مدیر بوت

اصطلاح فنی راه‌اندازی کامپیوتر را فرایند بوت یا Bootstrapping (کفش به پا کردن) می‌گویند و یا بطور خلاصه‌تر بوت (boot یا booting). بخش آغازین این فرایند توسط کدهای ذخیره شده در ROM کامپیوتر انجام می‌شود. این بخش در همه سیستم‌عامل‌ها یکسان می‌باشد و درواقع در مادربورد سیستم تعبیه شده است. وظیفه این کد بارگذاری مدیر بوت (Boot Loader) سیستم عامل برای ادامه فرایند راه‌اندازی سیستم است.

برنامه‌های مدیر بوت برنامه‌هایی هستند که توسط ROM کامپیوتر (یا همان BIOS) بارگذاری می‌شوند. برنامه مدیر بوت ابتدا مقداری اطلاعات پیکربندی را دریافت کرده و سپس هسته سیستم‌عامل را بارگذاری می‌کند و ادامه فرایند بوت را به آن می‌سپارد.

BIOS بایوس (Basic Input-Output System)


پردازنده مرکزی نمی تواند بطور اتوماتیک نحوه ارتباط با دستگاه های جانبی را تشخیص دهد، بلکه نیاز به نوعی برنامه‌نویسی پشتیبانی دارد که در حافظه بارگذاری میشود و اطلاعات لازم را در مورد یک وسیله به CPU منتقل می کند. این برنامه پشتیبان سرویس های ورودی/خروجی پایه (BIOS)نام دارد. برنامه هایی که وظیفه آنها اطلاع دادن نحوه ارتباط CPU با یک دستگاه جانبیست، سرویس یا راه انداز نامیده میشوند. در واقع، هر دستگاهی که روی کامپیوتر است به BIOS نیاز دارد.

یک برنامه نویس با استعداد میتواند در صورتی که کتاب کد ها و سیگنال‌های صفحه کلید را داشته باشد، برای آن یک سرویس راه‌انداز بنویسد. سوالی که پیش می آید آنست که این برنامه پشتیبان در کجا ذخیره شود؟ این برنامه باید با سیستم عامل تعامل داشته باشد، پس ذخیره سازی کد این برنامه درون سیستم عامل بسیار عالی خواهد بود. البته بسیاری از سیستم عامل ها از قبل دارای کد هایی هستند که نحوه ارتباط به صفحه کلید و ماوس و سایر دستگاه های جانبی را در بر دارند.

پس این حالت روی سیستم عامل در حال کار بسیار خوب جواب خواهد داد. ولی آیا به این موضوع اندیشیده اید که هنگام جمع کردن یک سیستم نو و وقتی هنوز سیستم عاملی وجود ندارد چه باید کرد؟

CPU باید برای راه اندازی سخت افزارهای مهم به BIOS سیستم دسترسی داشته باشد. نه تنها صفحه کلید، بلکه مانیتور، هارد درایو، درایوهای نوری، پورت های USB، حافظه و حتی شبکه (در صورتی که بوت از روی شبکه باشد) پس این کد نمیتواند درون هارد درایو یا دیسک های سی دی ذخیره شود. بسیاری از دستگاه ها را باید قبل از اینکه حتی هارد شناخته شده باشد راه اندازی کرد.

بهترین وسیله برای ذخیره برنامه‌های پشتیبانی روی مادربرد است. بدین ترتیب یک مشکل حل میشود، ولی مشکل دیگری بوجود می آید : مادربرد از چه دستگاه ذخیره سازی استفاده میکند؟

DRAM که قابل استفاده نیست چون با قطع برق تمام داده ها پاک میشوند. باید نوعی محل ذخیره دائمی برای برنامه خود داشته باشید که نیازی به دیگر دستگاه های جانبی برای شروع کارش نداشته باشد. و این محل ذخیره سازی باید روی مادربرد سوار شود.

ROM: مادربردها برنامه پشتیبانی کنترلگر صفحه کلید را به همراه سایر برنامه ها روی دستگاه خاصی بنام چیپ حافظه فقط خواندنی (ROM) ذخیره میکنند. یک چیپ ROM برنامه ها را دقیقاً مانند RAM ذخیره میکند که مانند یک صفحه گسترده ٨ بیتی است. ولی ROM دو تفاوت عمده با RAMدارد.

اولاً، چیپ های ROM غیر قابل تغییر هستند (در حالت عادی)، یعنی اطلاعات روی آنها با خاموش شدن کامپیوتر و قطع برق از بین نمیرود. دوماً، چیپ های ROM قدیمی فقط خواندنی هستند، یعنی اینکه وقتی برنامه یک بار روی آنها ذخیره شد، دیگر قابل تعویض نیست. مادبردهای امروزی از نوع پیشرفته تری از ROM بنام Flash ROM استفاده میکنند که با ROM معمولی متفاوت است و میتوان محتویات آنرا توسط فرآیند بسیار خاصی بنام تخلیه بروز یا عوض کرد. وقتی CPU میخواهد با کنترلگر صفحه کلید ارتباط برقرار کند، به چیپ ROM مراجعه میکند تا به برنامه پشتیبان مناسب دسترسی پیدا کند.

همانطور که گفته شد برنامه بایوس بروی یک حافظه از نوع ROM قرار می‌گیرد (BIOS ROM) که به راحتی می توانید این حافظه را که ممکن است عبارت BIOS نیز بروی آن درج شده باشد، روی مادربرد کامپیوترتان پیدا کنید. معمولا در کنار آن یک باتری ساعت بزرگ نیز وجود دارد که به هنگام خاموشی سیستم، ساعت آن و برخی اطلاعات پویا (مثل رمز عبور) از بین نروند.

با توجه به اینکه نرم افزار بایوس بر روی حافظه ROM قرار می گیرد امکان تغییر در این برنامه به وسیله کاربر وجود ندارد و کاربران کامپیوتر فقط قادر هستند برخی ازتنظیمات قسمت های خاص این نرم افزار را که توسط شرکت سازنده از قبل پیش بینی شده ، توسط منوی setup تغییر دهند. این تغییراتی که ما در منوی Setup ایجاد می کنیم در کجا ثبت می شود با توجه به اینکه می دانیم نرم افزار BIOS بروی حافظه ROM قرار دارد و امکان تغییر آن وجود ندارد؟

CMOS سیموس (Complementray metal-Oxide Semiconductor)

در کامپیوترهای قدیمی XT، برای تعیین پیکربندی سیستم (نوع گردونه‌های دیسک نرم، دیسک سخت و کارت گرافیکی و ...) از یکسری اتصال دهنده (Jumper) استفاده میشد، ولی به دلیل مشکلات کار، در کامپیوترهای جدیدتر AT این تغییرات بروی یک حافظه مجزای دیگر که از نوع RAM است و به نام CMOS نامیده می شود، قرار می گیرد. یک چیپ حافظه جداگانه به نام نیمه رسانای اکسید فلزی مکمل (CMOS) اطلاعات پارامترهای خاص دستگاه های مختلف را نگهداری میکند که با قطع جریان برق ، اطلاعات آن پاک می شود. CMOS برنامه ها را ذخیره نمیکند. فقط داده هایی را که توسط BIOS خوانده میشود برای تکمیل برنامه ارتباط با سخت افزار قابل تعویض نگهداری میکند. CMOS بعنوان ساعت نیز کار میکند و تاریخ و زمان را نگه داری میکند.


بسیاری از چیپ های CMOS حدود 64 مگابایت داده را ذخیره سازی میکنند، ولی کامپیوتر فقط مقدار بسیار کمی از آن را نیاز دارد (حدود ١٢٨ بایت) تا اطلاعات لازم را در مورد سخت افزار قابل تعویض نگهداری کند. گول اندازه کوچک داده ها را نخورید. اطلاعات درون CMOS برای کارکرد کامپیوتر حیاتی هستند.

اگر داده های ذخیره شده روی CMOS در مورد قطعه خاصی از سخت افزار با مشخصات واقعی سخت افزار مطابقت نداشته باشد، کامپیوتر قادر به دسترسی به سخت افزار مورد نظر نخواهد بود، پس صحت این اطلاعات بسیار مهم است.

حال فرض کنید به اشتباه تغییرات نادرستی را در بایوس ایجاد کردیم مثل تغییر در کلاک (CLOCK) و یا فرکانس عملکرد پردازنده (CPU) و RAM که باعث شد کامپیوتر در هنگام بوت شدن هنگ کند و به هیچ عنوان سیستم بالا نیاید یا پسوردی بر روی کامپیوتر گذاشته ایم که آن را فراموش کرده‌ایم...

چون می دانیم همه این اطلاعات بروی حافظه CMOS قرار می گیرد برای پاک کردن این اطلاعات و بازگشت به تنظیمات اولیه بایوس ، باید CMOS را ریست کرد که برای این کار سه راه وجود دارد :

  1. در آوردن باطریCMOS و صبر به مدت حدود نیم ساعت (تخلیه خازن‌ها)
  2. تغییر جامپر CMOS که عموما این جامپر در نزدیکی باطری CMOS قرار دارد و با نام CLRCMOS می باشد (در شکل با دایره مشخص شده)
  3. فشار دادن دکمه ریست CMOS که این دکمه بروی برخی از مادربورد ها وجود دارد
در تصاویر زیر باطری و جامپر CMOS را مشاهده کنید:


شکل 1-3: دو نمونه Motherboard و جامپر CMOS

اگر هر یک از سخت افزار های گفته شده را تعویض کنید، رمز CMOS چگونه باید عوض شود؟

بروز آوری CMOS (برنامه نصب)

هر کامپیوتر دارای برنامه ای درون رام سیستم، بنام برنامه نصب یا ابزار نصب سیستم است که به شما این امکان را میدهد تا به CMOS دسترسی پیدا کرده و آنرا بروز کنید. وقتی کامپیوتر خود را روشن میکنید، اولین چیزی که خواهید دید اطلاعات BIOS است.( پس از اینكه برنامه موجود در بایوس اجرا شد نخستین صفحه حاوی متنی ساده برروی مانیتور شما به نمایش در آمده و اطلاعات كمی در مورد نوع پردازنده و كارت گرافیك یا نوع هارد دیسك و سی دی رام متصل شده به سیستم به نمایش در می آید)

این اطلاعات ممکن است به یکی از شکل های زیر باشند:


و یا

در این هنگام برنامه بایوس در آخرین خط اجرای فرامین خود كنترل عملكرد را برای اجرای دستورات بعدی به نخستین رسانه دارای اطلاعات سیستمی ( First Boot) مثلا فلاپی دیسك میدهد . حتما شما هم تاكنون به پیغام زیر هنگامی كه یك فلاپی غیر سیستمی در فلاپی درایو قرار داده و كامپیوتر را بوت نموده اید برخورد كرده اید .

Non-system disk or disk error
Remove the disk and press any key to continue

معنی این پیغام این است كه دیسكت شما فاقد اطلاعات لازم برای بوت كردن سیستم است . اگر شما این دیسكت را از دستگاه خارج كرده و یك كلید را بدلخواه فشار دهید بایوس سیستم به دومین رسانه دارای فایلهای سیستمی و بصورت پیش فرض به قسمت master boot record – MBR  هارد دیسك مراجعه خواهد كرد .

در این مرحله كدهای اجرائی و سیستمی موجود یكی پس از دیگری اجرا میگردند و مثلا در مورد سیستم عامل داس در نهایت به خط فرمان خواهیم رسید .

اما قبل از اجرای آخرین خط فرمان برنامه بایوس(Setup) یعنی هنگام بوت سیستم(راه اندازی) همیشه میتوان به برنامه نصب سیستم دسترسی داشت. سوال اساسی این است که چگونه میتوان هنگام بوت به برنامه نصب دسترسی پیدا کرد؟

Phoenix و Award ، AMI از کلید های مختلفی برای ورود به برنامه نصب سیستم استفاده میکنند. برای مثال، در پایین صفحه شکل قبل به شما گفته شده بود که Press DEL to Enter Setup. یعنی برای ورود به برنامه نصب سیستم باید کلید DEL را فشار دهید. بیاد داشته باشید که این فقط یکی از روشهای ممکن است. سازندگان مادربرد میتوانند از هر ترکیب کلیدی برای ورود به برنامه نصب استفاده کنند. میتوان کامپیوتر را طوری تنظیم کرد که پیغام نحوه ورود به برنامه نصب را نیز نمایش ندهد.

. این پیغام و همچنین نحوه مشاهده و تغییر اطلاعات Setup و امکاناتی که Setup در اختیار کاربر میگذارد، به نوع BIOS بستگی دارد. اکثراً یکی از ترکیب کلید های زیر برنامه نصب سیستم را باز خواهد کرد.

Del, F2, Shift+F2, Shift+Del

فرآیند بوت سیستم عامل

حتما تا به حال برای شما نیز سوال پیش آمده است که پس از اینکه بایوس، بوت را به رسانه حاوی سیستم عامل (یا کد قابل اجرای دیگر) منتقل کرد، سیستم عامل چگونه بوت خواهد شد؟

در هر سیستمی، فرآیند بوت تا حدودی متفاوت است، ولی کلیات آن یکسان است. در ادامه فرآیند بوت سیستم عامل در IBM PC‌ را بررسی خواهیم کرد :

در ابتدا پس از تشخیص حافظه، کل اطلاعات بایوس به حافظه (RAM) منتقل می‌گردد. سپس پردازنده شروع به اجرای دستورات از آدرس 0xFFFF می‌نماید (که در واقع آدرس F000:FFF0 بایوس است). از آنجایی که این آدرس در انتهای بازه ۱ مگابایت حافظه واقعی سیستم است (که بدون پیش نیاز قابل دسترسیست)، تنها یک دستور پرش به ابتدای فرآیند بایوس در آن قرار دارد.

بایوس در ابتدای شروع فرآیند پست (Power On Self Test) را انجام داده، شروع به پردازش لیست اولویت دار بوت (که از Setup قابل تنظیم است) می‌کند. در این لیست هرکدام از رسانه‌ها که قابل بوت (Bootable)‌ باشد، فرآیند بوت به آن منتقل خواهد شد.

استاندارد خاصی برای قابل بوت بودن یک رسانه وجود دارد، که هنگام فرمت رسانه در درون سیستم عامل نیز قابل اعمال بر روی آن است. این استاندارد ساده بیان می‌دارد که دو بایت آخر از اولین سکتور رسانه حاوی مقدار داده‌ای 0xAA55 باشد (امضای بوت).

پس از آنکه بایوس یک رسانه قابل بوت پیدا کرد، سکتور بوت (سکتور اول)‌ آنرا در حافظه در آدرس 0000:7C00 کپی می‌کند و پردازنده را به اولین بایت این آدرس برای ادامه فرآیند بوت هدایت می‌کند تا بوت ثانویه شروع گردد.

در صورتی که رسانه قابل بوت، یک دیسک سخت باشد، یک قدم دیگر تا شروع بوت ثانویه لازم است، چون سیستم عامل قابل بوت ممکن است بر روی هرکدام از پارتیشن‌های آن قرار داشته باشد (و لزوما نه بر روی پارتیشن اول). در این حالت، به سکتور بارگذاری شده رکورد بوت اصلی (Master Boot Record) می‌گویند. کد موجود در رکورد بوت اصلی، خود جدول پارتیشن‌های دیسک را بررسی می‌کند و در صورتی که پارتیشن قابل بوتی یافت، بوت را به آن واگذار می‌نماید و در این لحظه بوت ثانویه از دیسک سخت شروع می‌شود.

بوت ثانویه، بر اساس هر سیستم عاملی متفاوت است و دیگر استاندارد سخت افزاری ندارد. در این مرحله از بوت، سیستم عامل باید ابتدا کدهای مربوط به شناسایی فایل سیستم خود را بارگذاری کند (هنوز سیستم عامل بار نشده ولی باید فایل سیستم برای بارکردن آن شناس باشد) سپس از روی فایل سیستم خود، فایلهای هسته و اجرایی شروع را بر روی حافظه اصلی قرار داده سیستم را لود نماید. قسمت عمده زمانی که فرآیند بوت لازم دارد در این مرحله است، چون معمولا حجم قابل توجهی از داده (چند ده مگابایت) باید از دیسک خوانده شده و بر روی حافظه اصلی قرار گیرد تا سیستم عامل بتواند کار خود را شروع نماید.

دقت داشته باشید که سکتور بوت، تنها یک سکتور (۵۱۲ بایت)‌ است و اندازه آن برای کد بوت کافی نیست، لذا معمولا پس از کمی بررسی و بار کردن داده از دیسک، یک دستور پرش به ناحیه مشخصی از حافظه می‌رود تا فرآیند را ادامه دهد.

جزئیات بیشتر بوت یک سیستم عامل در بخش‌های بعدی بررسی خواهد شد.

EFI

استاندارد Extensible Firmware Interface توسط شرکت Intel برای جایگزینی بایوس در سیستم‌های جدید طرح شده است. این استاندارد امکانات بیشتری دارد و واسط ارتباط سیستم عامل با شل افزار است (به جای بایوس). سیستم‌عامل‌های خاصی مانند ویندوز امکان کار کردن بر روی EFI‌ را ندارند ولی سیستم‌هایی مانند Mac OS X و کامپیوترهای Apple‌توسط این تکنولوژی کار می‌کنند که بسیار قدرتمند‌تر و سریعتر است (دقت داشته باشید که قسمتی از کارکرد سیستم عامل با سخت‌افزار از طریق بایوس انجام می‌شود که بسیار کند و ضعیف است).

روش کار EFI تا حدودی پیچیده است و در این مستند نمی‌گنجد.

سوالات

  1. تفاوت CMOS و BIOS را بیان کنید.
  2. Setup سیستم چیست؟
  3. چگونه می توان پسورد BIOS را حذف کرد؟ (3 روش سخت افزاری و 2 روش نرم افزاری)
  4. آیا بدون استفاده از برنامه Setup، امکان تغییر محتوای حافظه CMOS وجود دارد؟
  5. به چه روشی میتوان دیسک سخت را به سیستم معرفی کرد؟
  6. برنامه زیر را در نظر بگیرید:
    MOV AL,10H
    OUT 70H,AL
    IN AL,71H
    INT 20H
    
    عملکرد هر سطر را بیان کنید.
  7. برنامه ای بنویسید که پسورد Setup را حذف کند.
بازگشت