سیستم عامل برنامهای است که اجرای برنامههای کاربردی را کنترل کرده و به عنوان واسط بین نرمافزار و سختافزار کامپیوتر در نظر گرفته میشود. برای سیستم عامل میتوان سه هدف اصلی و 11 وظیفه مهم تعریف کرد. در این مقاله اهداف و وظایف سیستم عامل را با هم بررسی کرده و به صورت دقیق با هر کدام آشنا خواهیم شد.
یک سیستم کامپیوتری شامل بخشهای بسیار زیادی است. از قطعات سختافزاری نظیر هارد، حافظهها، درگاههای ورودی گرفته تا بخشها نرمافزاری که ممکن است صدها و هزاران برنامه کاربردی (Application) را در بربگیرد.
استفاده از همه این ابزارها و منابع در کنار هم میتواند مشکلات و مسائل خاص خود را داشته باشد. فرض کنید فردی که میخواهد با کامپیوتر کار کرده و یا برنامهای برای آن بنویسد، مجبور باشد با تمام این مشکلات دستوپنجه نرم کرده و تمام مسائل را خودش مدیریت کند، کاری سخت و عملاً نشدنی پیشرو خواهد بود.
با وجود سیستمهای عامل (Operating Systems) این جزئیات و کارهای مدیریتی از دید یک فرد معمولی یا حتی برنامهنویس حذف شده و کاربران میتوانند به راحتی با سیستمهای کامپیوتری کار کنند.
فهرست محتوای آموزش
اهداف سیستم عامل
با یک نگاه ساده به فرآیندهای کلی مدیریت سختافزار و اجرای برنامهها، خواهیم دید که اهداف سیستم عامل بسیار گسترده و صد البته مفید هستند. با این وجود، اهداف اصلی سیستم عامل را در سه عنوان تقسیمبندی میکنیم:
- سهولت: سیستم عامل استفاده از کامپیوتر را تسهیل میکند. یعنی با حذف جزئیات غیر لازم، کار با کامپیوتر را برایمان راحتتر میکند.
- کارآمدی: سیستم عامل استفاده کارآمد از منابع سیستم کامپیوتری را میسر میسازد. در اصل منابع رایانه باید به طور مناسب و درست مدیریت شده و از آنها به بهترین حالت ممکن استفاده شود.
- قابلیت تکامل: سیستم عامل باید به گونهای ساخته شود که امکان توسعه مؤثر، آزمایش و معرفی امکانات جدید سیستمی را بدون اختلال در خدمترسانی فراهم کند.
شاید بتوان این سه مورد را اهداف اصلی سیستم عامل در نظر گرفت. مهمترین هدف سیستم عامل در ترکیب این سه هدف مشاهده میشود:
سیستم عامل به عنوان واسط کاربر و کامپیوتر
همانطور که میدانید، میتوان به سختافزار و نرمافزار مورد استفاده در سیستمهای کامپیوتری به صورت لایهای یا سلسله مراتبی نگاه کرد.
به طور کلی برای کاربر نهایی سیستم این نرمافزارها (Application)، جزئیات سختافزار کامپیوتر اهمیت چندانی ندارد! بنابراین کاربر نهایی (End User) به کامپیوتر به صورت مجموعهای از نرمافزارها نگاه میکند.
هر برنامه کاربردی را میتوان با یک زبان برنامهنویسی متفاوت نوشت. اگر لازم باشد تا تمام نرمافزارها به صورت مجموعهای از دستورالعملهای ماشین نوشته شد، برنامهنویس با مشکلاتی طاقتفرسایی مواجه خواهد شد!
برای تسهیل این کار، مجموعهای از برنامههای سیستمی فراهم شده است. این برنامهها در پیادهسازی اعمالی که به دفعات انجام میشوند کاربرد دارند.
این ابزارها که برخی از آنها تحت عنوان Utility شناخته میشوند میتوانند به برنامهنویس در زمینه مدیریت فایلها و کنترل دستگاههای ورودی/خروجی (I/O) کمک کنند.
برنامهساز این امکانات برای تولید برنامههای خود استفاده کرده و بسیاری از نرمافزارها در حین اجرا، برخی از این برنامههای کمکی را احضار میکنند.
مهمترین برنامه سیستمی، سیستم عامل (OS) است.
سیستم عامل جزئیات سختافزار را از دید برنامهنویس پنهان کرده و برای او یک واسط ساده ایجاد میکند تا بتواند به سادگی از سیستم استفاده نماید. سیستم عامل به عنوان یک رابط عمل کرده تا دسترسی و استفاده برنامهنویس و برنامههای کاربردی از این امکانات و خدمات را تسهیل نماید.
حال که اهداف سسیستم عامل را به خوبی متوجه شدیم، بهتر است بررسی کنیم که برای رسیدن به این اهداف، یک سیستم عامل چه وظایفی دارد ؟
وظایف سیستم عامل
سیستم عامل وظایف بیشماری دارد. هر کدام از وظایف هم به تنهایی دریایی از کارها را انجام میدهند. اما شاید بتوان وظایف اصلی سیستم عامل را قابل شمارش دانست! در ادامه مقاله وظایف سیستم عامل را نامبرده و موارد اصلی را به طور خلاصه توضیح میدهیم.
به طور کلی وظایف مهم سیستم عامل عبارتاند از:
- مدیریت حافظه اصلی
- کارهای مدیریت پردازنده، پردازش ها و فرآیندها
- مدیریت دستگاههای متصل به کامپیوتر
- مدیریت فایل
- تأمین امنیت اطلاعات درون کامپیوتر
- کنترل عملکرد سیستم و سعی در بهبود آن
- تقسیمبندی منابع بین برنامههای مختلف
- ایجاد ارتباط مناسب میان برنامهها، فرآیندها و کاربران
- مدیریت خطاهای سیستم
همانطور که گفته شده، هر کدام از این وظایف، شامل زیر وظیفه، شرطها و اما و اگرهای فراوانی است.
در ادامه چهار مورد از مهمترین وظایف سیستم عامل را با هم بررسی میکنیم. همچنین خلاصهوار توضیحاتی در مورد کارکرد کلی و نحوه مواجهه سیستم عامل با مسائل مختلف را خواهیم خواند.
1- وظیفه اصلی سیستم عامل: مدیریت منابع
یکی از اصلیترین و مهمترین کارهایی که سیستم عامل انجام میدهد مدیریت منابع کامپیوتر است. کامپیوتر مجموعهای از منابع برای انتقال، ذخیره و پردازش دادهها و کنترل این اعمال است. سیستم عامل وظیفه مدیریت این منابع را به عنوان مدیر منابع کامپیوتر بر عهده دارد.
سیستم عامل با مدیریت منابع کامپیوتر، اعمال اصلی آن را کنترل میکند؛ اما این کنترل به گونهای غیرمعمول انجام میگیرد. در واقع سیستم عامل مجموعهای از برنامههاست. OS مانند همه برنامههای کامپیوتر، دستورالعملهایی را به پردازنده میدهد و تفاوت اصلی در اهداف برنامه است.
سیستم عامل به پردازنده در استفاده از منابع دیگر و ترتیب اجرای برنامههای مختلف جهت میدهد.
همانطور که میدانید، اگر پردازنده بخواهد هر یک از این کارها را انجام دهد، باید اجرای سیستم عامل را رها کرده و برنامههای دیگر را اجرا نماید.
سیستم عامل در حین جهتدهی به کار پردازنده مرکزی کامپیوتر، سایر منابع کامپیوتر را نیز مدیریت میکند.
مدیریت حافظه
حافظه اصلی در کامپیوتر و سایر حافظههای جانبی، دادههای ما را نگهداری میکنند. اینکه چه دادههایی باید از حافظه جانبی خوانده شده و درون حافظه اصلی (رَم) ریخته شود و تعیین زمان انجام این کارها اکثراً توسط سیستم عامل مدیریت میشود.
شاید با خود بگویید این کار وظیفه حافظه و پردازنده است! بله، اما اینکه برای اجرای یک برنامهها چه دادهها و در چه آدرسی باید اجرا شود توسط سیستم عامل مدیریت میشود. پس از آن عملیاتهای واکشی داده از حافظه به پردازنده و حافظهها واگذار میشود.
مدیریت دستگاهها و دسترسی به درگاههای I/O
هر دستگاه و ابزاری که به سیستم کامپیوتری متصل میشود به عنوان یک ابزار I/O یا ابزار ورودی/خروجی شناخته میشود. از مانیتوری که تصاویر را نمایش میدهد گرفته تا کیبورد و پرینتری که از آن استفاده میکنیم.
هر دستگاه I/O برای کار کردن نیاز به دستورالعملها و سیگنالهای کنترلی خاصی دارد. سیستم عامل یک واسط بسیار ساده و مشخص ایجاد کرده با پنهان کردن جزئیات، استفاده از دستگاههای ورودی و خروجی را آسان کرده است.
سیستم عامل همچنین واسطهایی برای برنامهنویسان مشخص میکند تا علاوه بر کاربران عادی، برنامهنویسها نیز بتوانند در هنگام توسعه نرمافزار خود، بدون درگیر شدن با پیچیدگیهای خاصی، از I/O استفاده کنند.
مدیریت بنبست در استفاده از منابع
گاهی ممکن است دو یا چند برنامه بخواهند به طور همزمان از یک منبع استفاده کنند. در این صورت اجرای یکی از این برنامهها به مشکل خورده و باعث ایجاد مشکلاتی میشود. سیستم عامل به عنوان مدیریت منابع باید بتوانند اینگونه مسائل را کنترل کند.
بحث مدیریت بنبست در سیستم عامل و انحصار متقابل در سیستم عامل را به طور مفصل در مقالات دیگری بررسی کردهایم که میتوانید به آنها مراجعه کنید.
مدیریت میزان استفاده از منابع (Job Accounting)
در حالیکه سیستم عامل باید بتواند منابع را میان برنامهها تقسیم کند، باید بتواند میزان استفاده هر کدام از آنها را نیز مدیریت کند. فرض کنید که یکی از نرمافزارها یکی از منابع را گرفته و دیگر آن را آزاد نکند. در اینصورت سایر نرمافزارهایی که به آن منبع وابسته هستند، هیچگاه به مرحله اجرا نرسیده و مشکلاتی در آنها ایجاد میشود.
بنابراین سیستم عامل به کمک مدیریت میزان منابع استفاده شده برای هر برنامه، میتواند استفاده هر برنامه را مدیریت کند. به این عملیات اصطلاحاً حسابداری منابع/کارها (Accounting) گفته میشود.
2- مدیریت فرآیند، دومین وظیفه مهم سیستم عامل
در نسلهای جدید کامپیوترها که چند پردازنده به طور موازی برای پردازش فرآیندها کار میکنند، مدیریت و هماهنگی بین آنها یکی دیگر از وظایف سیستم عاملها است.
علاوه بر تخصیص پردازندهها به هر فرآیند که به نوعی مدیریت منابع به حساب میآید، سیستم عامل باید بتواند هماهنگی لازم بین فرآیندها و پردازندهها را انجام دهد. زمانبندی پردازش و کنترل ترافیک هر پردازنده از جمله کارهایی است که برعهده سیستم عامل است.
3- مدیریت فایل
یکی دیگر از وظایف سیستم عامل، دسترسی و مدیریت دسترسی به فایلهاست. برای دسترسی به فایل، سیستم عامل باید درک درست و کاملاً دقیقی از ماهیت دستگاه ذخیره اطلاعات و همچنین ساختار دادههای درون آنها داشته باشید.
همچنین در مواردی که سیستم چند کاربر دارد، سیستم عامل باید راهکارهای حفاظتی برای کنترل دسترسی به فایلها فراهم کند.
کنترل دسترسی توسط سیستم عامل
در سیستمهای اشتراکی یا عمومی، بهتر است دسترسی به کل سیستم و یا منابع خاصی از آن توسط سیستم عامل کنترل شود. عمل دسترسی باید از منابع و دادهها در برابر کاربران غیرمجاز محافظت کرده و تنشهایی که در رقابت برای دسترسی به منابع ایجاد میشوند را حل نماید.
4- مدیریت عملکرد سیستم
سیستم عامل باید به طور مرتب وضعیت سلامت سیستم را بررسی کند. برای مثال:
- زمان پاسخ دادن سیستم به درخواستها
- عملکرد پردازنده یا حافظههای سیستم در کار با دادهها
- خطاهایی که به طور مداوم تکرار میشود.
با بررسی و مانیتور کردن اینگونه اطلاعات، سیستم عامل خواهد توانست وضعیت کلی سیستم را بسنجد و متناسب با آن تصمیمگیری کند. هدف این کارها، بهبود عملکرد سیستم کامپیوتری و افزایش کارآیی آن است.
سایر وظایف سیستم عامل:
علاوه بر وظایف اصلی سیستم عامل، یک سیستم عامل کامل، وظایف دیگری نیز دارد. این وظایف از نظر برنامهنویسی و نیز اجرای برنامههای کاربردی (نرمافزارها یا Applications) بسیار حائز اهمیت است. این سه وظیفه عبارتاند از:
1. توسعه برنامه (Program Development)
سیستم عامل برای کمک به برنامهنویس در ایجاد برنامه، امکانات و خدمات مختلفی را فراهم میکند. این خدمات معمولاً به شکل برنامههای سودمند (Utility) ارائه میشوند. گرچه این خدمات بخشی از هسته سیستم عامل نیست، اما اکثراً توسط سیستم عامل ارائه میشوند. به این خدمات ابزارهای توسعه برنامه کاربردی گفته میشود.
2. اجرای برنامه (Program Execution)
برای اجرای یک برنامه باید چندین گام برداشته شود. ابتدا باید دستورالعملها و دادهها در حافظه قرار داده شوند؛ سپس دستگاههای I/O و فایلها مقدارگذاری اولیه (Initialize) شده و سایر منابع نیز آمادهسازی شوند. سیستم عامل وظایف زمانبندی این کارها را برعهده دارد.
3. تشخیص خطا و پاسخ به آن (Error Detection)
وقتی که یک سیستم کامپیوتری در حال کار است، ممکن است خطاهای مختلفی رخ دهد. از جمله این خطاها میتوان به موارد زیر اشاره کرد:
- خطاهای سختافزاری داخلی (مانند خطای حافظه)
- انواع خطا سختافزاری خارجی (مانند کار نکردن دستگاههای I/O)
- خطاهای مختلف نرمافزاری (نظیر تقسیم بر صفر یا تلاش برای دسترسی به محلهای ممنوعه حافظه)
- عدم توانایی سیستم عامل در پاسخ به درخواست یک برنامه
سیستم عامل باید سازوکارهایی برای پیشگیری و روبهرو شدن به انواع خطاها در نظر بگیرید.
وظایف سیستم عامل برای سهولت تکامل سیستم عامل
یک سیستم عامل در طول زمان به سه دلیل اصلی ممکن است تکامل یابد. سیستم عامل باید در هر یک از این وضعیتها سازوکارهایی تعریف کرده و برای رویارویی با آنها آماده باشد.
1- ارتقای سخت افزار و انواع جدید سختافزار
با سرعت پیشرفت تکنولوژی و فناوری، سختافزارهای سیستمهای کامپیوتری در حال ارتقا و پیشرفت هستند. ممکن است بخواهیم یکی از قطعات کامپیوتر خود را ارتقا داده و یا سیستم عامل را روی کامپیوتر جدیدی راهاندازی کنیم. در هر صورت لازم است تا سیستم عاملها خود را با شرایط موجود وفق داده و متناسب با پیشرفت فناوری سختافزارها، پیشرفت کنند.
مثلاً مدلهای اولیه سیستمعاملهای یونیکس و OS/2 شرکت IBM از راهکار صفحهبندی (paging) در حافظهها استفاده نمیکردند؛ زیرا روی ماشینهایی اجرای میشدند که سختافزار paging نداشتند. نسخههای جدیدتر این سیستم عاملها برای استفاده از قابلیت صفحهبندی تغییر کردند.
همچنین استفاده از پایانههای گرافیکی و Page Mode به جای پایانههای حالت پیمایش خط در زمان (Line at a Time Scroll)، طراحی سیستم عامل را تحت تأثیر قرار میدهد. مثلاً یک پایانه گرافیکی معمولاً به کاربر اجازه میدهد تا چندین نرمافزار را به صورت همزمان از طریق پنجرههایی روی صفحه ببیند و این کار نیازمند پشتیبانی پیچیدهتری از طرف سیستم عامل است.
2- ارائه خدمات جدید توسط سیستم عامل
سیستم عامل در پاسخ به تقاضای کاربر یا نیاز مدیران سیستم، برای ارائه خدمات جدید گسترش مییابد. مثلاً اگر حفظ کارآیی مناسب برای کاربران با ابزارهای موجود مشکل باشد، ممکن است ابزارهای کنترل و اندازهگیری حدیدی به سیستم عامل اضافه شود.
به عنوان مثالی دیگر، اغلب نرمافزارها از یک پنجره در صفحه نمایش استفاده میکنند؛ اگر سیستم عامل از این ویژگی پشتیبانی نکند، لازم است تا ارتقاء یابد.
3. ترمیم سیستم عامل (Fixes)
هر سیستم عامل مانند هر نرمافزار دیگری، خطاها و اشکالاتی دارد که در طول زمان کشف و ترمیم (رفع) میشوند. سیستم عامل باید امکان بهروزرسانی به جهت رفع چنین مشکلاتی را داشته باشد.
البته خود عملیات ترمیم سیستم عامل ممکن است موجب بروز خطاهای جدیدی شود که نیازمند تست و در نظر گرفتن سازوکارهای مناسبی است.
نیاز به تغییر مداوم سیستم عامل، در طراحی آن اثرگذار خواهد بود. سه پیشنهاد اصلی و کاربردی برای مواجهه راحتتر با این تغییرات عبارتاند از:
- بهتر است ساختار سیستم عامل ماژولار باشد.
- واسط بین ماژولها به طور شفاف تعریف شده باشند.
- تمام فرآیندهای و کارهای سیستم عامل به خوبی مستندسازی شده باشد.
البته سیستم عاملهای رایج امروزی، کارهای فراتر از یک ماژولبندی ساده انجام میدهد؛ یعنی علاوه بر قسمتبندی یک برنامه به چند زیرروال، سازوکارهای دیگری نیز در نظر میگیرند.
برای کسب اطلاعات بیشتر در مورد سیر تکاملی سیستمهای عامل پیشنهاد میکنم مقاله زیر را بخوانید.
جمعبندی: هدف و وظیفه سیستم عامل چیست ؟
در ابتدای این مقاله اهداف سیستم عامل را بررسی کردیم. دانستیم که سیستم عامل با حذف جزئیات کار با یک سیستم کامپیوتری و ایجاد واسطهایی برای کاربران معمولی و توسعهدهندگان نرمافزار، استفاده از آن را تسهیل میکند.
در ادامه وظایف سیستم عامل را شناختیم. یکی از مهمترین وظایف سیستم عامل، مدیریت منابع و کنترل استفاده از آنهاست. سیستم عامل باید بتواند منابع مختلفی که در کامپیوتر وجود دارد را به درستی بین برنامههای مختلف تقسیم کرده و باعث افزایش کارآیی سیستم شود.
همچنین سیستم عامل بهتر است ابزارهایی برای توسعه و کشف خطاهای مختلف ارائه کند. به کمک اینگونه ابزارها، توسعهدهندگان خواهند توانست عملکرد سیستم عامل و سایر نرمافزارهای کاربردی را بهبود بخشند.
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
تشکر از معلومات تان
سپاس. کامل وعالی
جا داره خسته نباشید بگم بخاطر توضیحات کاملتون
خیلی خوبین
شما بیشتر! 🙂
تشکر از همکاری شما بسیارنکات مهم بود
خوشحالیم که مورد استفادتون قرار گرفته