سیستمعامل یاسامانهٔ کنش (بهانگلیسی:operating system)نرمافزار سیستمیای است که مدیریت منابع رایانه را به عهده گرفته و بستری را فراهم میسازد کهنرمافزار کاربردی اجرا شده و از خدمات آن استفاده کنند.[۱][۲] سیستمعامل جزو ضروریترین نرمافزارهای یک سیستم رایانهای است.سیستمعامل خدماتی به برنامههای کاربردی و کاربر ارائه میدهد. برنامههای کاربردی یا از طریق واسطهای برنامهنویسی کاربردی[یادداشت ۱] یا از طرق فراخوانیهای سیستم به این خدمات دسترسی دارند. با فراخوانی این واسطها، برنامههای کاربردی میتوانند سرویسی را از سیستمعامل درخواست کنند، پارامترها را انتقال دهند، و پاسخ عملیات را دریافت کنند. ممکن است کاربران با بعضی انواعواسط (رابط) کاربری نرمافزار مثل واسطخط فرمان یکواسط گرافیکی کاربر با سیستمعامل تعامل کنند. برای رایانههای دستی و رومیزی، عموماً واسط کاربری به عنوان بخشی از سیستمعامل در نظر گرفته میشود.[۳][۴] در سیستمهای بزرگ وچند۱کاربره مثل یونیکس و سیستمهایشبیه اندروید، واسط کاربری معمولاً به عنوان یک برنامهٔ کاربردی که خارج از سیستمعامل اجرا میشود پیادهسازی میشود.نمونههایی از محبوبترین سیستمعاملهای نوین شامل: اندروید میباشند.
یک سیستم تککاره تنها میتواند یک برنامه را بهطور همزمان اجرا کند، در حالیکه یک سیستمعامل چندمنظوره اجازه میدهد تا بیش از یک برنامه بهطور همزمان اجرا شود. این با به اشتراکگذاری زمان حاصل میشود، که در آن زمان پردازندهٔ موجود بین چندین فرایند تقسیم میشود.[۵] این فرایندها هر یک بهطور مکرر در برشهای زمانی توسط یک زیر سیستم برنامهریزی کار سیستمعامل قطع میشوند. چند وظیفهای ممکن است در انواع پیشگیرانه و تعاونی مشخص شود. در چند وظیفهای پیشگیرانه، سیستمعامل زمان CPU را قطع میکند و شکافی را به هر یک از برنامهها اختصاص میدهد. سیستمعاملهاییونیکس مانند، مانند Solaris, Linux و همچنین غیر Unix مانند مانند Amiga OS، از وظیفههای پیشگوییکننده پشتیبانی میکنند. چند وظیفهٔ تعاونی با تکیه بر هر فرایند بهدست میآید تا زمان دیگری را برای سایر فرایندها به صورت تعریفشده فراهم کند. نسخههای ۱۶ بیتی مایکروسافت ویندوز از چندکاره تعاونی استفاده میکردند. نسخههای ۳۲ بیتی ویندوز NT و Win9x از وظایف پیشگیرانه استفاده میکنند.[۶]
سیستمعاملهای یککاربره امکان تمایز کاربران را ندارند، اما ممکن است چندین برنامه را به صورت همزمان اجرا کنند. یک سیستمعامل چند کاربره مفهوم اصلی کار چند منظوره را با امکاناتی فراهم میکند که فرایندها و منابع را شناسایی میکنند، از جمله فضای دیسک، متعلق به چندینکاربر، و سیستم به چندین کاربر اجازه میدهد تا همزمان با سیستم ارتباط برقرار کنند. برنامههای زمانبندی سیستمعامل برای استفاده کارآمد از سیستم برنامهریزی کرده و ممکن است شامل نرمافزار حسابداری برای اختصاص هزینهٔ زمان پردازنده، ذخیرهٔ انبوه، چاپ و سایر منابع برای چندین کاربر نیز باشد. در سیستمعاملهایشبهیونیکس یک حالت تککاربره در هستهٔ پشتیبان وجود دارد که برای وقتی است که دیگرهستهها بامشکل مواجه میشوند و نیاز بهتعمیر دارند یا رمزکاربر ریشه را بدون دانستن آن بخواهیم تغییر دهیم.[۷]
سیستمعامل توزیعشده گروهی از رایانههای مجزا و شبکهای را مدیریت میکند و باعث میشود که آنها یککامپیوتر واحد باشند، زیرا همهٔ محاسبات توزیع میشوند (بین رایانههای سازنده تقسیم میشوند).
در زمینهٔ محاسبات توزیعشده و ابری یک سیستمعامل، قالببندی به ایجاد یک تصویر واحد مجازی به عنوان یک سیستمعامل مهمان اشاره دارد و سپس آن را به عنوان ابزاری برای چندین ماشین مجازی در حال اجرا ذخیره میکند. این روش هم درمجازیسازی و هم در مدیریتمحاسبات ابری مورد استفاده قرار میگیرد و در انبارهای بزرگ سرور رایج است.
سیستمعاملهای جاسازیشده برای استفاده در سیستمهای رایانهای جاسازیشده طراحی شدهاند. آنها به گونهای طراحی شدهاند که در دستگاههای کوچک با استقلال کمتری کار کنند (به عنوان مثال PDA). آنها از نظر طراحی بسیار جمع و جور و بسیار کارآمد هستند و قادر به استفاده از منابع محدود هستند. Windows CE و Minix 3 نمونههایی از سیستمعاملهای تعبیهشده هستند.
سیستمهای بیدرنگ یا سیستمعامل در زمان واقعی یک سیستمعامل است که پردازش رویدادها یا دادهها توسط یک لحظهٔ خاص در زمان را تضمین میکند. یک سیستمعامل در زمان واقعی ممکن است تککاره یا چندکاره باشد، اما هنگام کار چند وظیفهای، از الگوریتمهای برنامهریزی تخصصی استفاده میکند تا ماهیت قطعی رفتار حاصل شود. چنین سیستمی محور براساس اولویتها یا رویدادهای خارجی بین وظایف تغییر میکند، در حالی که سیستمهای عامل مشترک با زمان وظایف را بر اساس وقفه ساعت تغییر میدهند.
رایانههای اولیه مانندماشین حساب برای انجام یک سری از کارهای تکی ساخته شدند. ویژگیهای اولیه سیستمعامل در دههٔ ۵۰ رشد یافت، مانند ویژگی ناظر مقیم که میتواند بهطور خودکار برنامههای مختلف را به صورت متوالی اجرا کنند تا پردازش را سرعت دهد. سیستمهای عامل تا اوایل دههٔ ۱۹۶۰ به شکلهای مدرن و پیچیدهتر وجود نداشتند. ویژگیهای سختافزاری اضافه شدهاست که امکان استفاده از کتابخانههای زمان اجرا، وقفهها وپردازش موازی را فراهم میآورد. هنگامی که رایانههای شخصی در دههٔ ۱۹۸۰ رایج شدند، سیستمهای عامل برای آنها شبیه به رایانههای بزرگتر مورد استفاده قرار گرفت.[۸]
در دههٔ ۱۹۴۰، نخستین سیستمهای دیجیتال الکترونیکی هیچ سیستمعاملی نداشتند. سیستمهای الکترونیکی آن زمان در ردیفهای سوئیچهای مکانیکی یا توسط سیمهای بلوز روی پلاگینها برنامهریزی میشدند. اینها سیستمهای ویژهای بود که به عنوان مثال جدولهای بالستیک را برای ارتش ایجاد میکردند یا چاپ چکهای حقوق و دستمزد از دادههای روی کارتهای کاغذ سوراخدار را کنترل میکردند. پس از اختراع رایانههای قابل برنامهریزی عمومی، زبانهای دستگاه (متشکل از رشتههای ارقام باینری ۰ و ۱ روی نوار کاغذ سوراخدار) معرفی شدند که روند برنامهنویسی را سرعت میبخشد (استرن، ۱۹۸۱).
در اوایل دههٔ ۵۰، یک رایانه میتوانست همزمان فقط یک برنامه را اجرا کند. هر کاربر تنها برای مدت محدودی از رایانه استفاده میکرد و با برنامه و دادههای خود در کارتهای کاغذ سوراخدار یا نوار پانچشده در یک زمان مشخص قرار میگرفت. برنامه وارد دستگاه میشود و دستگاه تا زمان تکمیل یا خراب شدن برنامه کار میکند. بهطور کلی برنامهها میتوانند از طریق پنل جلویی با استفاده از کلیدهای جابجایی و چراغهای پانل اشکالزدایی شوند. گفته میشود کهآلن تورینگ در اوایل ماشین منچستر مارک ۱ استاد این کار بودهاست و او پیشتر برداشت اولیهٔ یک سیستمعامل را از اصول دستگاه جهانی تورینگ بهدست میآورد.
ماشینهای بعدی با کتابخانههایی از برنامهها همراه شدند که برای کمک به عملیاتی از قبیل ورودی و خروجی و گردآوری (تولید کد دستگاه از کد نمادین قابل خواندن توسط انسان) به برنامهٔ کاربر متصل میشوند. این پیدایش سیستمعامل مدرن بود. با این حال، ماشینآلات هنوز هم یک کار واحد را همزمان انجام میدادند. دردانشگاه کمبریج در انگلیس، صف کار در یک زمان یک خط شستوشو (خط لباس) بود که از آن نوارها با گیرههای رنگی مختلف برای نشان دادن اولویت شغل آویزان میشد.
سرپرست اطلس پیشرفت خوبی داشت. با معرفی اطلس منچستر در سال ۱۹۶۲، از نظر بسیاری نخستین سیستمعامل مدرن قابل تشخیص است. برینچ هانسن آن را «مهمترین پیشرفت در تاریخ سیستمهای عامل» توصیف کرد.
در دههٔ ۱۹۵۰، بسیاری از ویژگیهای اصلی در زمینهٔ سیستمعاملهای رایانههای اصلی از جمله پردازش دستهای، قطع ورودی و خروجی، بافر، چند کاره، غلطگیری، کتابخانههای زمان اجرا، لینک بارگذاری و برنامههایی برای مرتبسازی پیشینهها در پروندهها پیشگام شدند. این ویژگیها به جای یک سیستمعامل جداگانه که توسط همهٔ برنامهها استفاده میشود، در گزینهٔ برنامهنویسان برنامه گنجانده شده یا شامل نشدهاند. در سال ۱۹۵۹، سیستمعامل SHARE بهعنوان ابزاری یکپارچه برای IBM 704 و بعداً در میان اصلیهای ۷۰۹ و ۷۰۹۰ منتشر شد، اگرچه به سرعت توسط IBSYS / IBJOB در ۷۰۹، ۷۰۹۰ و ۷۰۹۴ ارسال شد.
در دههٔ ۱۹۶۰، سیستمعامل IBM / OS IBM مفهوم سیستمعامل منفرد را دربرداشت که تمامخط تولید را شامل میشد، که برای موفقیت دستگاههای System / 360 بسیار مهم بود. سیستمهای عامل اصلی کنونی IBM از فرزندان دور این سیستم اصلی هستند و ماشینهای مدرن با برنامههای نوشتهشده برای OS / 360 سازگار با عقب هستند.
ریز کامپیوترها برای نخستین بار از ظرفیت یا نیاز به سیستمعاملهای پیچیدهای که برای اصلیها و مینیها ساخته شده بودند، نداشتند. سیستمعاملهای حداقلی توسعه یافته بودند، که اغلب از ROM بارگذاری میشوند و به عنوان مانیتور معروف هستند. یکی از سیستمعاملهای قابل توجه درایو اولیه، CP / M بود که در بسیاری از میکرو کامپیوترهای اولیه پشتیبانی شد و از نزدیک توسط MS-DOS مایکروسافت تقلید شد، که به عنوان سیستمعامل انتخاب شده برای IBM PC محبوبیت زیادی پیدا کرد (نسخهٔ IBM از آن با نام IBM DOS نامگذاری شد). یا DOS PC). در دههٔ ۱۹۸۰، شرکت اپل کامپیوتر (اکنون شرکت اپل) از سری محبوب میکرو رایانههایاپل II خود رها شد تا رایانه اپل مکینتاش را با یک رابط کاربری گرافیکی نوآورانه (GUI) به سیستمعامل مک معرفی کند.
معرفی تراشهٔ CPU Intel 80386 CPU در اکتبر ۱۹۸۵، با قابلیت معماری ۳۲ بیتی و قابلیت صفحهبندی، امکان رایانههای شخصی را برای اجرای سیستمعاملهای چند وظیفهای مانند رایانههای مینیرایانه و مجهز به سیستمهای پیشین فراهم کرد. مایکروسافت با استخدام دیو کاتلر، که سیستمعامل VMS را برای شرکت تجهیزات دیجیتال توسعه داده بود، به این پیشرفت پاسخ داد. او توسعهٔ سیستمعامل Windows NT را هدایت میکند، که همچنان به عنوان پایهای برای خط سیستمعامل مایکروسافت عمل میکند. استیو جابز، یکی از بنیانگذاران شرکت اپل، NeXT Computer Inc را راهاندازی کرد که سیستمعامل NEXTSTEP را توسعه داد. NEXTSTEP بعداً توسط Apple Inc. بهدست میآید و همراه با کد FreeBSD به عنوان هستهٔ Mac OS X (macOS پس از آخرین تغییر نام) استفاده میشود.
پروژهٔ GNU توسطریچارد استالمن فعال و برنامهنویس با هدف ایجاد جایگزینی کامل نرمافزار رایگان در سیستمعامل اختصاصی UNIX آغاز شد. در حالیکه این پروژه در کپی کردن قابلیتهای بخشهای مختلف UNIX بسیار موفق بود، توسعهٔ هستهٔ GNU Hurd بیثمر بود. در سال ۱۹۹۱، لینوس توروالدز، دانشجوی علوم کامپیوتر رایانه، با همکاری داوطلبانی که از طریق اینترنت همکاری میکنند، نخستین نسخه ازهستهٔ لینوکس را منتشر کرد. به زودی با مؤلفههایفضای کاربر کاربر و نرمافزار سیستم ادغام شد تا یک سیستمعامل کامل ایجاد شود. از آن زمان به بعد، ترکیب دو مؤلفهٔ اصلی معمولاً توسطصنعت نرمافزار به سادگی به «لینوکس» گفته میشود، یک کنوانسیون نامگذاری که استالمن وبنیاد نرمافزار آزاد با آن مخالف هستند و ترجیح میدهند نام GNU / Linux را ترجیح دهند. هستهٔ سیستمعامل توزیع نرمافزار برکلی، معروف به BSD، مشتقشده از هستهٔ سیستمعامل UNIX، که از دههٔ ۱۹۷۰ توسطدانشگاه کالیفرنیا، برکلی توزیع شدهاست. آخرین نسخهٔ آن BSD ۴٫۴ در سال ۱۹۹۵ بود که بعد از آن دیگر نسخهای نداد و بنابرین این یک پروژه متوقف شده می اشد. اما توزیعهایی مانند FreeBSD, OpenBSD, NetBSD همچنان پایدار هستند.
اجزای سیستمعامل همه به منظور ایجاد بخشهای مختلف یک کامپیوتر در کنار هم وجود دارند. تمام نرمافزارهای کاربر برای استفاده از هر کدام از سختافزارها، چه از طریقماوس و کیبورد و چه به عنوان یک کامپوننت اینترنت، باید از طریق سیستمعامل عبور کنند.
مراحل خاموش شدن سیستم از طریق سیستمعامل در سیستمعاملهای شبهیونیکس
هسته در اصل مغز سیستمعامل است. هسته وظیفهٔ مدیریت سختافزار و نرمافزار را دارد. در واقع هسته یک سیستمعامل باید پروسهها را ترتیبدهی کند، به هر پروسه شناسهای دهد و اجرا کند و تا اتمام پروسه آن را مدیریت کند (منابع و حافظهاش)، توابعی برای فراخوانی برای دسترسی با حالت هسته داشته باشد و بهطور کلی باید مانند مغز سیستمعامل عمل کند. هسته باید میزان استفاده از واحد پردازندهٔ مرکزی یا CPU برای هر پروسه را کنترل کند، هر پروسهای که اولویت بیشتری داشته باشد، میزان استفاده از پردازنده را بر آن پروسه بالا میبرد، همینطور وظیفهٔ نوشتن یا خواندن فایلها را دارد و وظیفهٔ اجرای دستورها را دارد. در اکثر سیستمعاملهای شبهیونیکس، کرنل در بوت لودر با یک سری پارامترها اجرا میشود و پروسهٔ init را اجرا میکند. کرنل باید تمامی ورودیها و خروجیها را بخواند. بخش مهمی از کرنل در بخش محافظتشده از رم لود میشود. بهطور کلیتر هسته وظیفهٔ مدیریت سختافزار و نرمافزار را دارد.
مراحل اجرای محیط کاربری در سیستمعاملهای شبهیونیکس
سیستمعامل واسط بین یک برنامهٔ کاربردی وسختافزار رایانه را فراهم میکند، به گونهای که یک برنامهٔ کاربردی میتواند تنها با رعایت قوانین و رویههای برنامهریزی شده در سیستمعامل با سختافزار ارتباط برقرار کند. سیستمعامل همچنین مجموعهای از خدمات است که توسعه و اجرای برنامههای کاربردی را ساده میکند. اجرای یک برنامهٔ کاربردی شامل ایجاد یک فرایند توسط هستهٔ سیستمعامل است که فضای حافظه و منابع دیگر را اختصاص میدهد، اولویت این فرایند را در سیستمهای چندکاره ایجاد میکند، کدهای باینری برنامه را در حافظه بارگذاری میکند و اجرای برنامهٔ کاربردی را آغاز میکند. سپس با کاربر و دستگاههای سختافزاری ارتباط برقرار میکند.
وقفهها برای سیستمعاملها از اهمیت ویژهای برخوردار است، زیرا آنها یک روش کارآمد برای سیستمعامل برای تعامل و واکنش به محیط آن فراهم میکنند. گزینهٔ جایگزین، داشتن سیستمعامل منابع مختلف ورودی برای رویدادها (نظرسنجی) که نیاز به اقدام دارند را «تماشا میکند» را میتوان در سیستمهای قدیمی با پشتههای بسیار کوچک (۵۰ یا ۶۰ بایت) یافت اما در سیستمهای مدرن با پشتههای بزرگ غیرمعمول است. برنامهنویسی مبتنی بر قطع بهطور مستقیم توسط اکثر CPUهای مدرن پشتیبانی میشود. وقفهها راهی را برای صرفهجویی در خودکار ثبت زمینههای ثبت محلی و اجرای کد ویژه در پاسخ به وقایع، به رایانه میدهد. حتی رایانههای بسیار اساسی از قطع سختافزار پشتیبانی میکنند و به برنامهنویس اجازه میدهند کدی را که ممکن است هنگام وقوع آن اجرا شود، مشخص کند.[۹]
هنگامی که یک وقفه دریافت شد، سختافزار رایانه بهطور خودکار هر برنامهای را که در حال اجراست، به حالت تعلیق درمیآورد، وضعیت خود را ذخیره میکند، و کد رایانهای را که پیشتر با وقفه در ارتباط بود اجرا میکند. این مشابه با قرار دادن یک نشانک در یک کتاب در پاسخ به تماس تلفنی است. در سیستمعاملهای مدرن، وقفهها توسط هستهٔ سیستمعامل انجام میشود. وقفهها ممکن است از سختافزار رایانه یا برنامه در حال اجرا باشد.[۱۰]
هنگامی که یک دستگاه سختافزاری باعث ایجاد وقفه میشود، هستهٔ سیستمعامل تصمیم میگیرد که چگونه با این رویداد معمولاً با اجرای کد پردازشی مقابله کند. میزان کد در حال اجرا بستگی به اولویت وقفه دارد (برای مثال: شخص معمولاً پیش از پاسخ دادن به تلفن به زنگ آشکارساز دود پاسخ میدهد). پردازش قطع سختافزار کاری است که معمولاً به نرمافزاری به نامدرایور دستگاه منتقل میشود که ممکن است بخشی از هستهٔ سیستمعامل، بخشی از برنامهٔ دیگر یا هر دو باشد. ممکن است درایورهای دستگاه با استفاده از روشهای مختلف، اطلاعات را به یک برنامه در حال اجرا منتقل کنند.[۱۱][۱۲]
یک برنامه همچنین ممکن است باعث ایجاد وقفه در سیستمعامل شود. برای مثال اگر یک برنامه بخواهد به سختافزار دسترسی داشته باشد، ممکن است هستهٔ سیستمعامل را قطع کند و این باعث میشود کنترل به هسته منتقل شود. سپس هسته درخواست را پردازش میکند. اگر برنامهای بخواهد منابع اضافی (یا مایل به ریختن منابع) مانند حافظه باشد، باعث جلب توجه هسته میشود.[۱۳]
کاربر ریشه یا ابرکاربر، کاربریست که بدون محدودیت دسترسی به تمامی فایلهای سیستمعامل را دارد، در این حالت امنیت داخلی سیستمعامل به حداقل میرسد زیرا دیگر هیچ چیزی جلودار کاربر ریشه نیست و ممکن است بدافزاری، آسیب جدیای وارد کند، یا اینکه ممکن است به اشتباه یک فایل مهم سیستمی پاک شود. شناسه کاربری کاربر ریشه در سیستمعاملهای شبهیونیکس معمولاً ۰ است.
هر برنامه در حال اجرا یک پروسه است، چه در پیشزمینه چه در پسزمینه، هستهٔ سیستمعامل وظیفهٔ مدیریت پروسهها را دارد. هستهٔ سیستمعامل به هر پروسه یک شناسهٔ پروسه یا PID میدهد، منابع و حافظهٔ پروسه را کنترل میکند و آنها را به ترتیب خاصی اجرا میکند تا زمانی که پروسه به پایان برسد و پروسهٔ والد (پروسهای که پروسهٔ کنونی از آن نشأت گرفته (دارای یک PPID هست هر پروسهٔ والد) به پایان رسیدن آن را تأیید کند یا مطلع شود. هر پروسه یک برنامه است، هر برنامه به مقداری حافظه و منابعی نیاز دارد، هسته وظیفهٔ این را دارد تا همهٔ اینها را تهیه کند، و در انتهای پروسه حافظه و منابع گرفته یا اشغال شده را خالی یا آزاد کند. در سیستمعاملهای شبهیونیکس پروسهٔ مادر یا init که در هنگام راهاندازی سیستمعامل اجرا میشود نیز مادر همهٔ پروسههاست؛ یعنی اگر پروسهٔ مادر از بین برود همهٔ پروسههای دیگر نیز از بین میروند.
هستهٔ سیستمعامل با قابلیتحافظهٔ مجازی وظیفهٔ تأمین امنیت پروسههای اشغالشده در مموری را دارد، یعنی باید از دسترسی برنامهها یا پروسهها به منابع و حافظهٔ اشغالشده توسط پروسههای دیگر جلوگیری کند. بهطور کلی اگر سیستمعامل قابلیت حافظهٔ مجازی داشته باشد، فضایی برای آدرسهای پروسهها و برنامههای در حال اجرا که آدرس مجازی نامیده میشود تا برنامهٔ دیگری نتواند به آن بخش از حافظه دسترسی یابد. هستهٔ سیستمعامل وظیفهٔ مدیریت و گرفتن آدرسهای مجازی را دارد.
هستهٔ سیستمعامل از هرگونه دسترسی به نوشتن یا خواندن در دیسک جلوگیری میکند، بنابرین برای نوشتن فایلی (یا خواندن) تنها راه موجود استفاده از فراخوانی سیستم یا فراخوانی توابع سیستم هست، این به این معنی است تنها با فراخواندن توابعی که در هستهٔ سیستمعامل تعریف شدهاند میتوان روی دیسک نوشت یا فایلی را خواند. هرگونه خواندن یا نوشتن فایلی در حلقهٔ ۳ یا فضای کاربری توسط هستهٔ سیستمعامل جلوگیری میشود، دسترسی به دیسک تنها در حالت کرنل یا هسته ممکن است.
در سیستمعاملهای شبهیونیکس init یا اولیهساز، پروسهها و سرویسهایی که سیستمعامل برای راهاندازی به آنها نیاز دارد را اجرا میکند مثلاً در لینوکس، برای بالا آمدن دسکتاپگنوم نیازمند اجرای سرویس gdm است، بنابرین در انتها سرویس gdm را اجرا میکند. این پروسه به عنوان پروسهٔ مادر یا مادر همهٔ پروسههای سیستم نیز شناخته میشود که معمولاً شناسهٔ پروسهٔ ۱ را به همراه دارد. همچنین این پروسه تا خاموششدن سیستم همچنان فعال است. در سیستمعاملهای لینوکس معمولاً از سیستم راهانداز SystemD استفاده میشود.
هستهٔ سیستمعامل وظیفهٔ جلوگیری از دسترسی هرگونه برنامهای به سختافزار را دارد. برای همین اصطلاحاً میگویند هستهٔ سیستمعامل در حلقهٔ ۰ وجود دارد، این امنیت سیستم را تا جایی فراهم میکند که برنامهٔ مخربی نتواند به سختافزار صدمهای بزند. تنها راه استفاده از برخی دسترسیها به سختافزار نظیر نوشتن فایل بر هارد دیسک، نیازمند فراخوانی سیستمی یا فراخوانی توابع سیستمی است.
رابط کاربری یک سیستمعامل میتواند به دو صورت رابط کاربری گرافیکی (بهانگلیسی: Graphical User Interface) یا رابط خط فرمان (به انگلیسی: Command-line interface) باشد.سیستمعاملهای مدرن از قابلیت رابط کاربری گرافیکی در کنار رابط خط فرمانی پشتیبانی میکنند، مانند ویندوز لینوکس، مک او.اس. سیستمعاملهایی با پشتیبانی GUI یا رابط کاربری گرافیکی یک دسکتاپ یا میزکار دارند، اما سیستمعاملهایی که تنها رابط خط فرمانی یا CLI دارند، در یک ترمینال با یک پوسته اجرا میشوند. رابط کاربری در واقع شیوهٔ ارتباط فضای کاربری با سیستمعامل است. در سیستمعاملهایی که تنها CLI دارند، شیوهٔ ارتباط با سیستم، تنها به صورت دستورهایی خاص به صورت متنی (تنها راه ورودی کیبورد هست) است و در سیستمعاملهایی با قابلیت GUI به صورت گرافیکی و راحتتر است.[۱۴]
در نگرش پایین به بالا، منابع منطقی (مانند فایلها) و منابع فیزیکی (مانند دستگاههای سختافزاری) رایانه را مدیریت و کنترل میکند.
در نگرش بالا به پایین، وظیفهٔ سیستمعامل این است که یک ماشین توسعهیافته[یادداشت ۲] یاماشین مجازی را به کاربران ارائه کند تا آنها بتوانند آسانتر برنامهنویسی نمایند و درگیر پیچیدگیهای سختافزاری رایانه نشوند.[۱۵]
بهطور کلی، وظایف سیستمعامل شامل موارد زیر است:
استفادهٔ بهینهتر از منابع و جلوگیری از به هدر رفتن آنها
بینرایانههای شخصی در سالهای اخیر رقابت بیشتر بین سیستمعاملهایاندروید،مایکروسافت ویندوز،آی اواس،مک اواس ولینوکس جریان دارد که آماری که در ماه سپتامبر ۲۰۱۹ توسط وبگاه W3Counter به ثبت رسیده حاکی از آن است که هماکنون بیش از ۱۵ درصد کاربران اینترنت از سیستمعاملویندوز ۱۰ استفاده میکنند.[۱۷]
آمار موجود که مربوط به فوریهٔ ۲۰۲۰ میباشد به شرح زیر است:
↑Kerrisk, Michael (2010).The Linux Programming Interface. No Starch Press. p. 388.ISBN978-1-59327-220-3.A signal is a notification to a process that an event has occurred. Signals are sometimes described as software interrupts.
↑Hyde, Randall (1996)."Chapter Seventeen: Interrupts, Traps and Exceptions (Part 1)".The Art Of Assembly Language Programming. No Starch Press.Archived from the original on 22 December 2021. Retrieved22 December 2021.The concept of an interrupt is something that has expanded in scope over the years. The 80x86 family has only added to the confusion surrounding interrupts by introducing the int (software interrupt) instruction. Indeed, different manufacturers have used terms like exceptions, faults, aborts, traps and interrupts to describe the phenomena this chapter discusses. Unfortunately there is no clear consensus as to the exact meaning of these terms. Different authors adopt different terms to their own use.
↑Tanenbaum, Andrew S. (1990).Structured Computer Organization, Third Edition. Prentice Hall. p. 308.ISBN978-0-13-854662-5.Like the trap, the interrupt stops the running program and transfers control to an interrupt handler, which performs some appropriate action. When finished, the interrupt handler returns control to the interrupted program.
↑Silberschatz, Abraham (1994).Operating System Concepts, Fourth Edition. Addison-Wesley. p. 32.ISBN978-0-201-50480-4.When an interrupt (or trap) occurs, the hardware transfers control to the operating system. First, the operating system preserves the state of the CPU by storing registers and the program counter. Then, it determines which type of interrupt has occurred. For each type of interrupt, separate segments of code in the operating system determine what action should be taken.
↑Silberschatz, Abraham (1994).Operating System Concepts, Fourth Edition. Addison-Wesley. p. 105.ISBN978-0-201-50480-4.Switching the CPU to another process requires saving the state of the old process and loading the saved state for the new process. This task is known as a context switch.