آموزش مباحث سیستم عامل – مجموعه مقالات جامع وبلاگ فرادرس


سیستم عامل (Operating System) در مفهوم عام خود نرمافزاری است که به کاربر یک دستگاه محاسباتی امکان اجرای اپلیکیشنهای دیگر را روی آن میدهد. با این که اغلب نرمافزارها امکان تعامل مستقیم با سختافزار دستگاهها را دارند؛ اما اغلب نرمافزارها برای سیستمهای عامل خاص نوشته میشوند و بدین ترتیب میتوانند با کتابخانههای مشترک سیستم عامل کار کنند و روی کارکرد اپلیکیشن متمرکز شوند و در مورد تفاوتها و جزییات سختافزاری نگرانی نداشته باشند.
سیستم عامل به مدیریت سختافزار رایانه میپردازد که شامل موارد زیر است:
- دستگاههای ورودی مانند کیبورد و ماوس
- دستگاههای خروجی مانند نمایشگر و پرینتر
- دستگاههای شبکه مانند مودم، روتر و اتصالهای شبکه
- دستگاههای ذخیرهسازی مانند دستگاههای حافظه داخلی و خارجی
- سیستم عامل همچنین امکان اجرا و مدیریت تخصیص حافظه برای هر نرمافزار نصب شده دیگر را نیز تسهیل میکند.
برخی سیستمهای عامل در دهه 1950 میلادی توسعه یافتهاند، یعنی زمانی که رایانهها هر زمان تنها یک برنامه را میتوانستند اجرا کنند. در دهههای بعدی رایانهها شامل برنامههای نرمافزاری متعددی شدند که در مواردی کتابخانه نامیده میشدند و با اتصال به همدیگر به آن چه که سیستم عامل مدرن مینامیم تبدیل شدند.
سیستم عامل شامل اجزا و ویژگیهای مختلفی است. ویژگیهای سیستم عامل به عنوان بخشی از ماهیت آن تعریف میشوند و بر حسب نوع سیستم عامل متفاوت هستند. با این حال برخی از اجزای مشترک سیستمهای عامل شامل موارد هستند:
- کرنل: کرنل سیستم کنترل سطح پایهای روی همه دستگاههای سختافزاری رایانه ارائه میکند. نقش اصلی کرنل، خواندن و نوشتن دادهها از حافظه پردازش دستورهای اجرایی و تعیین چگونگی دریافت و ارسال دادهها به نمایشگر، کیبورد و ماوس و همچنین تعیین چگونگی تفسیر دادههای دریافتی از شبکهها است.
- رابط کاربری: این بخش از سیستم عامل امکان تعامل کاربر با رایانه را فراهم میکند و میتواند شامل شمایلهای گرافیکی روی دسکتاپ یا رابط کاربری خط فرمان باشد.
- رابطهای برنامهنویسی اپلیکیشن: این کامپوننت به توسعهدهندگان اپلیکیشنها امکان نوشتن دادههای ماژولار را میدهد.
ما در مجله فرادرس در طی یک سری از نوشتههای متوالی به بررسی مفاهیم، موضوعات و امکانات مختلف سیستم عامل پرداختهایم که فهرست این مطالب را میتوانید در ادامه ملاحظه کنید:
در این بخش که اولین قسمت از سلسله نوشتههای بلاگ فرادرس با موضوع سیستم عامل محسوب میشود به بررسی جامع مفاهیم، کارکردها و نقش سیستم عامل میپردازیم. تعریف سیستم عامل، مفهوم مدیریت حافظه، مدیریت پردازنده، مدیریت دستگاهها، مدیریت فایل و برخی کارکردهای دیگر سیستم عامل در این نوشته ارائه شده است.
سیستمهای عامل از زمان پیدایش نخستین نسل از رایانهها وجود داشتهاند و در طی زمان تکامل یافتهاند. در این نوشته برخی از انواع سیستم عامل که کاربرد بیشتری دارند را بررسی میکنیم. این فهرست شامل سیستمهای عامل دستهای (Batch)، سیستمهای عامل اشتراک زمانی (Time-Sharing)، سیستم عامل توزیع یافته، سیستم عامل شبکهای و سیستم عامل همزمان (Real Time Operating System) میشود.
یک سیستم عامل هم به کاربران و هم به برنامهها سرویس ارائه میکند. از یک طرف سیستم عامل محیطی برای اجرای برنامهها فراهم میکند و از سوی دیگر سرویسهایی به کاربران میدهد که بتوانند برنامهها را در محیطی مناسب اجرا کنند. در این مقاله برخی از سرویسهای رایج ارائه شده از سوی سیستم عامل مورد اشاره قرار گرفتهاند.
هر سیستمعاملی صرفنظر از نوع آن، به طور کلی برخی مشخصات کلی دارد که در این نوشته به بررسی تک تک این مشخصات سیستم عامل میپردازیم. این مشخصات شامل پردازش دستهای، چندوظیفگی، چند برنامگی، تعاملپذیری، سیستم همزمان، محیط توزیع یافته و Spooling پرداخته شده است.
پردازش به یک برنامه در حال اجرا گفته میشود. اجرای یک پردازش میبایست به صورت ترتیبی انجام بگیرد. پردازشها به صورت نهادی تعریف میشوند که واحد پایهایِ کار پیادهسازی شده در سیستم را نشان میدهند. به بیان سادهتر برنامههای رایانهای در فایلهای متنی نوشته میشوند و هنگامی که روی سیستم عامل اجرا میشوند به پردازش تبدیل میشوند و همه وظایف اشاره شده در برنامه را به مرحله اجرا در میآورند.
منظور از زمانبندی پردازش، فعالیت یک نرمافزار مدیریت پردازش است که فرایند حذف پردازشهای در حال اجرا از CPU و انتخاب پردازشهای دیگر بر مبنای یک راهبرد خاص را مدیریت میکند. زمانبندی پردازش جزئی ضروری از سیستمهای عامل چندبرنامگی است. چنین سیستمهای عاملی امکان بارگذاری همزمان بیش از یک پردازش در حافظه اجرایی را فراهم میسازند و این پردازشهای بارگذاری شده با استفاده از فرایندی به نام time multiplexing، پردازنده را بین خود به اشتراک میگذارند.
ابزار زمانبندی پردازش به منظور زمانبندی پردازشهای مختلف که بر مبنای الگوریتمهای زمانبندی خاصی به CPU تحویل داده میشوند، مورد استفاده قرار میگیرد. شش الگوریتم زمانبندی پردازش وجود دارند که در این نوشته به بررسی آنها شده و شامل اجرا به ترتیب ورود (FCFS)، کوتاهترین کار بعدی (SJN)، زمانبندی مبتنی بر اولویت، کوتاهترین زمان باقیمانده، زمان بندی راند رابین یا نوبت گردشی و زمانبندی صف چند سطحی است.
منظور از نخ (thread) یک گردش اجرایی از طریق کد پردازشی است که شمارنده برنامه خاص خود را برای ردگیری دستورالعملهای اجرایی بعدی دارد.هر نخ شامل ثباتهای سیستم که متغیرهای کاری کنونی را نگهداری میکنند و پشتهای که شامل تاریخچه اجرایی است نیز میشود. در این نوشته به معرفی مفهوم محاسبات چند نخی در سیستمهای عامل میپردازیم.
مدیریت حافظه یکی از کارکردهای سیستم عامل است که به مدیریت حافظه اصلی و جابجایی پردازشها بین حافظه اصلی و دیسک در طی اجرا میپردازد. مدیریت حافظه صرفنظر از این که موقعیتهای مختلف حافظه به پردازشی تخصیص یافتهاند یا نه، همه آنها را مدیریت میکند. این فرایند میزان حافظهای که باید به پردازشها تخصیص یابد را تعیین میکند. مدیریت حافظه تصمیم میگیرد که در هر زمان کدام پردازش به حافظه دسترسی داشته باشد. مدیریت حافظه به ردگیری مقدار حافظه تخصیص یافته یا آزاد شده پرداخته و وضعیتهای متناظر با آنها را بهروزرسانی میکند.
یک رایانه میتواند حافظهای بیشتر از آن مقدار که به صورت فیزیکی رویش نصب شده را آدرسدهی کند. این حافظه اضافی در عمل «حافظه مجازی» (Virtual Memory) نامیده میشود و بخشی از هارددیسک است که برای شبیهسازی RAM رایانه اختصاص یافته است. در این نوشته به بررسی مفاهیم مرتبط با حافظه مجازی پرداخته شده است.
یکی از مهمترین وظایف یک سیستم عامل مدیریت دستگاههای ورودی/خروجی مختلف مانند ماوس، کیبورد، تاچپد، دیسک درایوها، آداپتورهای نمایش، دستگاههای USB، صفحههای بیتمپ، LED، مبدل آنالوگ به دیجیتال، سوئیچ روشن/خاموش، اتصالهای شبکه، ورودی/خروجی صوتی، پرینترها و غیره است. در این مقاله این مفاهیم مورد بررسی قرار گرفته است.
یک مفهوم کلیدی در طراحی نرمافزار I/O این است که چنین نرمافزاری باید هر کجا که امکان داشته باشد مستقل از دستگاه باشد تا بتوان برنامههایی نوشت که بتوانند بدون نیاز به تعیین دستگاه از قبل به ورودی و خروجی آن دسترسی داشته باشند. نرمافزارهای I/O غالباً در لایههای کتابخانههای سطح کاربر، ماژولهای سطح کرنل و سختافزار عمل میکنند.
فایل به مجموعه اطلاعات مرتبطی گفته میشود که با نام مشخصی روی یک حافظه ثانویه مانند دیسک مغناطیسی، نوار مغناطیسی و دیسکهای نوری ذخیره شده است. به طور کلی سیستم فایل یک توالی از بیتها، بایتها، و خطهای رکوردهایی است که معنای آن به وسیله ایجاد کننده و کاربر تعریف میشود. در این نوشته به بررسی مفاهیم ساختار فایل، نوع فایل، مکانیسمهای دسترسی فایل و تخصیص فضا میپردازیم.
منظور از امنیت، ارائه یک سیستم حفاظتی برای منابع سیستم رایانهای مانند CPU، حافظه، دیسک، برنامههای نرمافزاری و مهمتر از همه دادهها و اطلاعات مهمی است که روی سیستم کامپیوتری ذخیره شدهاند. اگر یک برنامه رایانهای از سوی یک کاربر غیر مُجاز اجرا شود، در این صورت وی ممکن است به دادههای ذخیره شده روی رایانه آسیب بزند. بنابراین یک سیستم رایانهای باید در برابر دسترسیهای غیر مجاز، دسترسی خرابکارانه به حافظه سیستم، ویروس، کرم و غیره محافظت شود. در این بخش از سلسله مطالب راهنمای جامع سیستم عامل به بررسی موضوعات احراز هویت، رمزهای عبور یک بار مصرف، تهدیدهای برنامه، تهدیدهای سیستم و طبقهبندی امنیت رایانه پرداخته شده است.
در این آخرین بخش از سلسله مطالب راهنمای جامع سیستم عامل به بررسی سیستم عامل لینوکس به عنوان یک سیستم عامل محبوب متن-باز پرداختهایم. این سیستم عامل به صورت اوپن سورس است و کد منبع آن به رایگان در اختیار همه قرار دارد؛ استفاده از آن نیز رایگان است. لینوکس با در نظر گرفتن سازگاریهای UNIX طراحی شده است و فهرست کارکردهای آن شباهت بسیار زیادی به یونیکس دارد.
سخن پایانی
بدین ترتیب همه مطالب مربوط به راهنمای جامع سیستم عامل در این نوشته معرفی شدهاند. اگر فرصت کافی برای مطالعه همه این مطالب داشته باشید، در پایان میتوانید مطمئن باشید که درک مناسبی از مفاهیم مرتبط با سیستم عامل به دست خواهید آورد.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای مهندسی نرم افزار
- آموزش سیستم های عامل
- مجموعه آموزشهای علوم کامپیوتر
- مجموعه آموزشهای لینوکس
- آموزش سیستم عامل لینوکس (Linux) – مقدماتی
==