آشنایی با سیستم عامل
اگر حتی یک بار هم با کامپیوتر کار کرده باشید، یا اسم «ویندوز» را شنیدهاید یا نام «سیستم عامل». کامپیوتر شما یا دارای ویندوز است و یا اگر ساخت شرکت مکینتاش است با سیستم OS X کار میکند.
بعضی از کامپیوترهای سرور نیز از سیستم «لینوکس» و یا «یونیکس» استفاده میکنند.
در حقیقت سیستم عامل اولین نرم افزار کاربردی نصب شده روی کامپیوتر شماست. شاید برایتان جالب باشد که بدانید بسیاری از دستگاههای دیجیتالی اطرافتان دارای سیستم عامل هستند.
از گوشی تلفن همراه گرفته تا «آیپاد» و نقطه دسترسی بیسیم (Wireless Access Point) منزل یا محل کارتان. ولی فر مایکروویو منزلتان دارای سیستم عامل نیست.
در حقیقت نیازی به سیستم عامل ندارد چون تمامی تنظیمات و کارکرد آن در چند خط برنامه خلاصه شده است و در یک حافظه کوچک ذخیره شده. گوشیهای تلفن همراه آنقدر پیشرفته شدهاند که اینروزها سیستم عامل اکثر تلفنهای همراه پیشرفته تر و پیچیده تر از سیستم عاملهای کامپیوترهای ۲۰سال گذشته است.
نیاز دستگاههای دیجیتالی و مخصوصاً کامپیوتر به سیستم عامل از آنجا شروع میشود که با استفاده از سیستم عامل میتوان کار اجزای سخت افزاری آنها را مدیریت کرد. و یا حتی اجزای سخت افزاری آنها را تحت سیستم عامل کنترل کرد. این امر برای یک کامپیوتر شامل اضافه کردن برنامهها و تغییر در ساختار خود سیستم عامل است.
وقتی برنامهای را روی کامپیوتر خود نصب میکنید، قطعات کامپیوترتان تحت فرمان آن برنامه در میآیند. برای مثال وقتی با یک برنامه اجرای موسیقی کار میکنید، کارت صدای کامپیوترتان با برنامه پخش موسیقی همکاری میکند و یک آهنگ یا فایل صوتی را از طریق بلندگوی کامپیوترتان پخش میکند.
این ارتباط بین نرم افزار و سخت افزار توسط سیستم عامل انجام میشود. این تنها قسمتی از کار سیستم عامل است. تا اینجا با اهمیت کار سیستم عامل پی بردید. بیایید به درون سیستم عامل نگاهی بیندازیم تا کارکرد آن را بهتر درک کنیم.
در ابتدایی ترین نگاه اساس و بنیان کار سیستم عامل مدیریت سخت افزار است. از مدیریت سخت افزارهایی مثل کارت گرافیک و کارت صدا گرفته تا مدیریت ذخیره اطلاعات روی حافظهها و هارد دیسک. همچنین سیستم عامل اطلاعات را برای پردازش به سمت پردازشگر هدایت میکند. این امر شامل قسمتی دیگر نیز هست.
اگر هزاران برنامه مختلف روی کامپیوترتان نصب کنید و یا اگر چندین سخت افزار جدید به کامپیوترتان اضافه کنید، سیستم عامل بدون تغییر ظاهری باقی میماند. یکی از هدفهای سازندگان سیستمهای عامل همین است. اینکه سیستم عامل خود را انعطاف پذیر و سازگار با سیستمهای دیگر بسازند.
از انواع مختلف سیستم عامل میتوان به چند سیستم زیر اشاره کرد:
Real-Time Operating System
در دستگاههای صنعتی کاربرد دارد. دستگاههایی مثل CNC که برای انجام تراش قطعات صنعتی به نوعی برنامه نویسی نیاز دارد. این نوع سیستمها توانایی تغییر بسیار کمی دارند و هر بار که کاری توسط دستگاه انجام میشود آن را در زمان معین و ثابتی انجام میدهد.
Single-User ,Single-Task
همان طور که از نام آن پیداست فقط برای کار توسط یک کاربر در یک زمان است. سیستم عامل Palm نمونه مناسبی برای این سیستم است.
Single-User ,MultiTasking
این همان سیستم عاملی است که در کامپیوتر از آن استفاده میشود و به یک کاربر اجازه اجرای چندین برنامه را میدهد. سیستم عاملهای ویندوز و مکینتاش از این نوع هستند.
Multi User
این نوع سیستم به چندین کاربر توانایی استفاده همزمان و دسترسی به برنامههای مختلف را در یک زمان ثابت میدهد. سیستم عامل «یونیکس» و سیستم عاملهای ابرکامپیوترها مانند MVS از این قبیل هستند.
در اینجا کمی سخت است که بین سیستم عاملهای شبکه و سیستم عاملهای MultiUser تفاوت قایل شد. سیستم عاملی مثل ویندوز ۲۰۰۰ در حقیقت مانند باقی ویندوزها یک سیستم عامل SingleUser است و تفاوت آن با سیستم عاملهای MultiUser این است که تنظیمات شبکه و اطلاعات کاربران شبکه فقط به صورت یک برنامه روی آن اجرا میشود و کاربران دیگر شبکه توسط سیستم عامل ویندوز ۲۰۰۰روی شبکه قرار میگیرند و باقی کارکرد آنها توسط سیستم عامل کامپیوتر خودشان انجام میگیرد.
وقتی کامپیوترتان را روشن میکنید، برنامهای به نام ( ( POST Power-On Self Test از روی ROM اجرا میشود. این برنامه کوچک، تمام قطعات کامپیوتر را چک میکند. ابتدا پردازشگر و بعد RAM و BIOS سپس برنامه دیگری از ROM اجرا میشود که هارد دیسک شما را فعال میسازد و به دنبال اولین قسمت سیستم عامل یعنی BootstrapLoader میگردد. Bootstrap سیستم عامل را به ترتیب اجرا میکند تا جایی که کنترل کامپیوتر را به آن میسپارد.
مدیریت و هدایت پردازشهای کامپیوتر توسط سیستم عامل انجام میشود. مدیریت پردازش شامل تقسیم بندی و اولویت دهی به پردازشها است. نرم افزاری که سیستم عامل برای اینکار از آن استفاده میکند به نام Process یا Thread معروف است.
در حقیقت سیستم عامل کار برنامهها را به صورت پردازش در میآورد و آنها را به پردازشگر میفرستد. مشکلی که در اینجا با آن روبرو میشویم این است که پردازشگر فقط توانایی انجام یک پردازش در یک لحظه را دارد. برای اینکه کار سیستم MultiTask یا چند کاره به نظر برسد، پردازشگر باید چندین بار در هر لحظه به چندین پردازش مخ تلف بپردازد. بیایید به این عملیات به صورت نزدیکتری نگاه کنیم.
فرض کنید دو برنامه داریم که هر کدام پردازشهای خود را به پردازشگر میفرستد. ابتدا برنامهای که اولویت بیشتری دارد پردازش میشود. پردازش اول کامل نمیشود و پردازشگر اطلاعات برنامه اول را تا جایی که پردازش شده، ضبط میکند. سپس نوبت به برنامه دوم میرسد. همین اتفاق برای برنامه دوم میافتد. سپس پردازشگر از همانجایی که برنامه اول متوقف شده شروع به پردازش میکند. و بعد نوبت به تمام کردن پردازش دوم میرسد. این اطلاعات پردازشها در قسمتی از RAM به نام Process Control Block ذخیره میشود. این اطلاعات شامل شماره مخصوصی است که به هر پردازش داده میشود. اولویت پردازش، محلی که پردازش درآنجا متوقف شده، تعداد فایلهایی که توسط پردازشها باز شده و اطلاعات سخت افزارهای خروجی/ ورودی که توسط پردازش مورد استفاده قرار گرفتهاند، نیز در این اطلاعات وجود دارد.
هر پردازشی با توجه به اولویت و مرحلهای که در آن قرار دارد یک وضعیت (Status) دریافت میکند. برای مثال پردازشی که برای اجرا شدن نیاز به دستور کاربر دارد، تا زمانی که این دستور برای مثال توسط فشاردادن دکمه صفحه کلید وارد نشود، این پردازش به صورت غیر فعال و در حالت انتظار (Pending) قرار میگیرد و در این حالت پردازشگر را مشغول نمیسازد.
عملیات تغییر وضعیت پردازشها و جابجایی بین آنها نیز بخشی از ظرفیت پردازشگر را اشغال میکند. اگر سیستم عامل در انجام این عملیات دارای خطا باشد، بجای کنترل کردن درست پردازشها و هدایت آنها به سمت پردازشگر تمام ظرفیت پردازشگر را برای جابجا کردن پردازشها صرف میکند. این کار سرعت کامپیوتر را به شدت کاهش میدهد. این مشکل به Thrashing معروف است.
توضیحاتی که تا اینجا داده شد برای سیستم هایی است که با یک پردازشگر کار میکند. سیستم عاملهای Asymmetric(نا متقارن) کارهای مخصوص به خود را توسط یک پردازشگر انجام میدهند و پردازشهای دیگر را با پردازشگرهای دیگر تقسیم میکنند. پردازشگرهای Symmetric(متقارن) تمام پردازشها و حتی پردازشهای داخلی خود را با تمام پردازشگرها تقسیم میکنند.
وظیفه بعدی سیستم عامل مدیریت حافظه کامپیوتر است. برای توضیح این کار بیایید به یک مثال توجه کنیم.
کامپیوتری را فرض کنید که دارای یک گیگابایت (۱۰۰۰مگابایت) RAM است و سیستم عامل برای شروع نیاز به ۳۰۰مگابایت RAM و سخت افزارها و گرداننده های آنها(Driver) نیز نیاز به ۲۰۰مگابایت از RAM دارند. در اینجا سیستم ۵۰۰مگابایت RAM برای اجرای برنامهها و انجام پردازشها دارد. اطلاعات در RAM در حجمهای مختلف بستهبندی میشوند. این حجم بستگی به تنظیمات سیستم دارد. اگر این مقدار ۲کیلوبایت باشد تمام بستههایی که به RAM منتقل میشوند ۲کیلوبایت خواهند بود. هر کدام از بستهها نیز با ۴ یا ۸ بایت در ابتدا و انتهای آنها بسته میشود. این ابتدا و انتها به شناسایی بستهها کمک میکند. با اطمینان حاصل کردن از این امر، سوال بعدی این است که وقتی که این ۱گیگابایت RAM تمام شد، سیستم چگونه کار خواهد کرد؟
ارتقاء RAM اکثر کامپیوترها امکان پذیر است ولی اگر به مثال بالا که تقریباً واقعی و کاربردی است توجه کنید، متوجه میشوید که اگر کامپیوتر شما فقط به این ترتیب کار کند، برای اجرا هر برنامه نیاز به یک RAM اضافی دارید. ولی در حقیقت کامپیوتر به نحوی دیگر کار میکند. در هر لحظه پردازشگر تنها به یک نقطه از RAM دسترسی پیدا میکند و بعضی از اطلاعات وقتی که برای یک بار مورد استفاده قرار میگیرند، برای مدت زیادی بدون استفاده باقی میمانند. با انتقال این اطلاعات به هارد دیسک، میتوان فضای RAM را برای فعالیتهای مهم تر خالی کرد. این تکنیک جابجا کردن اطلاعات از RAM به هارد دیسک Virtual Memory Management نامیده میشود.
هارد دیسک تنها یکی از انواع حافظههاست که توسط سیستم عامل مدیریت میشود. دسته بندی این حافظهها به ترتیب سرعت به صورت زیر است:
High-Speed Cache
این نوع حافظه دارای ارتباط مستقیم با پردازشگر است و به پردازشگر در دسترسی به اطلاعات کمک میکند
Main Memory
که همان RAM است.
•چطور RAM کار میکند؟
Secondary Memory
این نوع حافظه که معمولترین نوع آن حافظه دائمی یا همان هارد دیسک است، تحت مدیریت حافظه سیستم عامل به صورت Virtual RAM در میآید.
سیستم عامل مسئولیت ایجاد توازن بین این حافظهها که همان منابع کامپیوتر هستند را دارد.
ارتباط بین سخت افزار کامپیوتر و سیستم عامل توسط برنامهای به نام گرداننده (Driver) کنترل میشود. وظیفه این برنامه ترجمه سیگنالهای الکتریکی به برنامههای نرم افزاری و برعکس است. این برنامه نیز مانند سایر برنامهها کار میکند ولی تنها وقتی فعال میشود که سخت افزار مربوط مورد استفاده قرار گیرد و در غیر این صورت در حالت انتظار(Pending) میماند.
گرداننده معمولاً جدا از سیستم عامل کار میکنند. به این دلیل که با تغییر در ساختار سخت افزار، نیازی به تغییر سیستم عامل نباشد.
مدیریت سخت افزار ورودی و خروجی به معنی مدیریت کردن سرعت بارگذاری اطلاعات از سخت افزار بر روی پردازشگر است. این امر شامل مدیریت این بارگذاری به ترتیبی است که پردازشگر توانایی پردازش اطلاعات این سخت افزار به طور منظمی را داشته باشد.
تا اینجا متوجه شدید که کار سیستم عامل مدیریت تمامی منابع کامپیوتر است. منابع کامپیوتر شامل چرخههای پردازش (Cycle) و حافظهها و تمامی سخت افزار است. هر قدر هم که منابع کامپیوترتان پیشرفته و گسترده باشد، بدون داشتن سیستم عامل مناسب نمیتوانید از هیچ کدام آنها بهرهمند شوید.