موضوع مقاله: سیستم‌عامل | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سیستم‌عامل | مقدمه: با فراخوانی این واسط‌ها، برنامه‌های کاربردی می‌توانند سرویسی را از سیستم‌عامل درخواست کنند، پارامترها را انتقال دهند، و پاسخ عملیات را دریافت کنند. | ## بخش 1: سیستم‌عامل | ممکن است کاربران با بعضی انواع واسط (رابط) کاربری نرم‌افزار مثل واسط خط فرمان یا یک واسط گرافیکی کاربر، با سیستم‌عامل تعامل کنند. برای رایانه‌های دستی و رومیزی، عموماً واسط کاربری به عنوان بخشی از سیستم‌عامل در نظر گرفته می‌شود. در سیستم‌های بزرگ و چندکاربره مثل یونیکس و سیستم‌های شبه‌یونیکس، واسط کاربری معمولاً به عنوان یک برنامهٔ کاربردی که خارج از سیستم‌عامل اجرا می‌شود، پیاده‌سازی می‌شود. نمونه‌هایی از محبوب‌ترین سیستم‌عامل‌های نوین شامل ویندوز، مک‌اواس، اوبونتو، اندروید و ... این با به اشتراک‌گذاری زمان حاصل می‌شود، که در آن زمان پردازندهٔ موجود بین چندین فرایند تقسیم می‌شود. این فرایندها هر یک به‌طور مکرر در برش‌های زمانی توسط یک زیر سیستم برنامه‌ریزی کار سیستم‌عامل قطع می‌شوند. در چند وظیفه‌ای پیشگیرانه، سیستم‌عامل زمان CPU را قطع می‌کند و شکافی را به هر یک از برنامه‌ها اختصاص می‌دهد. چند وظیفهٔ تعاونی با تکیه بر هر فرایند به‌دست می‌آید تا زمان دیگری را برای سایر فرایندها به صورت تعریف‌شده فراهم کند. تک‌کاربره و چندکاربره سیستم‌عامل‌های یک‌کاربره امکان تمایز کاربران را ندارند، اما ممکن است چندین برنامه را به صورت همزمان اجرا کنند. در سیستم‌عامل‌های شبه‌یونیکس یک حالت تک‌کاربره در هستهٔ پشتیبان وجود دارد که برای وقتی است که دیگر هسته‌ها با مشکل مواجه می‌شوند و نیاز به تعمیر دارند یا رمز کاربر ریشه را بدون دانستن آن بخواهیم تغییر دهیم. سیستم‌عامل توزیع شده سیستم‌عامل توزیع‌شده گروهی از رایانه‌های مجزا و شبکه‌ای را مدیریت می‌کند و باعث می‌شود که آن‌ها یک کامپیوتر واحد باشند، زیرا همهٔ محاسبات توزیع می‌شوند (بین رایانه‌های سازنده تقسیم می‌شوند). قالب در زمینهٔ محاسبات توزیع‌شده و ابری یک سیستم‌عامل، قالب‌بندی به ایجاد یک تصویر واحد مجازی به عنوان یک سیستم‌عامل مهمان اشاره دارد و سپس آن را به عنوان ابزاری برای چندین ماشین مجازی در حال اجرا ذخیره می‌کند. این روش هم در مجازی‌سازی و هم در مدیریت محاسبات ابری مورد استفاده قرار می‌گیرد و در انبارهای بزرگ سرور رایج است. جاسازی شده سیستم‌عامل‌های جاسازی‌شده برای استفاده در سیستم‌های رایانه‌ای جاسازی‌شده طراحی شده‌اند. آن‌ها به گونه‌ای طراحی شده‌اند که در دستگاه‌های کوچک با استقلال کمتری کار کنند (به عنوان مثال PDA). سیستم‌های بی‌درنگ سیستم‌های بی‌درنگ یا سیستم‌عامل در زمان واقعی، یک سیستم‌عامل است که پردازش رویدادها یا داده‌ها توسط یک لحظهٔ خاص در زمان را تضمین می‌کند. یک سیستم‌عامل در زمان واقعی ممکن است تک‌کاره یا چندکاره باشد، اما هنگام کار چند وظیفه‌ای، از الگوریتم‌های برنامه‌ریزی تخصصی استفاده می‌کند تا ماهیت قطعی رفتار حاصل شود. چنین سیستمی محور براساس اولویت‌ها یا رویدادهای خارجی بین وظایف تغییر می‌کند، در حالی که سیستم‌های عامل مشترک با زمان وظایف را بر اساس وقفه ساعت تغییر می‌دهند. تاریخچهٔ سیستم‌عامل رایانه‌های اولیه مانند ماشین حساب برای انجام یک سری از کارهای تکی ساخته شدند. ویژگی‌های اولیه سیستم‌عامل در دههٔ ۵۰ رشد یافت، مانند ویژگی ناظر مقیم که می‌تواند به‌طور خودکار برنامه‌های مختلف را به صورت متوالی اجرا کنند تا پردازش را سرعت دهد. ویژگی‌های سخت‌افزاری اضافه شده‌است که امکان استفاده از کتابخانه‌های زمان اجرا، وقفه‌ها و پردازش موازی را فراهم می‌آورد. هنگامی که رایانه‌های شخصی در دههٔ ۱۹۸۰ رایج شدند، سیستم‌های عامل برای آن‌ها شبیه به رایانه‌های بزرگ‌تر مورد استفاده قرار گرفت. سیستم‌های الکترونیکی آن زمان در ردیف‌های سوئیچ‌های مکانیکی یا توسط سیم‌های بلوز روی پلاگین‌ها برنامه‌ریزی می‌شدند. این‌ها سیستم‌های ویژه‌ای بود که به عنوان مثال جدول‌های بالستیک را برای ارتش ایجاد می‌کردند یا چاپ چک‌های حقوق و دستمزد از داده‌های روی کارت‌های کاغذ سوراخ‌دار را کنترل می‌کردند. پس از اختراع رایانه‌های قابل برنامه‌ریزی عمومی، زبان‌های دستگاه (متشکل از رشته‌های ارقام باینری ۰ و ۱ روی نوار کاغذ سوراخ‌دار) معرفی شدند که روند برنامه‌نویسی را سرعت می‌بخشد (استرن، ۱۹۸۱). هر کاربر تنها برای مدت محدودی از رایانه استفاده می‌کرد و با برنامه و داده‌های خود در کارت‌های کاغذ سوراخ‌دار یا نوار پانچ‌شده در یک زمان مشخص قرار می‌گرفت. | ## بخش 2: سیستم‌عامل | به‌طور کلی برنامه‌ها می‌توانند از طریق پنل جلویی با استفاده از کلیدهای جابجایی و چراغ‌های پانل اشکال‌زدایی شوند. گفته می‌شود که آلن تورینگ در اوایل ماشین منچستر مارک ۱ استاد این کار بوده‌است و او پیش‌تر برداشت اولیهٔ یک سیستم‌عامل را از اصول دستگاه جهانی تورینگ به‌دست می‌آورد. ماشین‌های بعدی با کتابخانه‌هایی از برنامه‌ها همراه شدند که برای کمک به عملیاتی از قبیل ورودی و خروجی و گردآوری (تولید کد دستگاه از کد نمادین قابل خواندن توسط انسان) به برنامهٔ کاربر متصل می‌شوند. در دانشگاه کمبریج در انگلیس، صف کار در یک زمان یک خط شست‌وشو (خط لباس) بود که از آن نوارها با گیره‌های رنگی مختلف برای نشان دادن اولویت شغل آویزان می‌شد. با معرفی اطلس منچستر در سال ۱۹۶۲، از نظر بسیاری نخستین سیستم‌عامل مدرن قابل تشخیص است. ابر رایانه‌ها در دههٔ ۱۹۵۰، بسیاری از ویژگی‌های اصلی در زمینهٔ سیستم‌عامل‌های رایانه‌های اصلی از جمله پردازش دسته‌ای، قطع ورودی و خروجی، بافر، چند کاره، غلط‌گیری، کتابخانه‌های زمان اجرا، لینک بارگذاری و برنامه‌هایی برای مرتب‌سازی پیشینه‌ها در پرونده‌ها پیشگام شدند. این ویژگی‌ها به جای یک سیستم‌عامل جداگانه که توسط همهٔ برنامه‌ها استفاده می‌شود، در گزینهٔ برنامه‌نویسان برنامه گنجانده شده یا شامل نشده‌اند. سیستم‌های عامل اصلی کنونی IBM از فرزندان دور این سیستم اصلی هستند و ماشین‌های مدرن با برنامه‌های نوشته‌شده برای OS / 360 سازگار با عقب هستند. میکرو کامپیوترها ریز کامپیوترها برای نخستین بار از ظرفیت یا نیاز به سیستم‌عامل‌های پیچیده‌ای که برای اصلی‌ها و مینی‌ها ساخته شده بودند، نداشتند. سیستم‌عامل‌های حداقلی توسعه یافته بودند، که اغلب از ROM بارگذاری می‌شوند و به عنوان مانیتور معروف هستند. در دههٔ ۱۹۸۰، شرکت اپل کامپیوتر (اکنون شرکت اپل) از سری محبوب میکرو رایانه‌های اپل II خود رها شد تا رایانه اپل مکینتاش را با یک رابط کاربری گرافیکی نوآورانه (GUI) به سیستم‌عامل مک معرفی کند. معرفی تراشهٔ CPU Intel 80386 CPU در اکتبر ۱۹۸۵، با قابلیت معماری ۳۲ بیتی و قابلیت صفحه‌بندی، امکان رایانه‌های شخصی را برای اجرای سیستم‌عامل‌های چند وظیفه‌ای مانند رایانه‌های مینی‌رایانه و مجهز به سیستم‌های پیشین فراهم کرد. مایکروسافت با استخدام دیو کاتلر، که سیستم‌عامل VMS را برای شرکت تجهیزات دیجیتال توسعه داده بود، به این پیشرفت پاسخ داد. او توسعهٔ سیستم‌عامل Windows NT را هدایت می‌کند، که همچنان به عنوان پایه‌ای برای خط سیستم‌عامل مایکروسافت عمل می‌کند. پروژهٔ GNU توسط ریچارد استالمن فعال و برنامه‌نویس با هدف ایجاد جایگزینی کامل نرم‌افزار رایگان در سیستم‌عامل اختصاصی UNIX آغاز شد. در سال ۱۹۹۱، لینوس توروالدز، دانشجوی علوم کامپیوتر رایانه، با همکاری داوطلبانی که از طریق اینترنت همکاری می‌کنند، نخستین نسخه از هستهٔ لینوکس را منتشر کرد. به زودی با مؤلفه‌های فضای کاربر کاربر و نرم‌افزار سیستم ادغام شد تا یک سیستم‌عامل کامل ایجاد شود. از آن زمان به بعد، ترکیب دو مؤلفهٔ اصلی معمولاً توسط صنعت نرم‌افزار به سادگی به «لینوکس» گفته می‌شود، یک کنوانسیون نامگذاری که استالمن و بنیاد نرم‌افزار آزاد با آن مخالف هستند و ترجیح می‌دهند نام GNU / Linux را ترجیح دهند. هستهٔ سیستم‌عامل توزیع نرم‌افزار برکلی، معروف به BSD، مشتق‌شده از هستهٔ سیستم‌عامل UNIX، که از دههٔ ۱۹۷۰ توسط دانشگاه کالیفرنیا، برکلی توزیع شده‌است. آخرین نسخهٔ آن BSD ۴٫۴ در سال ۱۹۹۵ بود که بعد از آن دیگر نسخه‌ای نداد و بنابرین این یک پروژه متوقف شده می اشد. اجزاء اجزای سیستم‌عامل همه به منظور ایجاد بخش‌های مختلف یک کامپیوتر در کنار هم وجود دارند. تمام نرم‌افزارهای کاربر برای استفاده از هر کدام از سخت‌افزارها، چه از طریق ماوس و کیبورد و چه به عنوان یک کامپوننت اینترنت، باید از طریق سیستم‌عامل عبور کنند. هسته باید میزان استفاده از واحد پردازندهٔ مرکزی یا CPU برای هر پروسه را کنترل کند، هر پروسه‌ای که اولویت بیشتری داشته باشد، میزان استفاده از پردازنده را بر آن پروسه بالا می‌برد، همین‌طور وظیفهٔ نوشتن یا خواندن فایل‌ها را دارد و وظیفهٔ اجرای دستورها را دارد. در اکثر سیستم‌عامل‌های شبه‌یونیکس، کرنل در بوت لودر با یک سری پارامترها اجرا می‌شود و پروسهٔ init را اجرا می‌کند. سیستم‌عامل همچنین مجموعه‌ای از خدمات است که توسعه و اجرای برنامه‌های کاربردی را ساده می‌کند. وقفه‌ها وقفه‌ها برای سیستم‌عامل‌ها از اهمیت ویژه‌ای برخوردار است، زیرا آن‌ها یک روش کارآمد برای سیستم‌عامل برای تعامل و واکنش به محیط آن فراهم می‌کنند. | ## بخش 3: سیستم‌عامل | وقفه‌ها راهی را برای صرفه‌جویی در خودکار ثبت زمینه‌های ثبت محلی و اجرای کد ویژه در پاسخ به وقایع، به رایانه می‌دهد. حتی رایانه‌های بسیار اساسی از قطع سخت‌افزار پشتیبانی می‌کنند و به برنامه‌نویس اجازه می‌دهند کدی را که ممکن است هنگام وقوع آن اجرا شود، مشخص کند. هنگامی که یک وقفه دریافت شد، سخت‌افزار رایانه به‌طور خودکار هر برنامه‌ای را که در حال اجراست، به حالت تعلیق درمی‌آورد، وضعیت خود را ذخیره می‌کند، و کد رایانه‌ای را که پیش‌تر با وقفه در ارتباط بود اجرا می‌کند. هنگامی که یک دستگاه سخت‌افزاری باعث ایجاد وقفه می‌شود، هستهٔ سیستم‌عامل تصمیم می‌گیرد که چگونه با این رویداد معمولاً با اجرای کد پردازشی مقابله کند. میزان کد در حال اجرا بستگی به اولویت وقفه دارد (برای مثال: شخص معمولاً پیش از پاسخ دادن به تلفن به زنگ آشکارساز دود پاسخ می‌دهد). پردازش قطع سخت‌افزار کاری است که معمولاً به نرم‌افزاری به نام درایور دستگاه منتقل می‌شود که ممکن است بخشی از هستهٔ سیستم‌عامل، بخشی از برنامهٔ دیگر یا هر دو باشد. ممکن است درایورهای دستگاه با استفاده از روش‌های مختلف، اطلاعات را به یک برنامه در حال اجرا منتقل کنند. برای مثال اگر یک برنامه بخواهد به سخت‌افزار دسترسی داشته باشد، ممکن است هستهٔ سیستم‌عامل را قطع کند و این باعث می‌شود کنترل به هسته منتقل شود. معمولاً در سیستم‌های نجات از اطلاعات از سامانهٔ فایل‌بندی فقط خواندنی استفاده می‌شود. کاربر ریشه (Root) کاربر ریشه یا ابرکاربر، کاربری‌ست که بدون محدودیت دسترسی به تمامی فایل‌های سیستم‌عامل را دارد، در این حالت امنیت داخلی سیستم‌عامل به حداقل می‌رسد زیرا دیگر هیچ چیزی جلودار کاربر ریشه نیست و ممکن است بدافزاری، آسیب جدی‌ای وارد کند، یا اینکه ممکن است به اشتباه یک فایل مهم سیستمی پاک شود. مدیریت پروسه‌ها و حافظه (مموری) هر برنامه در حال اجرا یک پروسه است، چه در پیش‌زمینه چه در پس‌زمینه، هستهٔ سیستم‌عامل وظیفهٔ مدیریت پروسه‌ها را دارد. در سیستم‌عامل‌های شبه‌یونیکس پروسهٔ مادر یا init که در هنگام راه‌اندازی سیستم‌عامل اجرا می‌شود نیز مادر همهٔ پروسه‌هاست؛ یعنی اگر پروسهٔ مادر از بین برود همهٔ پروسه‌های دیگر نیز از بین می‌روند. به‌طور کلی اگر سیستم‌عامل قابلیت حافظهٔ مجازی داشته باشد، فضایی برای آدرس‌های پروسه‌ها و برنامه‌های در حال اجرا که آدرس مجازی نامیده می‌شود تا برنامهٔ دیگری نتواند به آن بخش از حافظه دسترسی یابد. چند وظیفه‌ای دسترسی به دیسک هستهٔ سیستم‌عامل از هرگونه دسترسی به نوشتن یا خواندن در دیسک جلوگیری می‌کند، بنابرین برای نوشتن فایلی (یا خواندن) تنها راه موجود استفاده از فراخوانی سیستم یا فراخوانی توابع سیستم هست، این به این معنی است تنها با فراخواندن توابعی که در هستهٔ سیستم‌عامل تعریف شده‌اند می‌توان روی دیسک نوشت یا فایلی را خواند. هرگونه خواندن یا نوشتن فایلی در حلقهٔ ۳ یا فضای کاربری توسط هستهٔ سیستم‌عامل جلوگیری می‌شود، دسترسی به دیسک تنها در حالت کرنل یا هسته ممکن است. سامانهٔ فایل‌بندی هر سیستم‌عامل سامانه (های) فایل‌بندی پیش‌فرضی دارد، مثلاً ویندوز از سامانهٔ فایل‌بندی NTFS و لینوکس از EXT4 به‌طور پیش‌فرض استفاده می‌کنند. راه‌انداز سیستم (init) در سیستم‌عامل‌های شبه‌یونیکس init یا اولیه‌ساز، پروسه‌ها و سرویس‌هایی که سیستم‌عامل برای راه‌اندازی به آن‌ها نیاز دارد را اجرا می‌کند مثلاً در لینوکس، برای بالا آمدن دسکتاپ گنوم نیازمند اجرای سرویس gdm است، بنابرین در انتها سرویس gdm را اجرا می‌کند. این پروسه به عنوان پروسهٔ مادر یا مادر همهٔ پروسه‌های سیستم نیز شناخته می‌شود که معمولاً شناسهٔ پروسهٔ ۱ را به همراه دارد. شبکه امنیت هستهٔ سیستم‌عامل وظیفهٔ جلوگیری از دسترسی هرگونه برنامه‌ای به سخت‌افزار را دارد. برای همین اصطلاحاً می‌گویند هستهٔ سیستم‌عامل در حلقهٔ ۰ وجود دارد، این امنیت سیستم را تا جایی فراهم می‌کند که برنامهٔ مخربی نتواند به سخت‌افزار صدمه‌ای بزند. تنها راه استفاده از برخی دسترسی‌ها به سخت‌افزار نظیر نوشتن فایل بر هارد دیسک، نیازمند فراخوانی سیستمی یا فراخوانی توابع سیستمی است. سیستم‌عامل‌های مدرن از قابلیت رابط کاربری گرافیکی در کنار رابط خط فرمانی پشتیبانی می‌کنند، مانند ویندوز لینوکس، مک او.اس. سیستم‌عامل‌هایی با پشتیبانی GUI یا رابط کاربری گرافیکی یک دسکتاپ یا میزکار دارند، اما سیستم‌عامل‌هایی که تنها رابط خط فرمانی یا CLI دارند، در یک ترمینال با یک پوسته اجرا می‌شوند. در سیستم‌عامل‌هایی که تنها CLI دارند، شیوهٔ ارتباط با سیستم، تنها به صورت دستورهایی خاص به صورت متنی (تنها راه ورودی کیبورد هست) است و در سیستم‌عامل‌هایی با قابلیت GUI به صورت گرافیکی و راحت‌تر است. | ## جمع‌بندی | در نگرش بالا به پایین، وظیفهٔ سیستم‌عامل این است که یک ماشین توسعه‌یافتهExtended Machine یا ماشین مجازی را به کاربران ارائه کند تا آن‌ها بتوانند آسان‌تر برنامه‌نویسی نمایند و درگیر پیچیدگی‌های سخت‌افزاری رایانه نشوند.