سیستم عامل چیست؟ — به زبان ساده — اهدف وظایف و کاربرد
سیستم عامل (Operating System | OS) سیستمی نرمافزاری است که سخت افزار کامپیوتر و منابع نرم افزار را مدیریت میکند و خدمات رایج و مشترکی را برای برنامههای کامپیوتری فراهم میسازد. از جمله ویژگیهای مشترک سیستمعاملهای مختلف میتوان به مدیریت پردازشها، وقفه، مدیریت حافظه، سیستم فایل، درایورهای دستگاهها، شبکه، امنیت و ورودی-خروجی اشاره کرد. در این مقاله علاوه بر ارائه پاسخی جامع برای این سوال که سیستم عامل چیست ، سعی شده است تا به تمام ویژگیهای مشترک سیستمعاملها هم پرداخته شود.
سیستم عامل چیست ؟
سیستم عامل برنامهای است که پس از بارگذاری اولیه در کامپیوتر به وسیله یک برنامه راهانداز، تمام برنامههای کاربردی دیگر در یک کامپیوتر را مدیریت میکند. برنامههای نرم افزاری به وسیله ارسال درخواست برای دریافت خدمات از طریق یک رابط برنامه کاربردی (API) از سیستم عامل استفاده میکنند. علاوه بر این، کاربران میتوانند از طریق رابط کاربری (رابط خط فرمان یا رابط گرافیکی) مستقیماً با سیستم عامل تعامل داشته باشند.
پیش از ادامه این مبحث لازم است یادآور شویم که میتوانید سیستم عامل را با استفاده از مجموعه آموزش سیستم عامل فرادرس یاد بگیرید.
سیستم عامل برای عملکردهای سخت افزاری مثل ورودی و خروجی و تخصیص حافظه به عنوان واسطی میان برنامهها و سخت افزار کامپیوتر عمل میکند، اگرچه کدهای برنامههای کاربردی معمولاً بهطور مستقیم توسط سخت افزار اجرا میشوند، اما فراخوانیهای سیستمی بهطور مداوم به هر یک از توابع سیستم عامل ارجاع میدهند یا به وسیله یک تابع در آنها وقفه ایجاد میشود.
سیستم عامل کامپیوتر چیست ؟
سیستمعاملها را میتوان در دستگاههای بسیاری یافت که همه آنها دارای کامپیوتر هستند. این دستگاهها از گوشیهای موبایل و کنسولهای بازیهای کامپیوتری گرفته تا سرورهای وب و ابَر کامپیوترها را شامل میشوند. سیستمعاملهای اشتراک زمانی (Time-Sharing) وظایف را با هدف استفاده بهینه از سیستم زمانبندی میکنند و همچنین ممکن است شامل نرم افزارهای حسابرسی برای تخصیص هزینههای مربوط به زمان پردازنده، حافظه انبوه (Mass Storage)، چاپ کردن و سایر منابع هم بشوند.
سایر انواع سیستمعاملهای تخصصی (سیستمهای عامل با مقاصد خاص) مثل «سیستمهای تعبیهشده» (Embedded Systems) و «سیستمهای بلادرنگ» (Real-Time Systems) نیز برای بسیاری از کاربردهای مختلف موجود هستند. همچنین سیستمهای عامل متمرکز بر امنیت نیز وجود دارند. برخی از سیستمهای عامل دارای نیازمندیهای سیستمی کمی هستند؛ از جمله این نوع از سیستمعاملها میتوان توزیعهای کم حجم لینوکس را مثال زد. سایر سیستمعاملها هم ممکن است ملزومات سیستمی بیشتری داشته باشند.
برخی از سیستمهای عامل نیاز به نصب دارند و برخی دیگر هم ممکن است به صورت از پیش نصب شده به همراه کامپیوترهای آماده قابل خرید ارائه شوند که به این نوع از سیستم عاملها به اصطلاح «OEM-Installed» میگویند. همچنین برخی دیگر از سیستمعاملها هم مستقیماً از روی دستگاههای رسانهای مثل «Live CD» یا حافظه فلش (مموری) به صورت زنده قابل اجرا هستند.
سیستم عامل به انگلیسی
سیستم عامل به انگلیسی «Operating System» نام دارد و آن را به اختصار «OS» خطاب میکنند.
سیستم عامل های جدید
جدیدترین نسخه ویندوز در سال ۱۴۰۱ ویندوز ۱۱ به حساب میآید که در اکتبر ۲۰۲۱ منتشر شده است و پس از آن هم به طور مرتب بروزرسانیهایی برای آن ارائه میشود. همچنین آخرین نسخه macOS در سال ۱۴۰۱ با نام «macOS Ventura» نام دارد که در WWDC 2022 معرفی شده است. در خصوص سیستمعاملهای لینوکسی هم نسخه «Ubuntu 22.04 LTS» آخرین نسخه اوبونتو در تابستان ۱۴۰۱ به حساب میآید. همچنین KDE Neon هم جدیدترین توزیع لینوکس محسوب میشود که توسط KDE توسعه داده شده است. سیستم عامل کروم یا همان ChromeOS نیز یکی از سیستمعاملهای جدیدی به حساب میآید که اخیراً از آن زیاد استفاده میشود.
تعریف سیستم عامل شبکه
سیستم عامل شبکه (Network Operating System) که به اختصار NOS نامیده میشود، نوعی سیستم عامل کامپیوتر است که در اصل با هدف پشتیبانی از ایستگاههای کاری (کارگاهها | Workstation)، کامپیوترهای شخصی و در برخی موارد برای پایانههای قدیمیتری ارائه میشود که در یک شبکه محلی (Local Area Netwok | LAN) متصل هستند. نرم افزاری که در پس سیستم عامل شبکه وجود دارد به چندین دستگاه در شبکه اجازه میدهد تا با یکدیگر در ارتباط باشند و منابع مورد نیاز را با هم به اشتراک بگذارند.
سخت افزارهای رایجی که از سیستم عامل شبکه استفاده میکنند شامل تعدادی کامپیوتر شخصی، پرینتر، سرور و فایل سرور به همراه شبکهای محلی است که آنها را به هم متصل میکند. نقش سیستم عامل شبکه یا همان NOS این است که خدمات اساسی شبکه و قابلیتهایی را ارائه دهد که از چندین درخواست ورودی به صورت همزمان در محیطی چندکاربره پشتیبانی میکنند.
سهم سیستم عامل های مختلف از بازار به چه ترتیب است؟
«مایکروسافت ویندوز» (Microsoft Windows) سیستم عامل غالب و فراگیر همهمنظورهای به حساب میآید که سهم بازار آن در حدود ۷۶٫۴۵ درصد تخمین زده میشود. سیستم عامل مک (مک او اس | macOS) که توسط شرکت اپل ساخته شده است، با سهم ۱۷٫۷۲ درصدی در جایگاه دوم قرار دارد. گونههای مختلف سیستم عامل لینوکس نیز در رتبه سوم قرار میگیرند و دارای سهمی معادل ۱٫۷۳ درصد هستند.
سهم سیستم عامل های مختلف در بازار دستگاه های همراه چگونه است؟
در بخش دستگاههای همراه یا همان موبایل که گوشیهای موبایل و تبلتها را شامل میشوند، سیستم عامل اندروید با سهم بازار ۷۲ درصدی در سال ۱۴۰۰ رتبه اول را به خود اختصاص داده است. براساس دادههای مربوط به سال ۲۰۱۶، سهم گوشیهای هوشمند اندرویدی ۸۷٫۵ درصد بوده و ۱۰٫۳ درصد در سال رشد داشته است. این در حالی است که سیستم عامل iOS شرکت اپل دارای سهم ۱۲٫۱ از بازار سیستمعاملهای موبایل بوده و این سهم سالانه ۵.۲ درصد کاهش داشته است. سایر سیستمهای عامل موبایلی هم تنها سهمی در حدود ۰.۳ درصد داشتهاند.
سهم بازار سیستم عامل های مخصوص سرور ها و سوپر کامپیوترها در اختیار کدام سیستم عامل است؟
در حوزه سرورها و ابَرکامپیوترها، توزیعهای مختلف سیستمعاملهای لینوکسی بر سایر سیستمعاملها غالب و چیره هستند. سیستمعاملهای مایکروسافت ویندوز سرور، اوبونتو سرور، CentOS Server و Red Hat Enterprise از جمله بهترینها برای راهاندازی و مدیریت سرور به حساب میآیند.
کم ترین سهم بازار سیستم عامل به چه نوع سیستم هایی تعلق دارد؟
سایر انواع سیستمعاملهای تخصصی (سیستمهای عامل با مقاصد خاص) مثل «سیستمهای تعبیهشده» (Embedded Systems) و «سیستمهای بلادرنگ» (Real-Time Systems) نیز برای بسیاری از کاربردهای مختلف موجود هستند. همچنین سیستمهای عامل متمرکز بر امنیت نیز وجود دارند. برخی از سیستمهای عامل دارای نیازمندیهای سیستمی کمی هستند؛ از جمله این نوع از سیستمعاملها میتوان توزیعهای کم حجم لینوکس را مثال زد. سایر سیستمعاملها هم ممکن است ملزومات سیستمی بیشتری داشته باشند.
درس سیستم عامل چیست ؟
درس سیستم عامل یکی از درسهای مهم و کلیدی رشتههای کامپیوتر از جمله مهندسی کامپیوتر و رشته فناوری اطلاعات به حساب میآید. مطالعه و یادگیری درس سیستم عامل برای درک ساختاری و سیستماتیک کامپیوتر و نحوه ارتباط برنامههای مختلف و سیستم عامل در لایههای پایین با قطعات سخت افزاری اهمیت بسیار زیادی دارد. درس مبانی سیستم عامل یکی از درسهای مهم سطح کارشناسی در اکثر دانشگاههای معتبر جهان تدریس میشود. در درس مبانی سیستم عامل مباحث پایهای و اساسی مربوط به انتزاعها در سیستمهای عامل، ساز و کارها و نحوه پیادهسازی سیستمعاملها تدریس میشوند.
در درس سیستم عامل دانشجویان بهطور عمیق با اجزای یک سیستم عامل آشنا میشوند و یاد میگیرند برنامهها را اجرا کنند، سیستمهای فایل را عیبیابی و مدیریت کنند و با نحوه پیادهسازی رابط کاربری سیستم عامل آشنایی لازم را بدست آورند. پیش نیاز درس سیستم عامل درسهای معماری کامپیوتر و ساختمانهای داده است. برای یادگیری درس سیستم عامل میتوان از دوره آموزش سیستمهای عامل فرادرس استفاده کرد.
درس سیستم عامل در کنکور کامپیوتر
درس سیستم عامل یکی از درسهای مربوط به بخش دروس مشترک کنکور ارشد به حساب میآید. این بخش دارای ضریب ۴ است و بنابراین مهمترین بخش کنکور ارشد مهندسی کامپیوتر محسوب میشود. به همین دلیل آمادهسازی برای پاسخ به سوالات این درس در کنکور بسیار مهم است. به دلیل دشوار بودن درس سیستم عامل در صورت پاسخ صحیح به سوالات آن در آزمون کارشناسی ارشد میتوان رتبه بهتری را کسب کرد. بنابراین پیشنهاد میشود دانشجویان خود را برای سوالات کنکور درس سیستم عامل به خوبی آماده کنند.
انواع سیستم عامل چیست ؟
روشهای مختلفی برای دستهبندی انواع سیستم عامل میتواند وجود داشته باشد و از رویکردها و جنبههای مختلفی میتوان انواع سیستم عامل را دستهبندی کرد. مثلاً بر اساس نوع کاربرد، پلتفرم مورد استفاده، نوع رابط کاربری و سایر موارد میتوان انواع سیستم عامل را در گروههای مختلف طبقهبندی کرد. در این بخش به طور کلی انواع سیستم عامل فهرست شده است و اکثر این انواع در ادامه بهطور مختصر شرح داده شدهاند.
- سیستمعاملهای تک وظیفهای و چند وظیفهای / اشتراک زمانی (Time Sharing)
- سیستمهای عامل تککاربره و چندکاربره
- توزیعی (Distributed)
- قالببندی شده (Templated)
- تعبیه شده (Embedded)
- بلادرنگ (Real Time)
- کتابخانهای (Library)
- سیستم عامل دستهای (Batch)
- چندپردازندهای (Multiprocessing OS)
- سیستم عامل شبکه
- سیستم عامل موبایل
انواع سیستم عامل های تک وظیفه ای و چند وظیفه ای
یک سیستم تکوظیفهای (تککاره | Single-Tasking) تنها میتواند یک برنامه را در لحظه اجرا کند، در حالی که یک سیستم عامل چند وظیفهای (چندکاره | Multi-Tasking) امکان اجرای بیش از یک برنامه را فراهم میکند. این امکان از طریق «اشتراک زمانی» (Time-Sharing) بدست میآید. در روش اشتراک زمانی، زمانی که برای پردازنده وجود دارد میان چندین پردازه (Process) تقسیم میشود. در هر یک از این پردازهها در بُرشهای زمانی (Time Slices) به وسیله زیرسیستم زمانبندی وظایف در سیستم عامل بهطور مکرر وقفه ایجاد میشود. چندوظیفهای را میتوان به انواع «غیرانحصاری» (Preemptive) و «مشارکتی» (Cooperative) تقسیمبندی کرد.
در حالت چندوظیفهای غیرانحصاری سیستم عامل زمان پردازنده را بُرش میزند و هر برش زمانی را به هر یک از برنامههای در حال اجرا تخصیص میدهد. سیستمعاملهای مبتنی بر یونیکس (Unix-Like OS) مثل لینوکس و همچنین سیستمعاملهای غیروابسته به یونیکس مثل AmigaOS از روش چندوظیفهای غیرانحصاری پشتیبانی میکنند.
چندوظیفهای مشارکتی نیز به وسیله وابستگی به هر پردازه جهت فراهمسازی زمان برای سایر پردازهها در یک وضعیت تعریف شده حاصل میشود. نسخههای ۱۶ بیتی سیستم عامل ویندوز شرکت مایکروسافت از روش چندوظیفهای مشارکتی اسنفاده میکرد. همچنین نسخههای ۲۳ بیتی ویندوز NT و Win9x نیز از چندوظیفهای مشارکتی استفاده میکردند.
انواع سیستم عامل های تک کاربری و چند کاربری
سیستمعاملهای تک کاربره دارای هیچ تسهیلاتی برای تشخیص کاربران نیستند، امام ممکن است امکان اجرای چندین برنامه را به صورت متوالی فراهم کنند. یک سیستم عامل چند کاربره مفهوم ساده چند وظیفهای را به همراه تسهیلاتی ارائه میدهد که پردازشها و منابع را شناسایی میکنند. از جمله این این پردازشها و منابع میتوان به فضای ذخیرهسازی دیسک، امکان تعلق داشتن به چندکاربر و همچنین امکان تعامل چند کاربر با سیستم بهطور همزمان اشاره کرد.
سیستمعاملهای اشتراک زمانی وظیفهها را برای استفاده بهینه از سیستم زمانبندی میکنند و همچنین ممکن است دارای نرم افزارهای حسابرسی برای تخصیص هزینههای زمان پردازنده، ذخیرهسازی انبوه، پرینت کردن و سایر منابع برای چندین کاربر باشند.
سیستم عامل های توزیعی
یک سیستم عامل توزیعی مدیریت گروهی از کامپیتورهای مشخص عضو شبکه را برعهده دارد و کاری میکند که تمام این کامپیوترهای داخل شبکه به صورت یک کامپیوتر واحد در نظر گرفته شوند. در این نوع از سیستمهای عامل، تمام محاسبات به صورت توزیع شده انجام میشوند؛ یعنی محاسبات در میان هر یک از کامپیوترهای عضو شبکهها تقسیم میشود.
سیستم عامل های قالب بندی شده
یک سیستم عامل قالببندی شده سیستمعاملی است که به یک کاربر اجازه میدهد تا محیط سفارشی خود را در پایه و اساسی یکسان و مشترک با کدهای منبع یکسان ایجاد کند. در زمینه محاسبات توزیعی و ابری (Cloud) سیستم عامل به ایجاد ایمیج ماشین مجازی واحدی به عنوان سیستم عامل مهمان و سپس ذخیرهسازی آن به عنوان ابزاری برای ماشینهای مجازی چنداجرایی «قالببندی» (Templating) گفته میشود. این روش هم در مدیریت مجازیسازی و هم در رایانش ابری به کار میرود و استفاده از آن در انبارهای داده سرورهای بزرگ بسیار رایج است.
سیستم عامل های تعبیه شده
سیستمعاملهای تعبیه شده برای استفاده در سیستمهای کامپیوتری تعبیه شده طراحی شدهاند. سیستمهای عامل تعبیه شده برای اجرا روی ماشینهای کوچک با قابلیتهای خودکارسازی کمتر (مثل دستیار دیجیتال شخصی یا PDAها) طراحی شدهاند. این نوع سیستمعاملها بسیار فشرده هستند و طراحی آنها بسیار بهینه است و قابلیت اجرا را با میزان محدودی از منابع دارند. ویندوز CE و Minix 3 نمونههایی از سیستمعاملهای تعبیه شده به حساب میآیند.
سیستم عامل های بلادرنگ
یک سیستم عامل بلادرنگ سیستم عاملی است که تضمین میکند رویدادها یا دادههایی را در زمان مشخصی پردازش خواهد کرد. یک سیستم عامل بلادرنگ میتواند تکوظیفهای یا چندوظیفهای باشد، اما در صورت چندوظیفهای بودن، از الگوریتمهای زمانبندی اختصاصی استفاده میکند تا طبیعت رفتاری قطعی (deterministic) حاصل شود. چنین سیستم مبتنی بر رویدادی براساس اولویتهای تعیین شده یا رویدادهای خارجی میان وظایف مختلف سوئیچ ميکند؛ درست مشابه سیستمعاملهای اشتراک زمانی که براساس وقفههای ساعت بین وظایف سوئیچ میکنند.
سیستم عامل های کتابخانه ای
سیستم عامل کتابخانهای نوعی از سیستم عامل است که در آن خدماتی که یک سیستم عامل رایج نظیر خدمات شبکه فراهم میکند، در قالب کتابخانهها ارائه میشوند. سیستمعاملهای کتابخانهای از کدهای کاربردی و پیکربندیهای مربوط به ساخت یک «یونیکرنل» (Unikernel) تشکیل میشوند. یونیکرنل یک ایمیج ماشین خاص با فضای آدرس واحد است که میتواند در بستر ابری یا محیطهای تعبیه شده مستقر شود.
- مطالعه بیشتر: انواع سیستمعامل — راهنمای جامع
وظایف سیستم عامل
سیستم عامل وظیفه شناسایی، پیکربندی و تجهیز کردن برنامههای کاربردی با دسترسی مشترک به دستگاههای سخت افزاری زیربنایی را برعهده دارد. در اصل سیستم عامل سه کارکرد اصلی دارد:
- مدیریت منابع کامپیوتر از قبیل واحد پردازنده مرکزی، حافظه، دیسک درایوها و پرینترها
- برقرار کردن یک رابط کاربری
- اجرا و فراهمسازی خدمات برای نرم افزارهای کاربردی
- مقاله مرتبط: مشخصات سیستم عامل — راهنمای جامع
معرفی فیلم های آموزش مهندسی و علوم کامپیوتر
دورههای آموزشی در پلتفرم فرادرس بر اساس موضوع در قالب مجموعههای آموزشی مختلفی دستهبندی شدهاند. یکی از این مجموعهها مربوط به آموزش مهندسی و علوم کامپیوتر است که دوره آموزش سیستم عامل هم در آن وجود دارد. دانشجویان رشتههای مهندسی و علوم کامپیوتر میتوانند با استفاده از دورههای ارائه شده در این مجموعه دروس اصلی و تخصصی خود را بهتر یاد بگیرند و فراتر از کتاب که تنها شامل متن و عکس است، از طریق ویدیوهای کاربردی آموزشی کلاس درس را به کامپیوتر و تلفن همراه هوشمند خود بیاورند و در همه جا به یادگیری ادامه دهند. تقریباً تمام درسهای رشتههای مهندسی و علوم کامپیوتر در این مجموعه آموزشی در قالب دورههای مجزا پوشش داده شدهاند. در تصویر فوق تنها برخی از دورههای آموزشی این مجموعه ملاحظه میشوند.
- برای دسترسی به همه دورههای مجموعه آموزشهای مهندسی و علوم کامپیوتر فرادرس + اینجا کلیک کنید.
تاریخچه سیستم عامل
کامپیوترهای اولیه برای اجرای تعدادی از وظایف واحد پشت سر هم مثل یک ماشین حساب ساخته شده بودند. در دهه ۵۰ میلادی (۳۰ خورشیدی) قابلیتهای ابتدایی و اساسی سیستم عامل از جمله قابلیت «نظارت پایدار» (Resident Monitor) توسعه داده شدند. در قابلیت نظارت پایدار این امکان وجود داشت که بهطور خودکار برنامههای متفاوتی به صورت پیاپی اجرا شوند تا سرعت پردازش افزایش پیدا کند.
تا اوایل دهه ۶۰ میلادی (دهه ۴۰ خورشیدی) سیستمهای عامل در شکل و فُرم مُدرن و پیچیده امروزی خود وجود نداشتند. در آن زمان نوعی از قابلیتهای سختافزاری اضافه شدند که امکان استفاده از کتابخانههای زمان اجرا، وقفهها و پردازش موازی را فراهم کردند. وقتی که کامپیوترهای شخصی در دهه ۸۰ میلادی محبوبیت پیدا کردند، سیستمعاملهایی با مفهومی مشابه کامپیوترهای بزرگتر برای کامپیوترهای شخصی هم به کار گرفته شدند.
تاریخچه سیستم عامل در دهه ۴۰ میلادی
در دهه ۴۰ میلادی، جدیدترین سیستمهای الکترونیکی دیجیتال هیچ سیستم عاملی نداشتند. سیستمهای الکترونیکی آن زمان با ردیفهایی از دکمههای مکانیکی یا به وسیله سیمهای جامپر روی تختههای سیمبندی شده برنامه نویسی میشدند. در اینجا منظور از جامپر قطعهای با بدنه پلاستیکی است که بخشی رسانا در آن وجود دارد که با استفاده از آن میتوان دو پایه رسانا را به هم متصل کرد. اینها سیستمهایی برای مقاصد خاص بودند که مثلاً جدولهای بالستیک را برای ارتش تولید میکردند یا چاپ فیشهای حقوق را از روی دادههای روی کارتهای پانچ کاغذی کنترل میکردند.
پس از آنکه کامپیوترهای همهمنظوره قابل برنامه ریزی اختراع شدند، زبانهای ماشین (دارای رشتههایی از ارقام دودویی صفر و یک روی نوار پانچ کاغذی) معرفی شدند که باعث شدند فرایند برنامه نویسی بسیار سریعتر انجام شود. در اوایل دهه ۵۰ میلادی (۳۰ خورشیدی) یک کامپیوتر تنها میتوانست یک برنامه را در لحظه اجرا کند.
هر کاربر فقط میتوانست به تنهایی برای مدت محدودی از کامپیوتر استفاده کند و کاربران باید در زمانی مقرر به همراه برنامه و دادههای خود حاضر میشدند و دادههای آنها روی کارتهای پانچ کاغذی یا نوارهای پانچ حک شده بودند. برنامه در داخل ماشین بارگذاری و ماشین بهگونهای تنظیم میشد که تا زمانی کار کند که برنامه به اتمام میرسید یا از کار میافتاد.
برنامهها بهطور کلی میتوانستند از طریق یک پنل جلویی با استفاده از دکمههای تغییر وضعیت و چراغهای پنل اشکالزدایی یا دیباگ شوند. گفته شده است که «آلن تورینگ» (Alan Turing) با استفاده از ماشین اولیه Manchester Mark 1 در این کار تبحر داشته است و او از همان زمان مفاهیم اولیه سیستم عامل را از اصول ماشین جهانی تورینگ استخراج کرده بود.
ماشینهایی که پس از آن روی کار آمدند دارای کتابخانههایی از برنامهها بودند که به برنامه یک کاربر پیوند داده میشدند تا در عملیاتی نظیر ورودی و خروجی و کامپایل کردن کمک کنند. کامپایل کردن به معنی تبدیل کدهای سمبلیک قابل خواندن توسط انسان (همان زبان اسمبلی) به کدهای زبان ماشین است. این مسئله در واقع پیدایش سیستمهای عامل امروزی را رقم زد.
اگرچه در آن زمان هم ماشینها همچنان فقط میتوانستند یک وظیفه واحد را در هر لحظه انجام دهند. در مقطعی در دانشگاه کمبریج کشور انگلستان، صف وظایف در واقع بند رختی بود که نوارهای پانچ شده با گیرههای لباس دارای رنگهای مختلف آویزان میشدند تا اولویت وظایف مشخص شوند.
تاریخچه سیستم عامل در دهه ۵۰ میلادی
تا اواخر دهه ۵۰ میلادی (۳۰ خورشیدی) برنامههایی شروع به پیدایش کردند که میتوانستیم آنها را به عنوان سیستم عامل در نظر بگیریم. یکی از نرم افزارهایی که اغلب به عنوان اولین سیستم عامل به آن اشاره میشود، GM-NAA I/O نام دارد که در سال ۱۹۵۶ برای IBM 704 منتشر شده است. اولین نمونهای که به واقع نام آن را سیستم عامل گذاشتهاند، «سیستم عامل اشتراکی» یا «Shared Operating System» است که نوع توسعهیافته GM-NAA I/O به حساب میآید و در سال ۱۹۵۹ منتشر شده است.
در مقاله منتشر شده به تاریخ ماه می ۱۹۶۰ در توصیف این سیستم عامل، «جورج ریکمن» (George Ryckman) بیان داشته است:
ظهور و توسعه سیستمعاملهای کامپیوتری به لحاظی مادی مشکل قرار دادن یا برداشتن یک برنامه یا مجموعهای از برنامهها را در کامپیوترها به گونهای بهینه حل کرده است.
یکی از نمونههای مشهورتری که اغلب در بحثهای مربوط به سیستمهای اولیه مطرح میشود، سیستم عامل Atlas Supervisor نام دارد که روی کامپیوتر اطلس در سال ۱۹۶۲ اجرا میشد. علاوه بر Supervisor به این سیستم Monitor هم گفته میشد. دانشمند علوم کامپیوتر، «برینچ هانسن» (Brinch Hansen) این سیستم عامل را به عنوان مهمترین تحول در تاریخ سیستمعاملها توصیف کرده است.
روند پیشرفت سیستم عامل برای کامپیوترهای Mainframe
کامپیوترهای Mainframe به کامپیوترهای مرکزی گفته میشود که قدرت پردازشی بسیار بالایی دارند و معمولاً در سازمانهای بسیار بزرگ نظیر بانکها مورد استفاده قرار میگرفتند. امروزه فناوریهای جدیدتری مثل پردازش ابری تقریباً جایگزین Mainframeها شدهاند.
قابلیت های جدید کامپیوترهای Mainframe در دهه ۵۰ میلادی
در طول دهه ۵۰ میلادی، قابلیتهای جدید بسیاری در حوزه سیستمهای عامل مخصوص کامپیوترهای Mainframe بنیانگذاری شدند. از جمله این قابلیتها میتوان به موارد زیر اشاره کرد:
- پردازش دستهای (Batch Processing)
- وقفهدهی ورودی/خروجی (Input/Output Interrupting)
- میانگیری (Buffering | عمل قرار دادن دادهها در میانگیر یا بافر)
- چندوظیفگی (چندکارگی | Multitasking)
- عملیات همزمان دستگاه جانبی برخط (Spooling | Simultaneous Peripheral Operation on Line)
- کتابخانههای زمان اجرا (Runtime Libraries)
- بارگذاری پیوند (Link Loading)
- برنامههایی برای مرتبسازی رکوردها در فایلها
این ویژگیها و قابلیتها به جای اینکه در سیستم عاملی جدا به وسیله تمام اپلیکیشنها استفاده شوند، تنها برخی از آنها به انتخاب برنامه نویسان، در توسعه بعضی از نرم افزارهای کاربردی به کار گرفته میشدند یا ممکن بود از آنها استفاده نشود.
نقش کلیدی OS/360 در تاریخچه سیستم عامل
در طول دهه ۶۰ میلادی، در سیستم عامل OS/360 شرکت IBM این رویکرد و مفهوم معرفی شد که یک سیستم عامل واحد کل خط تولید را پوشش دهد. این رویکرد برای موفقیت ماشینهای System/360 بسیار حیاتی و ضروری بود. سیستم عاملهای Mainframe امروزی شرکت IBM نوادگان دور آن سیستمهای اولیه قدیمی به حساب میآیند. البته ماشینهای امروزی با برنامههای نوشته شده برای OS/360 سازگاری دارند و به اصطلاح با آنها «پسسازگار» (Backward Compatible) هستند.
همچنین در OS/360 شیوهای بنیان گذاشته شد که در آن سیستم عامل پایش تمام منابع سیستمی مورد استفاده را انجام میدهد که این شامل تخصیص فضا برای برنامه و دادهها در حافظه اصلی، فضای فایل در ذخیرهگاه جانبی و قفل کردن فایلها در طول بروزرسانیها میشود. وقتی که پردازشی به هر دلیلی متوقف شود، تمام این منابع به وسیله سیستم عامل بازپس گرفته میشوند.
سیستم عامل های Mainframe شرکت IBM
سیستم جایگزین برای S/360-67 به نام CP-67 آغازگر تولید دسته جدیدی از سیستمهای عامل شرکت IBM به حساب میآید که تمرکز آن روی مفهوم ماشینهای مجازی (Virtual Machine) قرار داشته است. سایر سیستم عاملهایی که برای سری S/360 کامپیوترهای Mainframe شرکت IBM مورد استفاده قرار میگرفتند شامل موارد زیر میشوند که آنها هم توسط شرکت IBM ساخته شدهاند:
- DOS/360 (سیستم عامل دیسکی | Disk Operating System)
- TSS/360 (سیستم اشتراک زمانی | Time Sharing System)
- TOS/360 (سیستم عامل روبانی یا نواری | Tape Operating System)
- BOS/360 (سیستم عامل پایه | Basic Operating System)
- ACP (برنامه کنترل خطوط هوایی | Airline Control Program)
همچنین تعدادی سیستم عامل که توسط IBM ساخته نشده بودند هم در سری S/360 کامپیوترهای Mainframe این شرکت مورد استفاده قرار میگرفتند:
- MTS (سیستم پایانگر میشیگان | Michigan Terminal System)
- MUSIC (سیستم چندکاربره برای محاسبات تعاملی | Multi-User System for Interactive Computing)
- ORVYL (سیستم اشتراک زمانی استنفورد | Stanford Timesharing System)
تاریخچه سیستم عامل های Mainframe در دهه 60 میلادی
شرکت کنترل دیتا (Control Data Corporation) سیستم عامل SCOPE را برای پردازش دستهای در دهه ۶۰ میلادی (دهه ۴۰ خورشیدی) توسعه داده است. با همکاری دانشگاه مینهسوتا، سیستم عامل Kronos و بعدها هم سیستم عامل NOS در طول دهه ۷۰ میلادی (۵۰ خورشیدی) توسعه داده شدند. این سیستم عامل NOS از پردازش دستهای و اشتراک زمانی پشتیبانی میکرد. درست مثل بسیاری از سیستمهای اشتراک زمانی تجاری، رابط NOS نیز برگرفته از سیستمعاملهای Dartmouth BASIC بود.
سیستمعاملهای Dartmouth BASIC یکی از تلاشهای پیشگامانه در اشتراک زمانی و زبانهای برنامه نویسی به حساب میآید. در اواخر دهه ۷۰ میلادی، شرکت Control Data و دانشگاه ایلینویز سیستمعاملی را به نام PLATO توسعه دادند که در آن از صفحه نمایشهایی با پنل پلاسما و شبکههای اشتراک زمانی با فاصله زیاد استفاده میشد. سیستم عامل Plato برای زمان خودش بسیار خلاقانه بود و در آن قابلیتهایی برای گفتگوی آنلاین و بازیهای گرافیکی چندکاربره ارائه شده بودند.
سیستم عامل MCP برای کامپیوتر B5000
در سال ۱۹۶۱ شرکت Burroughs محصول B5000 را معرفی کرد که دارای سیستم عاملی به نام MCP (برنامه ارشد کنترل | Master Control Program) بود. B5000 یک ماشین پشتهای بود که بهطور خاص برای پشتیبانی از زبانهای برنامه نویسی سطح بالای بدون اسمبلر طراحی شده بود. در واقع MCP اولین سیستم عاملی بود که بهطور ویژه با یک زبان برنامه نویسی سطح بالا (یعنی ESPOL که گونهای از ALGOL به حساب میآید) توسعه داده شده است.
علاوه بر این، بسیاری از سایر نوآوریهای پیشگامانه دیگر نیز به واسطه سیستم عامل MCP معرفی شدهاند. از جمله این نوآوریها میتوان به اولین پیادهسازی تجاری از «حافظه مجازی» (Virtual Memory) اشاره کرد. در حین توسعه AS/400، شرکت IBM با شرکت Burroughs برای دریافت مجوز جهت اجرای MCP روی سختافزار AS/400 وارد مذاکره شد. مدیریت شرکت Burroughs این پیشنهاد را نپذیرفت تا از تولید سخت افزار فعلی خود محافظت کند. امروزه در تولید کامپیوترهای رده MCP/ClearPath شرکت یونیسیس همچنان از سیستم عامل MCP استفاده میشود.
تاریخچه سیستم عامل های Mainframe در دهه ۷۰ میلادی
اولین تولید کننده کامپیوترهای تجاری یعنی شرکت UNIVAC، مجموعهای از سیستمعاملهای EXEC را تولید کرده است. درست مثل تمام سیستمهای MainFrame اولیه، در این سیستم مبتنی بر پردازش دستهای نیز امکان مدیریت حافظههای طبلهای مغناطیسی (Magnetic Drum)، دیسکها، کارتخوانها و پرینترهای خطی (Line Printer) وجود داشت. در دهه ۷۰ میلادی، UNIVAC «سیستم بلادرنگ پایه» (Real-Time Basic | RTB) را برای پشتیبانی از اشتراک زمانی در سطح وسیع ارائه کرد که در ساخت این سیستم هم از Dartmouth BC الگو گرفته شده بود.
در این دوران شرکت جنرال الکتریک هم سیستم عاملی به نام «ناظر عملیات همهجانبه جنرال الکتریک» (General Electric Comprehensive Operating Supervisor) را توسعه داد که به اختصار GECOS خطاب میشود. این سیستم عامل در درجه اول از پردازش دستهای پشتیبانی میکند. پس از تصاحب آن توسط شرکت Honeywell، نام این سیستم عامل به «سیستم عامل عمومی همهجانبه» (General Comprehensive Operating System) یا به اختصار GCOS تغییر داده شد. شرکتهای Bell Labs، جنرال الکتریک و MIT «سرویس چندبرابری اطلاعات و محاسبات» (Multiplexed Information and Computing Service) یا به اختصار Multics را توسعه دادند که مفهوم «سطوح امتیاز امنیتی حلقهای» به واسطه آن معرفی شده است.
«شرکت تجهیزات دیجیتال» (Digital Equipment Corporation) سیستمعاملهای بسیاری را برای خطهای تولید کامپیوترهای مختلف خود توسعه داده است که از جمله میتوان به TOPS-20 ،TOPS-10 و سیستمهای اشتراک زمانی برای سیستمهای رده PDP-10 شانزده بیتی اشاره کرد. پیش از استفاده گسترده از یونیکس (UNIX)، سیستم عامل TOPS-10 در دانشگاهها و جامعه اولیه آرپانت (ARPANET) بسیار پراستفاده و محبوب بود. RT-11 سیستمعاملی تککاربری و بلادرنگ برای رده مینیکامپیوتر PDP-11 به حساب میآمد و RSX-11 نیز سیستم عامل چندکاربرده متناظر آن محسوب میشود.
از اواخر دهه ۶۰ میلادی تا اواخر دهه ۷۰، قابلیتهای سختافزاری زیادی بوجود آمدند که اجازه میدادند نرم افزارهای یکسان یا انتقال یافته روی بیش از یک سیستم اجرا شوند. سیستمهای اولیه از «ریزبرنامهنویسی» (Microprogramming) برای پیادهسازی قابلیتهای خاصی روی سیستمهای خود استفاده میکردند تا این امکان بهوجود بیاید که معماریهای اساسی کامپیوتری دقیقاً شبیه به سایرین در یک سری ظاهر شوند.
در واقع اکثر سریهای 360 بعد از 360/40 (به غیر از 360/44، 360/75، 360/95 و 360/195) پیادهسازیهایی از نوع ریزبرنامهنویسی شده به حساب میآمدند. سرمایهگذاریهای متعددی که در زمینه نرم افزار برای این سیستمها از دهه ۶۰ میلادی صورت گرفت، باعث شد تولیدکنندگان به توسعه سیستمعاملهای سازگار به همراه سختافزارهای خود ادامه دهند.
روند پیشرفت سیستم عامل برای میکرو کامپیوترها
اولین میکروکامپیوترها (ریزکامپیوترها) ظرفیت یا نیاز به سیستمعاملهای پیشرفتهای را که برای کامپیوترهای Mainframe و مینیکامپیوترها توسعه داده شده بودند را نداشتند. سیستمعاملهای مینیمالیستی که توسعه داده شده بودند اغلب از ROM بارگذاری میشدند و به عنوان «ناظر» (Monitor) شناخته میشدند.
یکی از سیستمعاملهای دیسکی اولیه قابل توجه، CP/M نام دارد که در بسیاری از میکروکامپیوترهای اولیه پشتیبانی میشد و در ساخت آن به میزان زیادی از سیستم عامل MS-DOS مایکروسافت تقلید شده بود؛ این سیستم عامل به عنوان سیستم انتخاب شده برای IBM PC به میزان زیادی محبوبیت پیدا کرده بود (نسخه IBM آن IBM DOS یا PC DOS خطاب میشد).
شروع پیدایش سیستم عامل های مطرح کنونی
در دهه ۸۰ میلادی شرکت اپل کامپیوتر (که اکنون به آن شرکت اپل میگویند)، سریهای محبوب میکروکامپیوترهای Apple II خود را برای معرفی کامپیوتر مکینتاش اپل کنار گذاشتند. مکینتاش دارای رابط کاربری گرافیکی نوآورانهای بود.
معرفی چیپ پردازنده اینتل 80386 در مهرماه ۱۳۶۴ خورشیدی (اکتبر 1985) با معماری ۳۲ بیتی و امکان مدیریت حافظه صفحهبندی شده (Paging)، قابلیت اجرای سیستمعاملهای دارای امکان چندوظیفگی شبیه به مینیکامپیوترها و Mainframeها را برای کامپیوترهای شخصی فراهم کرده است. شرکت مایکروسافت با استخدام «دیوید کاتلر» (Dave Cutler) به این پیشرفت واکنش نشان داد. آقای کاتلر سیستم عامل VMS را برای شرکت تجهیزات دیجیتال توسعه داده بود. کاتلر توسعه ویندوز NT را رهبری میکند، که به عنوان پایه و اساس خط تولید تمام سیستمعاملهای شرکت مایکروسافت به حساب میآید.
منشا سیستم عامل macOS
استیو جابز همبنیاینگذار شرکت اپل، شرکت کامپیوتری NeXT را بنیانگذاری کرد. این شرکت سیستم عاملی به نام NEXTSTEP را توسعه داده است. سیستم عامل NEXTSTEP بعدها توسط شرکت اپل تصاحب شد و به همراه کدهای FreeBSD به عنوان هسته مک OS X (که بعدها نامش به macOS تغییر داده شد) مورد استفاده قرار گرفت.
پیدایش سیستم عامل لینوکس
پروژه GNU (گنو) به وسیله «ریچارد استالمن» (Richard Stallman) برنامه نویس و فعال حوزه کامپیوتر با هدف ایجاد نرمافزاری جایگزین و کاملاً رایگان برای سیستم عامل اختصاصی یونیکس آغاز شد. با وجود اینکه این پروژه به میزان زیادی در ۲ برابر کردن قابلیتهای عملکردی بخشهای مختلف یونیکس موفقیتآمیز بود، ثابت شد که توسعه «گنو هرد» (GNU Hurd) بیحاصل و غیرمولد بوده است. در سال ۱۹۹۱ میلادی (۱۳۷۰ خورشیدی)، دانشجوی فنلاندی علوم کامپیوتر به نام «لینوس توروالدز» (Linus Torvalds) با همکاری داوطلبانی که از طریق اینترنت همکاری میکردند، اولین نسخه «هسته لینوکس» (Linux Kernel) را منتشر کرد.
پس از چندی هسته لینوکس با اجزای فضای کاربری و نرمافزار سیستم گنو ترکیب شد تا در نهایت سیستمعاملی کامل شکل بگیرد. از آن زمان، ترکیب این دو بخش اصلی معمولاً توسط صنعت نرم افزار به سادگی همان «لینوکس» (Linux) خطاب میشود. البته توافق بر سر این نام چیزی است که استالمن و بنیاد نرم افزار آزاد همچنان با آن مخالف هستند و نام «GNU/Linux» را ترجیح میدهند.
سیستم عامل BSD
توزیع نرمافزاری برکلی (Berkeley Software Distribution) که با سرنام BSD شناخته میشود، مشتق شده از یونیکس به حساب میآید که توسط دانشگاه کالیفرنیا، برکلی در اوایل دهه ۷۰ میلادی توزیع شده است. این سیستم عامل بهطور رایگان در بسیاری از مینیکامپیوترها توزیع شد و پس از آن هم برای استفاده در کامپیوتریهای شخصی (PCها) با نامهای NetBSD، FreeBSD و OpenBSD به کار گرفته شد.
نمونه هایی از سیستم عامل های مختلف
در این بخش رایجترین و محبوبترین سیستمعاملهای موجود معرفی شدهاند.
سیستم عامل یونیکس و یونیکس مانند
سیستم عامل یونیکس در اصل به زبان اسمبلی نوشته شده است. «کِن تامسون» (Ken Thompson) زبان B را براساس تجربهاش در پروژه MULTICS نوشته که در اصل مبتنیبر زبان BCPL است. سپس زبان B با زبان برنامه نویسی C جایگزین و پس از آن هم یونیکس به زبان C بازنویسی شد. این بازنویسی یونیکس را به خانوادهای بزرگ و پیچیده از سیستم عاملهایی بدل کرد تاثیر عمیقی در توسعه هر یک از سیستمعاملهای امروزی داشته است.
خانواده سیستمعاملهای «یونیکسمانند» (UNIX-like) گروهی متنوع از سیستمهای عامل به حساب میآید که دارای زیرمجموعههای اصلی بسیاری است که از جمله آنها میتوان به BSD ،System V و لینوکس اشاره کرد. نام «یونیکس» (UNIX) علامت تجاری «The Open Group» (گروه آزاد) به حساب میآید. این گروه گواهینامه یونیکس را برای استفاده با هر سیستم عاملی ارائه میدهد که ثابت شده است با تعاریف آنها مطابقت دارد. اصطلاح «UNIX-like» (یونیکسمانند) بهطور رایجی برای اشاره به مجموعه بزرگی از سیستمعاملهایی به کار میرود که شبیه به یونیکس اصلی هستند.
سیستمهای یونیکسمانند روی طیف وسیعی از انواع معماریهای مختلف کامپیوتری قابل اجرا هستند. از آنها به میزان گستردهای برای سرورها در کسب و کارهای مختلف استفاده میشود و همچنین آنها را در ایستگاههای کاری (Workstation) محیطهای آکادمیک و مهندسی بهطور گستردهای بهکار میگیرند. گونههای رایگان یونیکس مثل لینوکس و BSD در این حوزهها بسیار محبوب هستند.
یونیکسی بودن ۵ سیستم عامل به وسیله گروه آزاد (دارنده نشان تجاری یونیکس) تایید و گواهی شده است. سیستم عامل HP-UX متعلق به شرکت HP و سیستم عامل AIX مربوط به شرکت IBM هر دو از نسل سیستم اصلی V Unix هستند و تنها با این هدف طراحی شدهاند که روی سختافزار تولید شده توسط شرکت سازندهشان اجرا شوند. برخلاف آن، سیستم عامل ساخته شده توسط شرکت سان مایکروسیستمز به نام سولاریس (Solaris) میتواند روی چندین نوع از سیستمها اجرا شود که از جمله آنها میتوان به کامپیوترهای x86، سرورهای اسپارک و PCها اشاره کرد.
مک OS شرکت اپل که جایگزینی برای سیستمعاملهای اولیه غیر لینوکسی اپل به حساب میآید گونهای ترکیبی مبتنیبر هسته از سیستم عامل BSD به حساب میآید که از Mach ،NEXTSTEP و FreeBSD مشتق شده است. کارکردپذیری مشترک یونیکس با ایجاد استاندارد POSIX دنبال شد. استاندارد POSIX را به هنر نو سیستم عاملی اعمال کرد، اگرچه این سیستم عامل در اصل برای گونههای مختلف سیستم عامل یونیکس ایجاد شده است.
سیستم عامل BSD و نسل های مختلف آن
خانواده «توزیع نرمافزاری برکلی» (Berkeley Software Distribution) یا همان BSD زیرمجموعهای از خانواده یونیکس به حساب میآید که شامل نسخههای زیر میشود:
- FreeBSD
- NetBSD
- OpenBSD
سیستمعاملهای فوق معمولاً بهطور رایج در وب سرورها یافت میشوند. اگرچه همچنان میتوان از آنها به عنوان سیستم عامل مخصوص کامپیوترهای شخصی هم استفاده کرد. پیدایش اینترنت به میزان زیادی وابسته به BSD است، چرا که بسیاری از پروتکلهایی که امروزه به وسیله کامپیوترها برای متصل شدن استفاده میشوند، دادهها را از طریق شبکهای ارسال و دریافت میکنند که بهطور گستردهای در BSD پیادهسازی و بهینهسازی شده است. علاوه بر این، تارنمای جهانگستر (World Wide Web | WWW) نیز ابتدا روی تعدادی از کامپیوترهایی تشریح شده است که مبتنی بر BSD بودهاند و سیستم عامل مورد استفاده در آنها NEXTSTEP نام داشته است.
در سال ۱۳۵۳ خورشیدی (۱۹۷۴ میلادی) در دانشگاه کالیفرنیا، برکلی اولین سیستم یونیکسی راهاندازی شد و در طول زمان دانشجویان و کارکنان بخش علوم کامپیوتر آنجا شروع به افزودن برنامههای جدید کردند تا فرایندها را سادهتر کنند و مثلاً ویرایشگرهای متن را ساختند. زمانی که برکلی کامپیوترهای جدید VAX را در سال ۱۹۷۸ به همراه یونیکس نصب شده روی آنها دریافت کرد، دانشجویان مقطع کارشناسی در این دانشگاه بیش از پیش این بار تغییراتی را روی یونیکس به وجود آوردند تا بتوانند از قابلیتهای سخت افزاری این کامپیوترها نهایت بهره را ببرند. آژانس پروژههای پژوهشی پیشرفتهٔ دفاعی (دارپا) در وزارت دفاع به این موضوع علاقه نشان داد و تصمیم به سرمایهگذاری روی این پروژه گرفت.
بسیاری از مدارس، شرکتهای تجاری و سازمانهای دولتی نیز به این ابداعات توجه نشان دادند و به جای نسخه رسمی توزیع شده توسط AT&T، شروع به استفاده از نسخه یونیکس تغییر داده شده توسط برکلی کردند. استیو جابز پس از ترک شرکت اپل در سال ۱۹۸۵ شرکت NeXT را تاسیس کرد، شرکتی که کامپیوترهای سطح بالا تولید میکرد. روی این کامپیوترها گونه خاصی از BSD به نام NeXTSTEP اجرا میشد. یکی از این کامپیوترها بهوسیله تیم برنرز لی (Tim Berners-Lee) به عنوان اولین وبسرور برای خلق تارنمای جهانگستر به کار گرفته شد.
توسعه دهندگانی مثل «کیث باستیک» (Keith Bostic) از پروژهای پشتیبانی کردند که در آن تمام کدهای غیر رایگانی جایگزین شوند که از آزمایشگاههای Bell سرچشمه میگرفتند. پس از انجام این کار، شرکت AT&T شکایت کرد. پس از ۲ سال دعوای حقوقی، چندین نسخه مشتق شده با استفاده از پروژه BSD ایجاد شدند که از جمله آنها میتوان به NetBSD و FreeBSD هر دو در سال ۱۹۹۳ و OpenBSD (مشتق شده از NetBSD) اشاره کرد.
سیستم عامل مک چیست ؟
سیستم عامل مک یا درواقع همان macOS که در گذشته «Mac OS X» نام داشت، ردهای از سیستمعاملهای «هسته-باز» (Open Core) گرافیکی به حساب میآید که توسعه، بازاریابی و فروش آنها به وسیله شرکت اپل انجام شده است. بهروزترین نسخههای سیستم عامل مک OS در حال حاضر به همراه کامپیوترهای مک به بازار عرضه میشوند. macOS جانشین سیستم عامل اصلی و کلاسیک mac OS به حساب میآید که از سال ۱۹۸۴ به عنوان سیستم عامل اصلی شرکت اپل شناخته میشد.
برخلاف همتای پیشین خود، macOS سیستمعاملی یونیکسی است که براساس فناوری توسعه داده شده توسط شرکت NeXT در طول نیمه دوم دهه ۸۰ و زمانی ساخته شد که اپل شرکت NeXT را در اوایل سال ۱۹۹۷ خریداری کرد. این سیستم عامل اولین بار در سال ۱۹۹۹ با نام «Mac OS X Server 1.0» منتشر شد. به دنبال آن در ماه مارس سال ۲۰۰۱ نسخه کلاینتی آن با نام «Mac OS X v10.0 Cheetah» به بازار عرضه شد. از آن زمان، ۶ نسخه کلاینتی و سروری از macOS منتشر شد تا اینکه هر دوی آنها در نسخه «OS X 10.7 Lion» با یکدیگر ادغام شدند.
پیش از ادغام آن با macOS، نسخه مبتنی بر سرور این سیستم عامل یعنی macOS Server به لحاظ معماری دقیقاً مطابق با همتای دسکتاپی خود بود و معمولاً روی سخت افزار سروری سری مکینتاش اپل اجرا میشد. سیستم عامل macOS Server شامل مدیریت گروههای کاری و ابزارهای نرمافزاری مدیریت نرم افزار میشد که دسترسی سادهسازی شده را برای خدمات کلیدی شبکه فراهم میکرد. از جمله این خدمات کلیدی میتوان به موارد زیر اشاره کرد:
- عامل انتقال ایمیل (Mail Transfer Agent)
- سرور سامبا (Samba Server)
- سرور LDAP (مخفف: پروتکل کمحجم دسترسی دایرکتوری)
- سرور نام دامنه (Domain Name Server)
- سایر موارد
در Mac OS X نسخه ۱۰.۷ به نام Lion تمام جنبههای مربوط به سرور سیستم عامل Mac OS X Server با نسخه کلاینت آن ادغام شده است و برند این محصول به «OS X» تغییر داده شد (در واقع کلمه Mac از نام آن حذف شده است). ابزارهای مربوط به سرور در این سیستم عامل اکنون به عنوان یک اپلیکیشن ارائه میشوند.
سیستم عامل لینوکس چیست ؟
ظهور هسته لینوکس به سال ۱۹۹۱ باز میگردد؛ هسته لینوکس در واقع پروژه لینوس توروالدز (Linus Torvalds) در زمان دانشجویی او در فنلاند به حساب میآید. او اطلاعاتی را درباره پروژه خود در یک گروه خبری مربوط به دانشجویان و برنامه نویسان کامپیوتر ارسال کرد و به این وسیله از جانب داوطلبان پشتیبانی و کمکهایی را دریافت کرد و در نهایت آنها موفق به ساخت یک هسته (کرنل | Kernel) کامل و کارآمد شدند.
لینوکس سیستمعاملی یونیکسمانند (UNIX-like) به حساب میآید، اما این سیستم عامل برخلاف BSD و گونههای آن، بدون هیچ کد یونیکسی توسعه داده شده است. به دلیل مدل مجوز آزاد بودنش، کدهای هسته لینوکس برای یادگیری و تغییر در دسترس هستند؛ این مسئله باعث شده است که از لینوکس در سطح وسیعی از دستگاههای مختلف از ابَرکامپیوترها گرفته تا ساعتهای هوشمند استفاده شود.
اگرچه، برآوردها نشان میدهند که لینوکس تنها روی ۱.۸۲ درصد از تمام کامپیوترهای شخصی دسکتاپ یا لپتاپها مورد استفاده قرار میگیرد؛ اگرچه، لینوکس به میزان وسیعی در سرورها و سیستمهای تعبیه شده نظیر گوشیهای موبایل مورد استفاده قرار میگیرد. لینوکس در بسیاری از پلتفرمها جایگزین یونیکس شده است و در اکثر ابَرکامپیوترها (شامل برترین آنها) از لینوکس استفاده میشود. علاوه بر این از لینوکس به طور رایج در سایر کامپیوترهای کممصرف نظیر گوشیهای هوشمند و ساعتهای هوشمند نیز استفاده میشود. هسته لینوکس در برخی از توزیعهای محبوب مورد استفاده قرار گرفته است. برخی از این توزیعها در ادامه فهرست شدهاند:
- Red Hat
- Debian
- Ubuntu
- Linux Mint
- سیستم عامل اندروید گوگل
- سیستم عامل کروم (Chrome OS)
- Chromium OS
سیستم عامل ویندوز چیست؟
مایکروسافت ویندوز (Microsoft Windwos) خانوادهای از سیستمعاملها است که توسط شرکت مایکروسافت طراحی شده و در درجه اول، کامپیوترهای مبتنی بر معماری اینتل را هدف قرار داده است. سهم استفاده از ویندوز در کامپیوترهای متصل به وب بالغ بر ۸۸.۹ درصد تخمین زده میشود. آخرین نسخه ویندوز ارائه شده توسط مایکروسافت در سال ۱۴۰۱ ویندوز ۱۱ است. در سال ۲۰۱۱ میلادی، ویندوز ۷ به عنوان رایجترین نسخه مورد استفاده از ویندوز XP پیشی گرفت.
مایکروسافت ویندوز اولین بار در سال ۱۹۸۵ به عنوان محیطی عملیاتی که منتشر شد که بر پایه MS-DOS اجرا میشد. MS-DOS سیستم عامل استانداردی بود که به همراه اکثر کامپیوترهای شخصی با معماری اینتل در آن زمان ارائه میشد.ک در سال ۱۹۹۵، ویندوز ۹۵ عرضه شد که تنها از MS-DOS به عنوان «خود راهانداز» (Bootstrap) استفاده میکرد. برای سازگاری با نسخههای قبلی، در Win9x امکان اجرای MS-DOS حالت واقعی و درایورهای ۱۶ بیتی ویندوز 3.x وجود داشت.
در سال ۲۰۰ ویندوز ME منتشر شد که آخرین نسخه از خانواده Win9x به حساب میآید. نسخههای بعدی ویندوز همگی مبتنیبر هسته ویندوز NT بودند. نسخههای کلاینتی فعلی ویندوز روی ریزپردازندههای x86-64 ،IA-32 و ARM اجرا میشوند. علاوه بر این، ریزپردازنده ایتانیوم (Itanium) همچنان در نسخه سروری Windows Server 2008 R2 پشتیبانی میشود. در گذشته معماریهای دیگری هم در ویندوز NT پشتیبانی میشدند.
نسخههای مبتنی بر سرور ویندوز نیز به میزان زیادی مورد استفاده قرار میگیرند. اگرچه، استفاده از ویندوز در سرورها به اندازه کامپیوترهای شخصی گسترده نیست، اما به هر حال ویندوز در خصوص سهم بازار سرورها با لینوکس و BSD در رقابت است.
ReactOS سیستم عامل جایگزین ویندوز به حساب میآید که بر اساس اصول و قواعد ویندوز و بدون استفاده از حتی یک خط از کدهای ویندوز در حال توسعه است.
سایر سیستم عامل ها
سیستمعاملهای دیگری هم هستند که در زمان خودشان بسیار قابل توجه بودهاند، اما در زمان حال دیگر از آنها استفاده نمیشود و کاربردی ندارند. از جمله این سیستمهای عامل ميتوان به موارد زیر اشاره کرد:
- AmigaOS
- OS/2 ساخته شده توسط IBM و مایکروسافت
- Mac OS کلاسیک
- نسخه غیر یونیکسی پیشگام macOS اپل
- BeOS
- XTS-300
- RISC OS
- MorphOS
- Haiku
- FreeMint
برخی از این سیستمعاملها همچنان در بازارهای کوچک به کار گرفته میشوند و به عنوان پلتفرمهای اقلیت برای اجتماعهایی از علاقهمندان و همچنین کاربردهای تخصصی مورد استفاده قرار میگیرند.
سیستم عامل OpenVMS که در گذشته از طرف شرکت DEC (شرکت تجهیزات آزاد) عرضه میشد، همچنان تحت توسعه فعال توسط شرکت نرمافزاری VMS است. اما، سایر این سیستمعاملها تقریباً به طور انحصاری در دانشگاهها، برای آموزش سیستمعاملها یا انجام تحقیقات در مورد مفاهیم سیستم عامل استفاده استفاده میشوند.
به عنوان نمونهای رایج از سیستمعاملی که در هر دو حوزه به کار گرفته میشود، میتوان «مینیکس» (MINIX) را نام برد؛ در حالی که برای مثال سیستم عامل Singularity صرفاً برای انجام تحقیقات استفاده میشود.
سیستم عامل Oberon
به عنوان مثالی دیگر میتوان سیستم عامل Oberon را نام برد که در مؤسسه فناوری فدرال زوریخ توسط Jürg Gutknecht Niklaus Wirth و گروهی از دانشجویان در موسسه سیستمهای کامپیوتری سابق در دهه ۸۰ میلادی طراحی شده است. این سیستم عامل بیشتر برای انجام تحقیقات، تدریس و کارهای روزانه در گروه آقای Wirth مورد استفاده قرار میگرفت.
سایر سیستمعاملها در بدست آوردن سهم قابل توجهی از بازار شکست خوردند، اما نوآوریهایی به وسیله آنها ارائه شده است که سیستمعاملهای جریان اصلی را تحت تاثیر قرار دادهاند. برای مثال در این خصوص میتوان سیستم عامل Plan 9 آزمایشگاههای Bell را نام برد.
اجزای سیستم عامل چیست ؟
اجزای سیستم عامل همگی برای این هدف ایجاد میشوند که بخشهای مختلف کامپیوتر به طور هماهنگ با یکدیگر کار کنند. همه نرم افزارهای کاربران باید برای استفاده از هر کدام از سخت افزارهای کامپیوتر از سیستم عامل عبور کنند؛ چه مواردی ساده مثل ماوس یا صفحهکلید و چه موارد پیچیدهای مثل یک جزء اینترنتی، همگی تحت مدیریت سیستم عامل هستند.
هسته سیستم عامل چیست ؟
با کمک سفتافزارها (Firmware) و راهاندازهای (درایورهای) دستگاهها، هسته سیستم عامل ابتداییترین و اساسیترین سطح کنترل را بر روی تمام دستگاههای سخت افزاری فراهم میکند. مدیریت دسترسی به حافظه برای برنامهها در RAM به وسیله هسته سیستم عامل انجام میشود. همچنین به وسیله هسته سیستم عامل مشخص میشود که کدام برنامهها امکان دسترسی به کدام منابع سخت افزاری را دارند.
هسته سیستم عامل وضعیتهای عملیاتی پردازنده مرکزی را برای عملکرد بهینه در تمام اوقات راهاندازی میکند؛ همچنین وظیفه سازماندهی دادهها در حافظه غیرفرار با سیستمهای فایل در رسانههایی مثل دیسکها، نوارها، حافظههای فلش و سایر موارد نیز عهده هسته سیستم عامل است.
اجرای برنامه ها در سیستم عامل چگونه است؟
سیستم عامل واسطی را میان یک برنامه کاربردی و سخت افزار کامپیوتر فراهم میکند تا امکان تعامل با سخت افزار به وسیله برنامه کاربردی تنها با دنبالهروی از قوانین و دستورالعملهای برنامه نویسی شده در سیستم عامل فراهم شود. علاوه بر این سیستم عامل مجموعهای از خدمات به حساب میآید که کار توسعه و اجرای برنامههای کاربردی را سادهتر میکنند. اجرای یک برنامه کاربردی معمولاً شامل ایجاد پردازهای به وسیله هسته سیستم عامل میشود که فضای حافظه و سایر منابع را تخصیص میدهد.
همچنین اجرای برنامههای کاربردی موارد دیگری از جمله تعیین اولویتی برای یک پردازه در سیستمهای چند وظیفهای و آغاز اجرای برنامه کاربردی را شامل میشود و پس از اجرا هم تعامل با کاربر و دستگاههای سخت افزاری صورت میگیرد. اگرچه در برخی از سیستمها یک اپلیکیشن میتواند درخواست داشته باشد که سیستم عامل اپلیکیشن دیگری را داخل همان پردازش یا به عنوان یک زیر روال یا در یک نخ متفاوت اجرا کند.
وقفه در سیسستم عامل چیست ؟
وقفه روشی بهینه را برای اکثر سیستمعاملها فراهم میکند تا به محیط واکنش نشان دهند. وقفهها باعث میشوند که واحد پردازش مرکزی (CPU) تغییر در جریان کنترلی را از برنامه فعلی در حال اجرا به «کنترل کننده وقفه» (Interrupt Handler) انجام دهد. کنترل کننده وقفه با عنوان «روال خدمات وقفه» (Interrupt Service Routine | ISR) هم شناخته میشود.
ممکن است یک روال خدمات وقفه باعث شود که واحد پردازنده مرکزی «تعویض زمینه» (Context Switch) داشته باشد. جزئیات مربوط به نحوه پردازش وقفهها در معماریهای مختلف کامپیوتر متفاوت است. همچنین جزئیات نحوه رفتار روالهای خدمات وقفه نیز در سیستمعاملهای مختلف یکسان نیستند. اگرچه، بسیاری از کارکردهای وقفهها یکسان و مشترک هستند. معماری و سیستم عامل باید:
- کنترل را به یک روال خدمات وقفه انتقال دهد.
- وضعیت پردازش در حال اجرای فعلی را ذخیره کند.
- پس از خدمترسانی به وقفه، باید وضعیت قبلی بازیابی شود.
وقفه نرم افزاری در سیستم عامل چیست ؟
وقفه نرمافزاری پیامی به یک پردازه به حساب میآید مبنی بر اینکه رویدادی رخ داده است. انتظار میرود که یک بُرش زمانی رخ دهد، بنابراین هسته سیستم عامل ملزم خواهد بود تا یک تعویض زمینه را انجام دهد. یک برنامه کامپیوتری ممکن است زمانسنجی را تنظیم کند تا اگر دادههای زیاد باعث طولانی شدن اجرای یک الگوریتم شدند، این زمانسنج پس از چند ثانیه فعال و برنامه متوقف شود
وقفههای نرمافزاری ممکن است شرایط خطایی مثل دستورالعملهای ناهنجار باشند. اگرچه، رایجترین شرایط بروز خطا، تقسیم بر صفر و دسترسی به نشانی حافظه اشتباه به حساب میآیند. کاربران میتوانند برای تغییر رفتار پردازهای که در آن لحظه در حال اجرا است پیامهایی را به هسته سیستم عامل ارسال کنند. برای مثال در محیط خط فرمان فشردن کاراکتر وقفه (معمولاً کلیدهای ترکیبی Ctrl + C) ممکن است پردازه فعلی در حال اجرا را متوقف کند.
برای تولید وقفههای نرمافزاری برای پردازندههای ۳۲ بیتی (x86)، دستورالعملهای INT زبان اسمبلی در دسترس هستند. سینتکس آن به صورت INT X است که در آنX مقدار فاصله میان یک مکان و مکان دیگر در حافظه کامپیوتر (شماره آفست | Offset Number) با فرمت هگزادسیمال در جدول بردار وقفه است.
مفهوم سیگنال در سیستم عامل چیست ؟
برای تولید وقفههای نرم افزاری در سیستمعاملهای یونیکسمانند، فراخوانی سیستمیkill(pid,signum) سیگنالی را به پردازه دیگر ارسال خواهد کرد.pidشناساننده فرایند در پردازه دریافت کننده است.signumهم شماره سیگنالی به حساب میآید که قرار است ارسال شود. نامگذاری نه چندان دلچسب دستورkillبه این دلیل انتخاب شده است که پیادهسازیهای اولیه تنها میتوانستند پردازه مربوطه را بهطور کامل از بین ببرند.
در سیستمعاملهای یونیکسمانند سیگنالها در خصوص وقوع رویدادهای ناهمزمان (آسنکرون) به پردازهها اطلاع میدهند. برای ارتباط غیرهمزمان نیاز به وقفه وجود دارد. یکی از دلایل اینکه یک پردازه نیاز دارد به صورت ناهمزمان با پردازه دیگر ارتباط برقرار کند این است یکی از گونههای خاص مسئله خواننده/نویسنده به این روش حل میشود.
نویسنده خط لولهای را از پوسته (Shell) برای خروجی خود جهت ارسال به جریان ورودی خواننده ارسال میکند. سینتکس خط فرمان مربوط به آن، alpha | bravo است. alpha زمانی در خط لوله مینویسد که محاسباتش آماده باشند و پس از آن هم در صف انتظار به خواب میرود. سپس bravo به صف آمادهها منتقل میشود و به زودی از جریان ورودی خود خواندن را انجام میدهد. هسته وقفههای نرم افزاری تولید خواهد کرد تا عملیات لولهکشی را هماهنگ کند. سیگنالها را میتوان به ۷ دسته تقسیمبندی کرد. در واقع سیگنالها در ۷ حالت مختلف صادر میشوند که این ۷ حالت در ادامه فهرست شدهاند:
- زمانی که پردازش به صورت عادی به اتمام میرسد.
- وقتی استثناء خطا در پردازش رخ میدهد.
- زمانی که منابع سیستمی یک پردازش تمام میشوند.
- وقتی پردازش دستورالعملی غیرقانونی را اجرا میکند.
- زمانی که پردازش یک رویداد هشدار را تنظیم میکند.
- وقتی پردازشی از طریق صفحه کلید متوقف میشود.
- زمانی که پردازش دارای هشدار ردیابی برای عیبیابی است.
وقفه سخت افزاری در سیستم عامل چیست ؟
دستگاههای ورودی-خروجی نسبت به سیگنال ساعت پردازنده مرکزی کندتر هستند. بنابراین اگر پردازنده مرکزی ناچار بود صبر کند تا عملیات ورودی-خروجی تمام شود، سرعت کامپیوتر به میزان زیادی کاهش پیدا میکرد. بنابراین راهکار جایگزین این است که برای تکمیل عملیات ورودی-خروجی در کامپیوتر از وقفه استفاده شود. این مسئله باعث میشود نیاز به همهپُرسی (Polling) یا مشغول به انتظار از بین برود.
برخی از کامپیوترها برای هر کاراکتر یا کلمه نیاز به وقفه دارند که این موضوع باعث میشود زمان پردازنده مرکزی به میزان زیادی مصرف شود. «دسترسی مستقیم به حافظه» (DMA | Direct Memory Access) یک قابلیتی معماری است که به دستگاهها اجازه میدهد تا CPU را دور بزنند و مستقیماً به حافظه اصلی دسترسی پیدا کنند. جدا از بحث معماری، یک دستگاه میتواند دسترسی مستقیم به حافظه را به و از حافظه اصلی یا بهطور مستقیم یا از طریق گذرگاه (Bus) انجام دهد.
از زمان Intel 8008 در سال ۱۹۷۲، اکثر پردازندههای مرکزی از طریق شناسههای وقفه (Interrupt Pin) وقفههای سخت افزاری دریافت میکنند. برای کامپیوترهای کوچک معمولاً کنترلکننده وقفه (APIC) روی مادربرد بین سوزنهای CPU و خطوط میانی گذرگاه نصب میشود. اگر دستگاهی نیاز به ایجاد وقفه در پردازنده مرکزی داشته باشد، ولتاژی (معمولاً ۵ ولت) را روی خط واسط گذرگاه خود در داخل گذرگاه داده قرار میدهد. این عدد اندیسی برای جدول بردار وقفه سیستم عامل به حساب میآید.
ورودی خروجی مبتنی بر وقفه چیست ؟
وقتی که کاربر کامپیوتر کلیدی را روی صفحه کلید میفشارد، معمولاً بلافاصله کاراکتر مربوطه روی صفحه ظاهر میشود. به همین شکل وقتی کاربری ماوس را حرکت میدهد، نشانگر بلافاصله در فضای صفحه نمایش جابجا میشود. هر عملیات فشردن کلیدهای صفحه کلید یا حرکت دادن ماوس وقفهای ایجاد میکند که به آن وقفه ورودی خروجی یا I/O مبتنی بر وقفه میگویند. یک وقفه مخصوص ورودی-خروجی زمانی اتفاق میافتد که پردازش خاصی باعث ایجاد وقفه برای هر کاراکتر یا کلمه منتقل شده شود.
دسترسی مستقیم حافظه در سیستم عامل چیست ؟
یک وقفه ورودی خروجی بلوکی زمانی رخ میدهد که یک پردازه بخواهد بلوکهای داده را ارسال یا دریافت کند. در صورتی که دستگاهی به عنوان دستگاه بلوکی تنظیم شده باشد، آنگاه وقفهای به دنبال هر یک از انتقالهای بلوکهای داده تولید خواهد شد. برای انجام این کار، یک چیپ دسترسی مستقیم حافظه روی مادربرد کامپیوتر نصب میشود.
این قطعه سختافزاری به دستگاهها امکان میدهد تا پردازنده را دور بزنند و مستقیماً به گذرگاه حافظه دسترسی پیدا کنند. اگر برنامهای کامپیوتری یک فراخوانی سیستمی را برای اجرای عملیات نوشتن ورودی-خروجی بلوکی انجام دهد، آنگاه فراخوانی سیستمی مربوطه دستورالعملهای زیر را اجرا خواهد کرد:
- تنظیم محتوای ثباتهای CPU (شامل شمارنده برنامه) در داخل بلوک کنترل پردازش
- ایجاد یک ورودی در جدول وضعیت دستگاه؛ سیستم عامل این جدول را نگهداری خواهد کرد تا اطلاعات لازم در خصوص اینکه کدام پردازشها برای کدام دستگاهها منتظر ماندهاند را در اختیار داشته باشد. یکی از فیلدهای داخل جدول مربوط به آدرس حافظه بلوک کنترل پردازه است.
- قرار دادن تمام کاراکترها برای ارسال به دستگاه داخل یک بافر حافظه.
- تنظیم آدرس حافظه در بافر حافظه روی «ثبات» (Register) یک دستگاه از پیش تعیین شده.
- تنظیم اندازه بافر (یک عدد صحیح) روی یک ثبات از پیش تعیین شده دیگر.
- اجرای دستورالعمل دستگاه برای شروع نوشتن در حافظه.
- اجرای تعویض زمینه به پردازه بعدی در صف آمادهها.
در حین رخداد عملیات نوشتن، سیستم عامل طبق معمول تعویض زمینه را به سایر پردازشها انجام خواهد داد. وقتی که دستگاه عملیات نوشتن را به اتمام میرساند، دستگاه به وسیله صدور یک درخواست وقفه در پردازش در حال اجرای فعلی وقفه ایجاد خواهد کرد. علاوه بر این دستگاه عدد صحیحی را در گذرگاه داده قرار خواهد داد. در طی پذیرش درخواست وقفه، سیستم عامل موارد زیر را انجام خواهد داد:
- محتوای «ثبات شمارنده برنامه» (Program Counter) را که به دنبال آن «ثبات وضعیت» (Status Register) میآید، روی «پشته فراخوانی» (Call Stack) قرار میدهد یا به اصطلاح «Push» میکند.
- محتوای سایر ثباتها را هم داخل پشته فراخوانی قرار میدهد (ممکن است به جای این کار محتوای ثباتها در یک جدول سیستم قرار داده شوند).
- باید خواندن عدد صحیح را از گذرگاه داده انجام دهد. این عدد صحیح، «آفسِتی» (Offset) برای جدول برداری وقفه است (آفست فاصله میان یک مکان و مکان دیگر در حافظه کامپیوتر است). سپس موارد زیر به وسیله دستورالعملهای جدول برداری انجام خواهند شد:
- دسترسی به جدول وضعیت دستگاه
- استخراج بلوک کنترل پردازش
- انجام تعویض زمینه و بازگشت به فرایند نوشتن
وقتی که «بُرش زمانی» پردازش نوشتن منقضی شد، سیستم عامل موارد زیر را انجام خواهد داد:
- عملیات برداشتن (Pop) از پشته فراخوانی را به غیر ثبات وضعیت و شمارنده برنامه انجام میدهد.
- ثبات وضعیت را از پشته فراخوانی برمیدارد.
- آدرس دستورالعملهای بعدی را از پشته فراخوانی برمیدارد و آن را دوباره در شمارنده برنامه قرار میدهد.
با توجه به اینکه اکنون شمارنده برنامه بازنشانی (Reset) شده است، پردازش متوقف شده بُرش زمانی خود را ادامه خواهد داد.
قطعه DMA روی دستگاه
جدای از معماری، برای اجرای دسترسی مستقیم حافظه معمولاً چیپ (قطعه) DMA روی یک دستگاه نصب میشود. کارهای انجام شده توسط دستگاه یا حافظه تحت حاکمیت SCSI RDMA قرار دارد.
حالت های مختلف سیستم عامل
کامپیوترهای امروزی از چندین حالت یا وضعیت (Mode) عملیاتی مختلف پشتیبانی میکنند. پردازندههایی که دارای این قابلیت هستند، حداقل ۲ حالت مختلف را ارائه میدهند:
- حالت کاربر (User)
- حالت سرپرست (Supervisor)
به بیان کلی، عملیات مربوط به حالت سرپرست به تمام منابع ماشین امکان دسترسی بدون محدودیت میدهد که این شامل تمام دستورالعملهای MPU میشود. عملیات حالت کاربر روی استفاده از دستورالعملها محدویدیتهایی را اعمال میکند و معمولاً در این حالت اجازه دسترسی مستقیم به منابع ماشین داده نمیشود.
ممکن است پردازندههای مرکزی حالتهای دیگری مشابه حالت کاربر هم داشته باشند که از جمله این حالتها میتوان به حالت مجازی اشاره کرد که برای شبیهسازی انواع قدیمیتر پردازندهها، نظیر شبیهسازی پردازندههای ۱۶ بیتی در انواع ۳۲ بیتی یا شبیهسازی پردازندههای ۲۳ بیتی روی ۶۴ بیتی استفاده میشوند.
در هنگام روشن شدن کامپیوتر یا بازنشانی آن، اجرای سیستم عامل با حالت سرپرست شروع میشود. پس از آنکه هسته یک سیستم عامل بارگذاری و راهاندازی میشود، میتوان مرز بین حالت سرپرست (که با نام حالت هستهای هم شناخته میشود) را تعیین کرد.
برای کارها و وظایف سطح پایین که نیاز به دسترسی نامحدود به سخت افزار دارند از حالت سرپرست استفاده میشود. از جمله این وظیفهها میتوان به کنترل چگونگی دسترسی به حافظه و برقراری ارتباط با دستگاههایی نظیر دیسک درایوها و دستگاههای نمایش ویدیو اشاره کرد. برخلاف آن، تقریباً برای تمام کارهای دیگر از حالت کاربر استفاده میشود. برنامههای کاربردی مثل پردازشگرهای متن و ابزارهای مدیریت پایگاه داده در حالت کاربر عمل میکنند.
این برنامهها تنها میتوانند با انتقال کنترل به هسته سیستم عامل به منابع ماشین دسترسی داشته باشند؛ این پردازشی است که باعث میشود تغییر حالت به وضعیت سرپرست اتفاق بیوفتد. معمولاً انتقال کنترل به کرنل به وسیله اجرای یک دستورالعمل وقفه نرم افزاری بدست میآید. وقفه نرم افزاری باعث میشود پردازنده از حالت کاربر به حالت سرپرست تغییر وضعیت دهد و شروع به اجرای کدهایی کند که به کرنل اجازه میدهند تا کنترل را بدست بگیرد.
در حالت کاربر، برنامهها معمولاً به مجموعه محدودی از دستورالعملهای پردازنده دسترسی دارند و بهطور کلی نمیتوانند هیچ نوع دستورالعملی را اجرا کنند که بتواند بهطور بالقوه در عملیات سیستم اختلال به وجود بیاورد. در حالت سرپرست، محدودیتهای اجرای دستورالعملها معمولاً برداشته میشوند که این به کرنل اجازه میدهد تا به تمام منابع ماشین دسترسی نامحدود داشته باشد.
اصطلاح «منبع حالت کاربر» (User Mode Resource) به یک یا بیش از یک ثبات CPU مربوط میشود که حاوی اطلاعاتی هستند که برنامه در حال اجرا اجازه تغییر آنها را ندارد. اقدام به تغییر این منابع معمولاً باعث تعویض حالت به وضعیت سرپرست میشود که در آنها سیستم عامل میتواند با عملیات غیرقانونی رسیدگی کند که برنامه سعی در انجامشان داشته است. برای مثال این رسیدگی میتواند به این صورت باشد که سیستم عامل به اجبار برنامه را متوقف کند و آن را ببندد.
مدیریت حافظه در سیستم عامل
علاوه بر موارد دیگر، یک هسته سیستم عامل با قابلیت چندبرنامهنویسی باید در قبال مدیریت کل حافظه سیستم که در لحظه توسط برنامهها در حال استفاده است از خود مسئولیت نشان دهد. این مسئله باعث کسب اطمینان از این موضوع میشود که برنامه در حافظهای که توسط برنامهای دیگر اشغال شده مداخله نکند. به دلیل اینکه برنامهها بهاشتراکگذاری زمان انجام میدهند، هر برنامه باید حتماً به حافظه دسترسی مستقل داشته باشد.
مدیریت حافظه مشارکتی که به وسیله بسیاری از سیستمعاملهای اولیه مورد استفاده قرار میگرفته است، اینطور در نظر میگیرند که تمام برنامهها مدیر حافظه هسته سیستم عامل را به صورت داوطلبانه به کار میگیرند و حافظه اختصاص داده شده به خودشان تجاوز نمیکنند. این سیستم از مدیریت حافظه تقریباً دیگر استفاده نمیشود، زیرا برنامهها اغلب دارای عیبهایی (باگهایی) هستند که میتواند باعث شود تا از حافظه اختصاصی خود تجاوز کنند. در صورت دچار مشکل شدن یک برنامه، ممکن است حافظه مورد استفاده توسط برنامه دیگر تحت تاثیر قرار بگیرد و روی دادههای قبلی دادههای جدید درج شوند.
برنامههای مخرب یا ویروسها ممکن است بهطور عمدی حافظه برنامه دیگری را دستکاری کنند یا ممکن است خود سیستم عامل را تحت تاثیر قرار دهند. در روش مدیریت حافظه به صورت اشتراکی، تنها وجود یک برنامه دارای سوء رفتار کافی است تا سیستم از کار بیوفتد و به اصطلاح Crash کند.
حفاظت از حافظه (Memory Protection) باعث میشود که کرنل دسترسی به یک پروسه را به حافظه کامپیوتر محدود کند. روشهای مختلفی برای حفاظت از حافظه وجود دارد که از جمله آنها میتوان «قطعهبندی حافظه» (Memory Segmentation) و «صفحهبندی» (paging) را مثال زد. تمام این روشها نیازمند سطحی از پشتیبانی سختافزاری هستند (مثل 80286 MMU) که در همه کامپیوترها وجود ندارد.
هم در قطعهبندی و هم در صفحهبندی، برخی از ثباتهای دارای حالت حفاظت شده برای پردازنده مرکزی مشخص میکنند که یک برنامه در حال اجرا به چه آدرس حافظهای دسترسی داشته باشد. تلاش برای دسترسی به آدرسهای دیگر باعث ایجاد یک وقفه خواهد شد که باعث میشود پردازنده مرکزی دوباره وارد حالت سرپرست شود و مسئولیت را به هسته بدهد.
به این رخداد نقض قطعهبندی (Segmentation Violation) یا به اختصار «Seg_V» میگویند. به دلیل اینکه هم تخصیص نتیجهای بامعنی به چنین عملیاتی دشوار است و هم به دلیل آنکه این مسئله نشانهای از برنامهای با رفتار نادرست است، هسته سیستم عامل معمولاً به متوقف کردن و بستن برنامه مشکلساز تن میدهد و خطا را هم گزارش میکند.
حافظه مجازی در سیستم عامل چیست ؟
استفاده از آدرسدهی مجازی حافظه (نظیر صفحهبندی یا قطعهبندی) به این معنا است که هسته سیستم عامل میتواند در این خصوص اختیار داشته باشد که هر برنامه در هر زمان از چه نوع حافظهای استفاده کند. این مسئله باعث میشود که سیستم عامل بتواند از موقعیتهای حافظه یکسانی برای چندین وظیفه استفاده کند.
اگر برنامهای سعی داشته باشد به حافظهای دسترسی پیدا کند که در محدوده حافظه در دسترسش نباشد اما بال این وجود این حافظه به آن اختصاص داده شده است، در هسته سیستم عامل به همان روشی وقفه ایجاد خواهد شد که گویی برنامه قرار است از حافظه اختصاصی خود تجاوز کند (برای درک بهتر این موضوع میتوان به بخش مدیریت حافظه یعنی بخش قبلی این مطلب مراجعه کرد). در سیستمهای تحت یونیکس به این نوع از وقفه خطای صفحه گفته میشود.
وقتی که هسته سیستم عامل خطای صفحهای را شناسایی کند، معمولاً محدوده حافظه مجازی برنامهای را تنظیم میکند که عامل آن خطا بوده است؛ به این وسیله دسترسی به حافظه درخواستی داده میشود. این رویکرد باعث میشود که هسته سیستم عامل قدرت و اختیار لازم را در این خصوص داشته باشد که بررسی کند حافظه یک برنامه خاص در کجا ذخیره شده یا حتی آیا واقعاً هنوز حافظهای اختصاص داده شده است یا خیر؟
معاوضه یا Swapping حافظه در سیستم عامل چیست ؟
در سیستمعاملهای امروزی، حافظهای که کمتر مورد دسترسی قرار میگیرد را میتوان موقتاً روی دیسک یا سایر محلها ذخیره کرد تا این فضا برای استفاده برنامههای دیگر در دسترس قرار بگیرد. به این عملیات «معاوضه کردن» (Swapping) گفته میشود که در آن میتوان از ناحیهای در حافظه را برای استفاده چندین برنامه به کار گرفت و آنچه که در داخل آن بخش از حافظه قرار دارد را میتوان بر اساس تقاضا جایگزین یا عوض و بدل کرد.
حافظه مجازی این دیدگاه را در برنامه نویس ایجاد میکند که مقدار فضای RAM بسیار بیشتری نسبت به آنچه واقعاً وجود دارد در اختیارش است.
انجام چند وظیفه یا Multitasking در سیستم عامل چیست ؟
انجام چند وظیفه یا همان «چندوظیفهای» (Multitasking) به اجرای چندین برنامه کامپیوتری مستقل در یک کامپیوتر یکسان گفته میشود. به دلیل اینکه اکثر کامپیوترها میتوانند در یک لحظه نهایتاً یک کار را انجام دهند، این روش یعنی Multitasking معمولاً از طریق اشتراک زمانی انجام میشود؛ این یعنی هر برنامه سهمی از زمان کامپیوتر را برای اجرا به کار میگیرد.
هسته یک سیستم عامل حاوی یک برنامه زمانبندی (Scheduling) است که به وسیله آن تعیین میشود هر پردازه چه مقدار زمان برای اجرا مصرف میکند و کنترل اجرا با چه ترتیبی باید به برنامهها اعطا شود. کنترل از طریق هسته سیستم عامل به یک پردازه اعطا میشود تا برنامه بتواند به پردازنده و حافظه دسترسی پیدا کند. پس از آن، کنترل از طریق ساز و کاری خاص بازگردانده میشود تا برنامهای دیگر بتواند اجازه استفاده از پردازنده مرکزی را بدست آورد.
این عملیات که در طی آن انتقال کنترل بین هسته سیستم عامل و برنامهها اتفاق میافتد، تعویض زمینه گفته میشود. به مدلی اولیه که تخصیص زمان به برنامهها از طریق آن مدیریت میشد، «چندوظیفهای اشتراکی» نام داشت. در این مدل، وقتی که کنترل به وسیله هسته سیستم عامل به یک برنامه انتقال داده میشد، میتوانست قبل از اینکه به طور مشخص کنترل را به هسته سیستم عامل بازگرداند تا زمانی که میخواست اجرا شود. این یعنی یک برنامه مخرب یا دچار مشکل نه تنها باعث میشد برنامههای دیگر نتوانند از پردازنده استفاده کنند، بلکه در صورت وارد شدن به یک حلقه بینهایت ممکن بود منجر به هنگ کردن کل سیستم شود.
سیستم عاملهای امروزی مفاهیم مربوط به «پیشاجرایی» (Preemption) را به درایورهای دستگاهها و کدهای کرنل بسط دادهاند تا سیستم عامل بتواند کنترل پیشاجرایی روی زمانهای اجرای داخلی را هم در اختیار داشته باشد.
فلسفه حاکم بر چندوظیفهای پیشاجرایی این است که اطمینان حاصل شود تا زمان CPU به تمام برنامهها مرتباً اعطا میشود. این بدان معنا است که تمام برنامهها باید در خصوص میزان زمانی محدود شوند که مجاز به استفاده بدون وقفه از پردازنده هستند. برای رسیدن به این مهم، هستههای امروزی سیستمعاملها از وقفه زمانبندی شده بهره میبرند. در این روش یک زمانسنج با حالت حفاظت شده به وسیله هسته سیستم عامل تنظیم میشود که بازگشت به حالت سرپرست را پس از زمان مشخص شده فعال میکند.
در بسیاری از سیستمعاملهای تککاربرده، چندوظیفهای مشارکتی کاملاً کفایت میکند، زیرا در کامپیوترهای خانگی معمولاً تعداد برنامههای به خوبی تست شده کمی اجرا میشوند. سیستم عامل AmigaOS در این خصوص یک استثناء به حساب میآید، چون در همان اولین نسخهاش از روش چندوظیفهای پیشاجرایی استفاده کرده است. Windows NT اولین نسخه از مایکروسافت ویندوز محسوب میشود که چندوظیفهای پیشاجرایی در آن اعمال شده است، اما این قابلیت تا نسخه ویندوز XP، به بازار کاربران خانگی نرسید (لازم به توضیح است که Windows NT برای افراد حرفهای ارائه شده بود).
دسترسی به دیسک و سیستم فایل در سیستم عامل
دسترسی به دادههای ذخیره شده روی دیسکها قابلیتی مرکزی و هستهای برای تمام سیستمهای عامل به حساب میآید. کامپیوترها دادهها را با استفاده از فایلها در دیسک ذخیره میکنند. فایلها به روشهای مختلفی ساختاردهی میشوند تا دسترسی سریعتر، خوانایی بیشتر و استفاده بهتر از فضای موجود حاصل شود.
روش خاصی که در آن فایلها روی دیسک ذخیره میشوند را «سیستم فایل» (File System) مینامند که باعث میشوند فایلها دارای نام و صفتهایی باشند. همچنین در یک سیستم فایل امکان ذخیرهسازی فایلها در سلسلهمراتبی از دایرکتوریها یا پوشههای ساماندهی شده در یک درخت دایرکتوری فراهم میشود.
سیستمعاملهای اولیه بهطور کلی تنها از یک نوع درایو دیسک پشتیبانی میکردند و تنها یک نوع سیستم فایل داشتند. سیستمهای فایل اولیه دارای ظرفیت، سرعت، نوع نام فایل و ساختارهای دایرکتوری محدودی بودند. این محدودیتها اغلب محدودیتهایی را در سیستمعاملهایی منعکس میکردند که برای آنها طراحی شده بودند و این باعث میشد پشتیبانی از بیش از ۲ سیستم فایل بسیار دشوار شود.
در حالی که بسیاری از سیستمعاملهای سادهتر بازه محدودی از انتخابها را برای دسترسی به سیستمهای ذخیرهسازی پشتیبانی میکنند، سیستمهای عاملی نظیر یونیکس و لینوکس فناوریای را پشتیبانی میکنند که با عنوان «سیستم فایل مجازی» (Virtual File System) یا VFS شناخته میشود.
سیستمعاملی مثل یونیکس آرایه وسیعی از دستگاههای ذخیرهسازی را فارق از طراحی آنها یا سیستمهای فایلشان پشتیبانی میکند که این به آنها اجازه میدهد تا از طریق رابط مشترک برنامه نویسی اپلیکیشن (API) قابل دسترسی باشند. این باعث میشود که داشتن اطلاعات لازم درباره دستگاهی که به آن دسترسی پیدا میکنند ضروری نباشد. VFS به سیستم عامل امکان میدهد دسترسی به تعداد نامحدودی از دستگاهها با انواع مختلف سیستمهای فایل نصب شده روی آنها از طریق استفاده از درایورهای خاص دستگاهها و درایورهای سیستم فایل داشته باشد.
دسترسی به یک دستگاه ذخیرهسازی متصل، مثل هارد درایو، از طریق درایور دستگاه حاصل میشود. درایور دستگاه زبان خاص درایو را درک میکند و میتواند برای دسترسی به تمام درایوهای دیسک، آن زبان را به زبانی استاندارد ترجمه کند که به وسیله سیستم عامل استفاده میشود. در یونیکس، این زبان دستگاههای بلوکی است.
وقتی که هسته درایور دستگاه مناسبی را در اختیار داشته باشد، سپس میتواند به محتوای درایو دیسکی در قالبی خام دسترسی پیدا کند که ممکن است حاوی یک یا بیش از یک سیستم فایل باشد. از یک درایو سیستم فایل جهت ترجمه دستورات مورد استفاده برای برقراری ارتباط با همه فایل سیستمها استفاده میشود.
بنابراین برنامهها میتوانند با این سیستمهای فایلی که در ساختاری سلسلهمراتبی قرار میگیرند بر پایه نام فایلها و پوشهها کار کنند آنها میتوانند فایلها را بسازند، پاک کنند، باز کنند و آنها را ببندند. همچنین برنامهها میتوانند اطلاعات مختلفی را درباره فایلها بدست آورند که شامل مجوزهای دسترسی، اندازه، فضای خالی و تاریخهای ایجاد و ویرایش میشوند.
تفاوتهای متعدد میان فایل سیستمها باعث میشود پشتیبانی از تمام آنها بسیار دشوار شود. کاراکترهای مجاز برای استفاده در نام فایلها، حساسیت به حروف بزرگ و کوچک و وجود انواع مختلف صفتهای فایلها، پیادهسازی یک واسط یا رابط واحد را برای تمام سیستمهای فایل تبدیل به کاری سخت و طاقتفرسا کرده است.
سیستمعاملها ترجیح میدهند توصیه کنند از سیستمهای فایل طراحی شده اختصاصی استفاده شود؛ برای مثال میتوان به سیستم فایل NTFS در ویندوز اشاره کرد.
درایورهای دستگاه ها در سیستم عامل
درایور یک دستگاه نوع خاصی از نرم افزار کامپیوتری است که برای فراهم کردن امکان تعامل با دستگاههای سخت افزاری توسعه داده میشود. معمولاً این مسئله واسطی را برای تعامل با دستگاه از طریق گذرگاه یا زیرسیستم مشخصی را در کامپیوتر شامل میشود که دستگاه مربوطه به آن متصل است و به این وسیله دستوراتی برای دریافت دادهها از دستگاه یا ارسال داده به آن در دسترس قرار میگیرند.
شبکه های کامپیوتری در سیستم های عامل
در حال حاضر اکثر سیستم عاملها تعداد زیادی از پروتکلهای شبکه، سخت افزارها و اپلیکیشنهایی را برای استفاده از آنها پشتیبانی میکنند. این یعنی کامپیوترهایی که هر کدام سیستم عامل متفاوتی را استفاده میکنند میتوانند در شبکه مشترکی برای بهاشتراکگذاری منابعی نظیر محاسبات، فایلها، پرینترها و اسکنرها با استفاده از اتصالهایی به صورت سیمی با بیسیم قرار بگیرند.
شبکههای کامپیوتری اساساً به سیستم عامل یک کامپیوتر امکان میدهند تا به منابع یک کامپیوتر راه دور برای پشتیبانی از عملکردهایی یکسان با آنچه دسترسی داشته باشد که خودش در صورت داشتن آن منابع میتوانست انجام دهد.
- مقاله پیشنهادی: انواع شبکه های کامپیوتری — راهنمای جامع
این شامل همه چیز از ارتباط آسان گرفته تا استفاده از سیستمهای فایل تحت شبکه یا حتی به اشتراکگذاری سخت افزارهای گرافیکی یا صوتی هم میشود. برخی از سرویسهای شبکه امکان دسترسی شفاف به منابع یک کامپیوتر را فراهم میکنند. مثلاً پروتکل SSH امکان دسترسی مستقیم به واسط خط فرمان یک کامپیوتر را برای کاربران شبکه فراهم میکند.
- مقاله پیشنهادی: راه اندازی SSH روی لینوکس — راهنمای جامع
امنیت در سیستم عامل چیست ؟
امنیت یک کامپیوتر بستگی به این مسئله دارد که تعدادی از فناوریها در کنار هم به درستی کار کنند. یک سیستم عامل مُدرن و امروزی دسترسی به تعدادی از منابعی را فراهم میکند که برای نرم افزارهای در حال اجرا روی سیستم و برای دستگاههای خارجی مثل شبکهها از طریق هسته سیستم عامل در دسترس هستند.
سیستم عامل باید قابلیت تشخیص میان درخواستهای مجاز برای پردازش را با سایر درخواستهایی داشته باشد که نباید پردازش شوند.
- مطالعه بیشتر: امنیت در سیستم عامل — راهنمای جامع
رابط کاربری سیستم عامل چیست ؟
هر کامپیوتری که باید به وسیله یک شخص راهبری شود، نیازمند رابط کاربری (User Interface) است. به رابط کاربری در سیستم عامل معمولاً «پوسته» (Shell) میگویند. اگر لازم باشد تعامل با انسان پشتیبانی شود، وجود پوسته در سیستم عامل ضروری است. به وسیله رابط کاربری میتوان ساختار دایرکتوری را مشاهده کرد و از سیستم عامل خدماتی را خواست که برای درخواست آنها دادهها از دستگاههای سخت افزاری ورودی مثل صفحه کلید و ماوس وارد میشوند.
با استفاده از رابط کاربری میتوان خدمات سیستم عامل را درخواست کرد تا مثلاً پاسخها، پیامهای وضعیت و مواردی از این دست در دستگاههای خروجی نظیر مانیتور یا پرینتر نمایش داده شوند. از دیرباز دو شکل رایج و پراستفاده رابط کاربری رابط خط فرمان (Command Line Interface) و رابط کاربری گرافیکی (Graphical User Interface) بوده است. در رابط خط فرمان دستورات کامپیوتر خط به خط توسط کاربر وارد میشوند و در واسط گرفایکی یک محیط بصری وجود دارد که کاربر میتواند با آن تعامل داشته باشد.
سیستم عامل های بلادرنگ
از یک «سیستم عامل بلادرنگ» (Real-time Operating System | RTOS) برای کاربردهایی با زمان سر رسید مشخص و ثابت استفاده میشود. چنین کاربردهایی معمولاً شامل موارد زیر میشوند:
- تعدادی سیستم تعبیه شده کوچک
- کنترلرهای موتور اتومبیل
- رباتهای صنعتی
- فضانوردها
- کنترل صنعتی
- برخی از سیستمهای محاسباتی با مقیاس وسیع
مثالی از یک سیستم عامل اولیه بلادرنگ با مقیاس بزرگ «تسهیلات پردازش تراکنش» (Transaction Processing Facility) نام دارد که به وسیله شرکت هواپیمایی آمریکا و IBM برای سیستم رزرو خطوط هوایی شرکت Sabre (سابری) ساخته شد. سیستمهای تعبیه شدهای که ضربالاجلهای مشخصی دارند از سیستمعاملهای بلادرنگ استفاده میکنند. از جمله میتوان به موارد زیر در این خصوص اشاره کرد:
- VxWorks
- PikeOS
- eCos
- QNX
- MontaVista Linux
- RTLinux
سیستم عامل Windows CE یک سیستم عامل بلادرنگ است که APIهای مشابهی را با نسخه دسکتاپ ویندوز ارائه میدهد، اما هیچکدام از کدهای پایه ویندوز دسکتاپ با آن مشترک نیستند.
تنوع سیستم عامل ها و انتقال پذیری آن ها
معمولاً نرم افزارهای کاربردی برای استفاده در سیستمعاملهای خاصی نوشته میشوند و گاهی حتی آنها را برای سخت افزارهای خاصی توسعه میدهند. وقتی که برنامه کاربردی برای اجرا روی سیستم عاملی دیگر انتقال داده میشود، قابلیتهای عملکردی مورد نیاز برای آن برنامه کاربردی ممکن است بهطور متفاوتی به وسیله آن سیستم عامل پیادهسازی شوند (مثلاً نام توابع، مفهوم آرگومانها و بسیاری از موارد دیگر ممکن است به صورت متفاوتی پیادهسازی شوند).
بنابراین برای انتقال یک برنامه کاربردی به سیستم عامل دیگر باید سازگاریهای لازم در آن ایجاد و تغییرات لازم مورد نیاز اعمال شوند. میتوان از هزینههای تنوع سیستمعاملها با نوشتن برنامههای کاربردی برای پلتفرمهای نرم افزاری مانند جاوا یا Qt اجتناب کرد. این انتزاعها همین حالا هم باعث کاهش هزینه سازگاری با سیستمعاملهای خاص و کتابخانههای آنها شدهاند.
رویکرد دیگر در این خصوص این است که تولیدکنندگان سیستم عامل استانداردهایی را اعمال کنند. مثلاً POSIX و لایههای انتزاعی سیستم عامل ویژگیهای مشترکی را فراهم میکنند که باعث کاهش هزینههای انتقال شدهاند.
جمعبندی
در این مقاله سعی شد تا به طور جامع به این سوال مهم پاسخ داده شود که سیستم عامل چیست و همچنین سعی شد تا کلیه موضوعهای پرجستجوی پیرامون مفهوم سیستم عامل شرح داده شوند. امید است این مقاله مفید واقع شده باشد.