از روزگار باستان، رقابتهای حماسی جزئی از تاریخ انسانها بودهاند. تمدنهای نخستین جهت تسلط بر قلمروهایی وسیع، جنگهایی را به راه انداختهاند. در عصر اکتشاف، ملل مختلف انسانهایی را جهت اکتشاف و تسلط به نقاط دور دست بهکار گرفتهاند. جنگ سرد میان ایالاتمتحده آمریکا و اتحاد جماهیر شوروی باعث شد تا رقابتی فضایی میان این دو کشور شکل گرفته و فرود اولین انسان بر روی کره ماه نیز نتیجه این رقابت بود. پسازاین نیز نبردی میان سیستمعاملها صورت گرفته است.
همه ما به اهمیت یک سیستمعامل (OS) واقف هستیم. برخی از کاربران تبدیل به وفاداران صادق یک سیستمعامل میشوند. برخی نیز پا را از این فراتر گذاشته و وارد قلمرو طرفداران میشوند.
اکثر مردم با سیستمعاملهای نامآشنای بازار آشنایی دارند. مایکروسافت ویندوز و Mac OS شرکت اپل دراینبین شهره خاص و عام هستند. نسخههای سیستمعامل لینوکس (Linux) کمتر شناخته شدهاند، اما این موضوع باعث نمیشود که طرفداران این سیستمعامل از لینوکس دفاع نکنند. در زمینه سیستمعاملهای موبایلی نیز با اندروید گوگل، iOS شرکت اپل و ویندوز فون مایکروسافت روبهرو هستیم.
اما هنگامیکه فرای مشخصات فکر کنیم، میبینیم که سیستمعاملها نقاط مشترک فراوانی دارند. شاید هرکدام از آنها به شیوه خاص خود عملیات مختلف را انجام دهند اما در نهایت هر سیستمعامل باید بتواند وظایف پایهای خود را به سرانجام برساند. حداقل تا زمانی که اوضاع بر وفق مراد پیش برود، از بسیاری از این وظایف آگاه نخواهید شد.
اتصال سختافزار
یکی از وظایف اصلی یک سیستمعامل ایجاد ارتباط بین سختافزار و نرمافزار رایانه شما است. اگر کیس رایانه خود را باز کرده باشید حتما با مدارها، تراشهها، سیمها و قطعاتی دیگر مواجه شدهاید. در هنگام اجرای یک برنامه، این قطعات فیزیکی بار اصلی را به دوش میکشند. اما هر برنامه باید از طریقی بتواند از این سختافزارها استفاده کند.
سیستمعامل همانند پلتفرمی برای برنامهها است. سیستمعامل اطمینان حاصل میکند که پردازشهای در حال اجرای یک رایانه، به منابع مناسبی دسترسی دارند. یک سیستمعامل همچنین موجبات ارتباط بین سختافزار و نرمافزار را فراهم میآورد. این قضیه دستگاههای ورودی/خروجی (I/O) را نیز شامل میشود.
این وظیفه مهمی است. صدها گونه دستگاه ورودی/خروجی را میتوان به یک رایانه متصل کرد. اگر یک موس را در نظر بگیریم، میبینیم که دهها شرکت به تولید مدلهای مختلف این قطعه میپردازند. توسعهدهندگان نرمافزاری نمیتوانند پشتیبانی مختص به انواع موس موجود در بازار را فراهم کنند. در عوض، سیستمعاملها از طریق نرمافزارهای خاصی به نام درایور (driver) میتوانند تفاوتهای بین انواع سختافزار را پوشش دهند. از نظر ما، موسها به چنین تشریفاتی نیاز نداشته و فقط کار میکنند.
آسان کردن شرایط فعالیت
در سناریویی مشابه، سیستمعاملها زمینه فعالیت برنامهها بر روی انواع مختلف سختافزار را فراهم میآورند. این قضیه از این لحاظ حیاتی است که ممکن است دو رایانه با سیستمعاملهایی یکسان، از سختافزاری متفاوت بهره ببرند. این قضیه حتی برای رایانههای شرکت اپل که نسبت به سایرین کمتر انعطافپذیرند نیز صدق میکند. شاید یک مکینتاش امروزی از لحاظ پردازنده با یک نمونه مربوط به چند سال پیش متفاوت باشد، اما هر دو از سیستمعاملی یکسان بهره ببرند.
یک سیستمعامل، محیطی انتزاعی را برای برنامهها فراهم میآورد؛ به این معنا که یک برنامه به سیستمعامل میگوید که جهت اجرای صحیح به چه چیزهایی نیاز دارد. سپس سیستمعامل نیز با اختصاص منابع فیزیکی موجود، نیازهای اپلیکیشنها را برطرف میسازد. مهم نیست که سختافزار یک رایانه از چه نوعی است، در هر صورت سیستمعامل ترتیب جزئیات را میدهد.
در صورت نبود این قابلیت، مهندسین نرمافزار مجبور میشدند که انتخابهای سختی را انجام دهند. آنها مجبور میشدند برنامهها را جهت اجرا بر روی سختافزار مشخصی طراحی کنند. در این صورت، اگر نرمافزار شما با سختافزار موردانتظار برنامهنویسان مطابقت نمیداشت، احتمالا اپلیکیشن موردنظر نیز بر روی دستگاه شما اجرا نمیشد. سیستمعامل باعث میشود تا نرمافزارها با طیف وسیعی از سختافزارها هماهنگی داشته و همین موضوع میتواند برنامهنویسان را بر روی بهترین اپلیکیشن قابل طراحی متمرکز کند.
مدیریت فایلها
برنامهها جهت اجرای وظایف به مقداری بیش از سختافزار فیزیکی رایانه شما نیاز دارند. رایانهها بر روی مجموعهای از دادهها به نام «فایل» تکیه میکنند. این فایلها باید از قوانین مشخصی تبعیت کرده تا رایانهها نیز بتوانند از آنها استفاده کنند. این قوانین شیوه نامگذاری فایلها و رویههای ذخیرهسازی را در بر میگیرند. ما مجموعه کلی این قوانین را سیستم مدیریت فایل و یا همان فایل منیجر (file manager) مینامیم.
هر سیستمعامل رویکرد مدیریت فایل مختص به خود را دارد. میتوانید بر روی اکثر رایانهها به نصب فایل منیجرهای اضافی نیز بپردازید. اما جهت اجرای این نرمافزار نیز باید سیستمعامل شما محل قرارگیری فایلها را به خاطر بسپارد. بدین ترتیب، هنگامیکه یک برنامه فایلی را درخواست کند، سیستمعامل محل قرارگیری اطلاعات موردنظر را میداند.
بدون مدیریت فایل، اطلاعات دیجیتال درون رایانه شما چیزی جز دادههای بیاستفاده نیستند. انگار که تمامی وسایل خود را در داخل یک اتاق قرار دهید و هر چیزی را که نیاز دارید در اختیار داشته باشید، اما نتوانید در زمانی معین وسایل موردنیاز خود را پیدا کنید. ازآنجاییکه سیستمعامل از این قوانین تبعیت میکند، لازم نیست که بهصورت دستی فضای مشخص را به فایلهای خود اختصاص داده و یا اینکه در حجم عظیمی از دادهها به دنبال اطلاعات موردنیاز خود بگردید.
مدیریت حافظه رم
چگونه میتوانید رایانه خود را سریعتر کنید؟ شاید پاسخ شما یک پردازنده مرکزی (CPU) قویتر باشد. اما گاهی اوقات تنها چیزی که نیاز دارید حافظه رم بیشتر جهت انتقال سریعتر دادهها است.
حافظه رم جایی است که در هنگام پردازش در آن اطلاعات ذخیره شده تا در آینده از آنها در پردازنده مرکزی استفاده شود. میتوان آن را یک وسیله موقت ذخیره اطلاعات نامید. هنگامیکه برنامهها را به اجرا درمیآورید، سیستمعامل رایانه شما مقداری مشخص از حافظه رم را به هر برنامه اختصاص میدهد. دادههای ذخیرهشده بر روی حافظه رم میتوانند بهسرعت به پردازنده مرکزی فرستاده شده و از آنجا نیز بازگردانیده شوند. اگر پردازنده شما به دنبال اطلاعاتی بگردد که در حافظه رم موجود نیست، آنگاه پردازنده باید در مکانهایی دیگر مانند هارد درایو این اطلاعات را جستوجو کند. این فرآیند نسبت به اخذ اطلاعات از حافظه رم بیشتر طول کشیده و همین موضوع همهچیز را کندتر میکند.
جهت کاهش تأخیرها، سیستمعامل تخصیص حافظه رم را مدیریت میکند. در هر زمان معین، مقدار محدودی از حافظه رم در دسترس خواهد بود. سختی و پویایی این عملیات میتواند با توجه به تعداد برنامههای در حال اجرا تغییر کند. سیستمعامل باید نیازهای هر پردازش را سنجیده و بهمحض تغییر آنها، تغییرات را نیز اعمال کند. در حالت ایدئال، همهچیز نرم و روان پیش رفته و مانعی مشاهده نمیشود.
به دقت به آن فکر کنید
واحد پردازش مرکزی (CPU) یک رایانه همان چیزی است که وظایف را انجام میدهد. در سطوح پایهای، یک برنامه رایانهای سریالی از مسائل ریاضی پیچیده است. CPU همان چیزی است که این مسائل را حل کرده و نتایج مورد انتظار شما را تحویل میدهد. این نتایج میتوانند همهچیز را از طراحی یک شخصیت بازی رایانهای که بر روی بشکههای شعلهور میپرد تا اجرای یک الگوریتم بررسی املا در یک واژهپرداز، در بر گیرد.
هر برنامه اجرایی بخشی از توان پردازشی پردازنده را به خود اختصاص میدهد. هر برنامه اضافی که بهصورت همزمان با سایر برنامهها اجرا میشود، به معنای کاهش ظرفیت پردازنده خواهد بود. سیستمعامل با پردازنده هماهنگ میشود تا وظایف بهصورت روان اجرا شوند. هنگامیکه بین برنامههای فعال خود جابهجا میشوید، سیستمعامل نیز ممکن است تمرکز پردازنده را تغییر دهد. سیستمعامل بهعنوان مدیر منابع عمل کرده و اگر کار خود را بهدرستی انجام دهد، نمیتوانید این تغییرات را احساس کنید.
اگر سیستمعامل شما بهدرستی کار کند، متوجه این تغییرات نمیشوید. مسئله همین جا است؛ سیستمعامل وظایف پیچیده را مدیریت میکند، بنابراین نباید نگران این موضوع باشید. فقط در هنگام مشکلات متوجه نقش کلیدی سیستمعامل خود در زمینه انجام وظایف میشوید.
تشخیص تفاوتهای ظاهری سیستمعاملها کار آسانی است. اما تا زمانی که یک برنامهنویس نباشید، شاید نتوانید تفاوتهای زیر لایه رابط کاربری را درک کنید. در نهایت اگر بهاندازه کافی دقیق شوید، میبینید که سیستمعاملها وظایف رایانهها، گوشیهای موبایل، کنسولهای بازی و سایر دستگاههای پردازشی را به گونهای که ما انتظار داریم، انجام میدهند.
سخن آخر
با توجه به آنچه که از خاطرتان گذشت، میدانیم که طراحی یک سیستمعامل کار بسیار دشواری است. نهتنها باید نرمافزاری را طراحی کنید که بتواند با سختافزارها و دستگاههای مختلف کار کند، بلکه مجبور هستید رابط کاربری آن را نیز دلپذیر طراحی کنید. علاوه بر اینها باید خلاقیت به خرج داده و کارهای سایرین را تکرار نکنید و این تازه اولین قدم نصب و اجرای یک برنامه بر روی یک دستگاه است.