B.3. طرزکار داخلی یک رایانه: لایههای مختلفی درگیر هستند
یک رایانه بیشتر به عنوان یک شی انتزاعی در نظر گرفته میشود و رابط گرافیکی خروجی بسیار سادهتر از پیچیدگیهای درون آن دارد. این پیچیدگی از قسمتهایی میآید که با یکدیگر در ارتباط هستند. اگرچه، این قسمتها میتوانند به عنوان لایههای گوناگون دیده شوند، که هر لایه میتواند صرفاً با لایه بالا یا پایین خود ارتباط داشته باشد.
یک کاربر نهایی کاری با جزئیات این لایهها ندارد... تا زمانی که همه چیز درست کار میکند. وقتی با مشکلاتی مانند “اینترنت کار نمیکند!” روبهرو میشویم، اولین کاری که باید کرد شناسایی لایهای است که این مشکل از آن نشات گرفته است. آیا کارت شبکه (سختافزار) کار میکند؟ آیا توسط رایانه شناخته شده است؟ آیا کرنل قادر به تعامل با آن است؟ آیا پارامترهای شبکه به درستی تنظیم شدهاند؟ تمام این پرسشها مربوط به یک لایه خاص میباشند و تمرکز خاصی روی موضوع مورد سوال دارند.
B.3.1. عمیقترین لایه: سختافزار
Let us start with a basic reminder that a computer is, first and foremost, a set of hardware elements. There is generally a main board (known as the motherboard), with one (or more) processor(s), some RAM, device controllers, and extension slots for option boards (for other device controllers). Most noteworthy among these controllers are IDE (Parallel ATA), SCSI, and Serial ATA, for connecting to storage devices such as hard disks. Other controllers include USB, which is able to host a great variety of devices (ranging from webcams to thermometers, from keyboards to home automation systems) and IEEE 1394 (Firewire). These controllers often allow connecting several devices so the complete subsystem handled by a controller is therefore usually known as a “bus”. Option boards include graphics cards (into which monitor screens will be plugged), sound cards, network interface cards, and so on. Some main boards are pre-built with these features, and don't need option boards.
B.3.2. راهانداز: BIOS یا UEFI
سختافزار، به خودی خود، نمیتواند بدون ارتباط یک نرمافزار که آن را کنترل کند عملکرد مفیدی داشته باشد. کنترل و تعامل با سختافزار از جمله وظایف سیستم عامل و برنامههای کاربردی آن است. این عمکرد، نیز متعاقباُ نیاز به عملکرد صحیح سختافزار دارد.
This symbiosis between hardware and software does not happen on its own. When the computer is first powered up, some initial setup is required. This role is assumed by the BIOS or UEFI, a piece of software embedded into the main board that runs automatically upon power-up. Its primary task is searching for software it can hand over control to. Usually, as you may have learned in
قسمت 9.1, “راهاندازی سیستم”
, in the BIOS case, this involves looking for the first hard disk with a boot sector (also known as the
master boot record or
MBR), loading that boot sector, and running it. From then on, the BIOS is usually not involved (until the next boot). In the case of UEFI, the process involves scanning disks to find a dedicated EFI partition containing further EFI applications to execute.
سکتور راهانداز (یا پارتیشن EFI) در عوض، شامل نرمافزار دیگری نیز هستند که bootloader نامیده میشود که هدف اصلیاش جستجو و اجرای سیستم عامل است. از آنجایی که این bootloader داخل برد اصلی قرار ندارد و محتوایش از روی دیسک خوانده میشود، عملکرد هوشمندانهتری نسبت به BIOS دارد، که توضیح میدهد چرا BIOS نمیتواند به خودی خود سیستم عامل را راهاندازی کند. برای نمونه، bootloader (که اغلب در سیستمهای لینوکس GRUB نامیده میشود) میتواند فهرستی از سیستم عاملهای موجود روی سیستم را به کاربر نمایش داده تا وی انتخاب کند. معمولاً، زمان و گزینه پیشفرض انتخاب میشود. گاهی اوقات کاربر میتواند پارامترهای دیگری به کرنل ارائه دهد و مواردی از این دست. در نهایت، یک کرنل پیدا،در حافظه بارگذاری و اجرا میشود.
یکی دیگر از کاربردهای BIOS/UEFI شناسایی و بارگذاری اولیه برخی دستگاهها است. به طور مشخص این فرآیند شامل دستگاههای IDE/SATA (معمولاً هارددیسکها و درایوهای CD/DVD) و همچنین دستگاههای PCI میشود. دستگاههای شناسایی شده حین فرآیند راهاندازی سیستم، روی صفحه نمایش داده میشوند. اگر این فهرست به تندی از جلوی چشمتان رد میشود میتوانید با فشردن دکمه Pause صفحه را برای چند لحظه نگاه دارید و به مطالعه آن بپردازید. دستگاههای PCI که نصب شدهاند اما نمایش داده نمیشوند مانند طالعی نحس عمل میکنند! در بدترین حالت، خود سختافزار ممکن است مشکل داشته باشد. در بهترین حالت، تنها ناسازگاری آنها با نسخه BIOS یا برد اصلی است. قوانین مربوط به PCI پیشرفت زیادی داشتهاند، اما بردهای اصلی قدیمی ضمانت اجرای دستگاههای PCI جدیدتر را ندارند.
هر دو ابزار BIOS/UEFI و bootloader تنها برای چند ثانیه اجرا میشوند؛ در این مرحله به اولین نرمافزاری میرسیم که برای مدت طولانیتری اجرا میشود، کرنل (هسته) سیستم عامل. کرنل نقش یک رهبر ارکستر را بازی میکند و ارتباط صحیح بین نرمافزار و سختافزار را تضمین مینماید. این نقش مستلزم اجرای وظایف گوناگونی است از قبیل: مدیریت سختافزار، مدیریت فرآیندها، کاربران و مجوزهای مربوط به آنان، فایل سیستم و بسیاری موارد دیگر. کرنل یک پایگاه عمومی برای سایر برنامههای سیستم ایجاد میکند.
با اینکه هر آنچه خارج از محیط داخلی کرنل اتفاق میافتد با نام “فضای کاربری” شناخته میشود، میتوانیم این قسمت را به لایههای مختلف نرمافزاری تقسیم کنیم. اگرچه، تعامل بین آنها نسبت به گذشته پیچیدهتر شده است و طبقهبندی آنها کار سادهای نخواهد بود. یک برنامه کابردی به صورت عمومی از کتابخانههایی استفاده میکند که برخی عملکردهای کرنل را فراخوانی میکنند، اما ارتباط بین آنها میتواند منجز به درگیر کردن سایر برنامهها نیز بشود یا حتی کتابخانههای بیشتری در این فرآیند فراخوانی گردند.