ریشه سسیستم عامل
در فرهنگ رایانه سیستم عامل (به انگلیسی: Operating System) نرم‌افزاری است که مدیریت منابع رایانه را به عهده گرفته و بستری را فراهم می سازد که برنامه‌های کاربردی اجرا شده و از خدمات آن استفاده کنند.
دلایل ایجاد سیستم عامل

یک سیستم کامپیوتری پیشرفته از یک یا چند پردازنده، مقداری حافظه اصلی، دیسک‌ها ، چاپگرها ، صفحه‌کلید، صفحه‌نمایش، واسط‌های شبکه‌ای و دیگر دستگاه‌های ورودی و خروجی تشکیل شده است. اگر سیستم یکپارچه‌ای برای مدیریت این منابع وجود نداشته باشد، هر برنامه باید به تنهایی این کار را انجام دهد. سیستم عامل یک لایه نرم‌افزاری فراهم می‌کند که وظیفه مدیریت منابع سیستم را از دوش برنامه‌های کاربردی رهانیده و کار برنامه‌نویسی را ساده‌تر می‌نماید.

وظایف سیستم عامل
سیستم عامل دو کار عمده انجام می‌دهد :
در نگرش پایین به بالا ، منابع منطقی ( مانند فایل ها ) و منابع فیزیکی ( مانند دستگاه های سخت افزاری ) رایانه را مدیریت و کنترل می‌کند .
در نگرش بالا به پایین ، وظیفه سیستم عامل این است که یک ماشین توسعه یافته ( Extended Machine ) یا ماشین مجازی ( Virtual Machine ) را به کاربران ارائه کند تا آنها بتوانند آسان تر برنامه نویسی نمایند و درگیر پیچیدگی های سخت افزاری رایانه نشوند .

به طور کلی ، وظایف سیستم عامل شامل موارد زیر است :
• استفاده بهینه از منابع و جلوگیری از به هدر رفتن آنها
• تخصیص و آزاد سازی منابع
• اداره صف ها و زمان بندی استفاده از منابع
• حساب داری ( Accounting ) میزان استفاده از منابع

• ایجاد امنیت ( security )
• ایجاد ، حذف و اداره فرایند ها
• ایجاد مکانیسم های ارتباط بین فرایند ها و همگام سازی آنها
• مدیریت فایل ها و پوشه ها
• مدیریت حافظه های اصلی و جانبی
• برقراری امکان دسترسی چندتایی ( Multiaccess ) و اجرای هم روند ( Concurrent ) فرایند ها
• به اشتراک گذاری منابع ( Resource Sharing )
• تعیین راهکار هایی برای اداره بن بست ( deadlock ) ها
• جلوگیری از شرایط رقابتی ( Race Condition ) و تداخل یا در هم قفل شدن ( Interlock ) فرایند ها
• جلوگیری از گرسنگی ( Starvation )
سیستم عامل های فعلی

امروزه پرکاربردترین سیستم عامل جهان، ویندوز است که بر روی بیشتر رایانه‌های شخصی نصب شده ‌است.
نام چند ‌سیستم عامل معروف جهان در زیر آمده است:
• یونیکس
• لینوکس
• سولاریس (سیستم عامل)
• بی اس دی
• سیستم عامل داس

• مک اواس ده
• ام وی اس
• ویلز (سیستم عامل)
• ویندوز اکس‌پی
• ویندوز ویستا

• ویندوز ان‌تی
• ویندوز سی‌ئی
• آی‌فون اواس
• پالم (سیستم عامل)
• سیمبیان (سیستم عامل)
• گوگل اندروید

انواع سیستم عامل
سیستم عامل تک پردازنده
این نوع سیستم عامل ها ، سیستم عامل های نسل چهارم ( نسل فعلی ) هستند که بر روی یک پردازنده اجرا می شوند .
سیستم عامل شبکه ای
این نوع سیستم عامل ها ، از کنترل کننده های واسط شبکه و نرم افزار های سطح پایین به عنوان گرداننده استفاده می کنند و برنامه هایی برای ورود به سیستم های راه دور و دسترسی به فایل از راه دور در آنها به کار گرفته می شود .
سیستم عامل توزیع شده
این سیستم عامل ها خود را مانند سیستم عامل های تک پردازنده به کاربر معرفی می کنند ، اما در عمل از چندین پردازنده استفاده می کنند. این نوع سیستم عامل در یک محیط شبکه ای اجرا می شود در این نوع سیستم یک برنامه پس از اجرا در کامپوترهای مختلف جواب نهایی به سیستم اصلی کاربر بر می گردد سرعت پردازش در این نوع سیستم بسیار بالاست.

سیستم عامل بی درنگ
از این نوع سیستم‌های عامل برای کنترل ماشین آلات صنعتی، تجهیزات علمی و سیستم‌های صنعتی استفاده می‌گردد. یک سیستم عامل بلادرنگ دارای امکانات محدود در رابطه با بخش رابط کاربر و برنامه‌های کاربردی مختص کاربران هستند. یکی از بخش‌های مهم این نوع سیستم‌های عامل، مدیریت منابع موجود کامپیوتری بگونه‌ای است که یک عملیات خاص در زمانی که می‌بایست، اجراء خواهند شد , مهم‌تر اینکه مدیریت منابع بگونه ایست که این عمل در هر بار وقوع, مقدار زمان یکسانی بگیرد.
به طور کلی نرم افزارهای کامپیوتر به دو گروه تقسیم می‌شوند:

یکی برنامه‌های سیستمی که عملیات کامپیوتر را مدیریت می‌کنند و دیگری برنامه‌های کاربردی .سیستم عامل (operating system=os) اصلی ترین برنامه سیستمی است که به عنوان رابط بین کاربر و سخت افزار کامپیوتر عمل می‌کند .
سیستم عامل دو وظیفه (یا هدف) اصلی دارد:

سیستم عامل استفاده از کامپیوتر را ساده می‌سازد. این بدان معناست که مثلاًکاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسکها به راحتی فایلی را بر روی دیسک ذخیره و حذف کند . این کار در واقع با به کاربردن دستورات ساده‌ای که فراخوان های سیستمی (System Calls) را صدا می‌زنند انجام پذیرد .
در صورت عدم وجود سیستم عامل کاربرو یا برنامه نویس می‌بایست آشنایی کاملی با سخت افزارهای مختلف کامپیوتر (مثل مانیتور ,فلاپی , کی بورد و غیره) داشته باشدو روتین‌هایی برای خواندن و یا نوشتن آنها به زبانهای سطح پائین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته(Extended machine) یا ماشین مجازی (Virtual machine) یاد می‌شود که واقعیت سخت افزار را از دید برنامه نویسان مخفی می‌سازد.

وظیفه دوم سیستم عامل مدیریت منابع(Resource Management) می‌باشد, یعنی سیستم عامل باعث استفاده بهینه و سودمند (اقتصادی) از منابع سیستم می‌گردد. منظور از منابع پردازنده‌ها ,حافظه‌ها ,دیسکها,موس ها , چاپگرها , فایلها , پورتها و غیره هستند. یک سیستم کامپیوتری منابع نرم افزاری و سخت افزاری بسیار دارد که ممکن است در حین اجراء برنامه لازم باشند , سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز به برنامه‌های مشخصی تخصیص می‌دهد.
سیستم عامل معمولا اولین برنامه‌های است که پس از بوت شدن در حافظه بار می‌شود. پس از بار شدن قسمتی از سیستم عامل بطور دائم در حافظه باقی (Resident)می‌ماند. قسمتهای دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده می‌شود.

به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام می‌دهد هسته یا Kernel گفته می‌شود. هسته سیستم عامل برنامه‌ای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست.
سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر داشته‌اند. یعنی جهت سهولت کار با سخت افزارهای جدید, سیستم عامل‌ها توسعه یافتندو همچنین در اثنای طراحی سیستم عامل‌ها , مشخص شد که تغییراتی در طراحی سخت افزار می‌تواند سیستم عاملها را ساده تر و کارآمدتر سازد .
هر چند که تطبیق نسلهای کامپیوتر با نسلهای سیستم عامل کار درستی نیست ولی این تطبیق که در ادامه انجام می‌دهیم علت ایجاد سیستم عاملهای جدید را مشخص می‌سازد.
تطابق تکنیکهای سیستم عامل با نسل های کامپیوتر:

در نسل اول کامپیوترها (۵۵-۱۹۴۵) که از لامپ خلأ برای ساخت آنها استفاده می‌شد,زبانهای برنامه نویسی (حتی اسمبلی )ابداع نشده بودند و سیستم عامل نیز اصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند.
آنها برنامه‌های خود را توسط تخته مدار سوراخدار (و بعدها توسط کارتهای پانچ) و به زبان ماشین به کامپیوتر می‌دادند. اکثر برنامه‌های محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود.
• سیستم های دسته ایBatch system
• سیستم های چند برنامه ایMulti programming
• سیستم spooling
• سیستم اشتراک زمانی Time sharing
• سیستم عامل های کامپیوتر های شخصی و شبکه
• سیستم های توزیع شدهDistributed system
• سیستم ها ی چند وظیفه ایMulti tasking
• سیستم های چند پردازندهای Multi processing
• سیستم های بی درنگReal Time
ساختار سیستم عامل
• خدمات و مولفه های سیستم عامل:
o مدیریت پردازش در سیستم عامل

o مدیریت حافظه در سیستم عامل
o مدیریت فایل در سیستم عامل
o مدیریت ورودی- خروجی در سیستم عامل
• مفسر فرمان
• وقفه در سيستم عامل
• فراخوانی سیستمی
انوع سیستم عامل از نظر ساختار
o تکنیک سیستم یکپارچه

o تکنیک سیستم لایه ای
o سیستم مجازی در سیستم عامل
o سیستم مشتری –خدمتگزار
o زبان های پیاده سازی سیستم عامل
پردازش و زمابندی

• پردازش در سیستم عامل
• حالات یک پردازش
• بلوک کنترلی پردازش
• نخ بند-رشته
• زمان بندی در سیستم عامل

• انواع زمانبندی ها در سیستم عامل
• معیار های زمانبندی در سیستم عامل
انواع زمانبندی ها
اولویتها می‌توانند بصورت اتوماتیک توسط سیستم نسبت داده شوند و یا از خارج سیستم تعیین گردند, مثلاً ممکن است یک کاربر کار فوری داشته باشدو حاضر باشد به خاطر بدست آوردن سرویس بالاتر هزینه بیشتری بپردازد , یعنی اولویت را بخرد . یک اولویت ممکن است استاتیک باشد یا دینامیک . اولویت استاتیک تغییر نمی‌کندو بنابراین پیاده سازی آن ساده است .
ولی این نوع اولویت در مقابل تغییرات محیطی عکس العملی نشان نمی‌دهد . برعکس اولویت دینامیک بر اثر تغییرات محیطی تغییر می‌کند مثلا ً ممکن است در آغاز یک برنامه اولویت پائینی داشته باشد ولی به تدریج اولویت آن بهبود یابد.
o اول آمده-اول سرویس شده

o زمانبندی نوبت گردشی
o اول کوتاهترین زمان
o کوتاه ترین زمان باقی مانده
o بالا ترین نسبت پاسخ
o دادن اولویت به پردازش
o صفهای چند گانه MQ
o صفهای چند گانه با فید بک
o بلا درنگReal time
o تضمین شده در زمان مقرر
o زمان بندی شانسی
o LPT

نقدی بر طرح سیستم عامل ملی
سیستم عامل ملی ، لینوکس فارسی و در نهایت طرح ملی نرم افزارهای آزاد/متن‌باز عناوین یکی از مهمترین پروژه های ملی مرتبط با فن آوری اطلاعات هستند. پروژه ای که در صورت موفقیت میتواند شکل و نحوه استفاده از کامپیوتر را در سالهای آتی در کشور تغییر دهد. در ایران همانند بسیاری از کشورهای پیشرفته و یا در حال توسعه عده ای از صاحب نظران به این فکر افتادند تا سیستم عاملی ارزان تر و در عین حال با قابلیت بومی سازی را به عنوان جایگزین احتمالی سیستم عامل ویندوز مایکروسافت در نظر بگیرند. در واقع مواردی همچون هزینه بالای خرید سیستم عامل ویندوز ،عدم دسترسی به کد منبع این سیستم عامل، مشکلات سیاسی احتمالی در روابط کشورها و همچنین وابستگی به محصولات یک شرکت

خصوصی از جمله دلایلی بوده است که بسیاری از کشورها را مایل به سرمایه گذاری و تشویق شرکتها برای کار بر روی سیستم عاملهای دیگر کرده است. سیستم عامل یونیکس همواره به عنوان یک جایگزین شایسته برای سیستم عامل شرکت مایکروسافت مطرح بوده است اما در سالهای اخیر با پیشرفت سریع سیستم عامل لینوکس و مزایای این سیستم عامل همچون آزادیهای حقوقی و تجاری بیشتر در تغییر و استفاده از کدهای این نرم افزار و با اشتیاق توسعه دهندگان و برنامه نویسان برای صرف وقت در توسعه این سیستم عامل و

یا نرم افزارهای قابل اجرا تحت این سیستم بسیاری از کشورها راغب به بکارگیری نسخه های بومی این سیستم عامل شدند. در ایران نیز طرحی مشابه و با عنوان پرطمطراق سیستم عاملی فعالیت خود را آغاز کرد پروژه ای که در نهایت عنوان طرح ملی نرم افزارهای آزاد/متن‌باز را برای خود برگزید. قاعدتا سرمایه گذاری برای سیستم عامل جایگزین نه تنها ایرادی ندارد بلکه احتمالا بایستی به طراحان آن نیز آفرین گفت اما دقیقا مشکل از همان عنوان انتخاب شده برای این طرح خود را نشان داد و در واقع با کمی دقت هر کارشناس یا فرد آشنایی با این حیطه از خود سوال میکند که چگونه فارسی کردن سیستم عاملی که کرنل (هسته) ، محیط گرافیکی و بسیاری از نرم افزارهای و کدهای آن در غرب و در کشورهای مختلف

طراحی و پیاده سازی شده است و قرار است تنها در ایران محیط بصری آن فارسی و احتمالا پشتیبانی از زبان فارسی در برخی نرم افزارهای آن تقویت شود میتواند عنوان سیستم عامل ملی را بگیرد؟ در حالیکه چنین عنوانی تنها برگزیده سیستم عاملی است که قاعدتا اکثر کدها و نرم افزاری وابسته آن در داخل کشور نوشته شده باشد و نه اینکه تنها کلمات محیط محاوره آن ترجمه شود!

اما اجازه دهید از اشکال عنوان بگذریم و نگاهی بیاندازیم بر چگونگی اجرا و نحوه این طرح و اینکه تا چه حد موفق بوده است حال آنکه مسئولین مختلف این طرح در ماهه ای اخیر تلویحا از شکست و عدم حصول نتایج دلخوه این طرح پس از سه سال سخن گفته اند. طرحی که حداقل تاکنون بیش از نهصد و پنجاه میلیون تومان هزینه برداشته است (ایرنا – ۳/۲/۸۵).
ابتدا بایستی اشاره داشته باشم که فارسی کردن رابط کاربری لینوکس حتی قبل از این اجرای طرح ملی فوق و توسط جوانی ایرانی در آلمان و بعدها توسط علاقمندانی در ایران دنبال می شد و اولین نسخه های فارسی رابط کاربری فارسی لینوکس خارج از طرح فوق تهیه شده بود.اما سخن از نهصد و پنجاه میلیون تومان هزینه برای اجرای این طرح در سه سال گذشته شد طبیعتا بسیاری کنجکاو میکند که این مبلغ چگونه و چرا هزینه شده است.ابتدا بگذارید به اشاره ای به این داشته باشم که نهصد میلیون تومان چقدر است. حقوق یک

برنامه نویس حرفه ای خوش شانس در ایران ماهیانه در حدود ۵۰۰ هزار تومان است و نهصد میلیون تومان به عبارتی حقوق ۱۸۰۰ نفر/ ماه کار تخصصی است و البته همواره بایستی در هزینه نهایی پروژه ها هزینه های جانبی محل کار و نیروهای غیر متخصص را نیز در نظر داشت. همچنین لازم است اشاره به این داشته باشیم که کرنل و هسته اولیه لینوکس توسط یک نفر و در مدت کوتاهی پیاده شده است و حتی یکی بزرگترین پروژه های مرتبط با لینوکس به نام KDE که رابط کاربری و محیط گرافیکی رایج اکثر نسخه های سیستم عاملهای لینوکس است برای پیاده سازهای دهها نرم افزار زیر مجموعه خود از کتابخانه تابع و مرورگر گرفته تا نرم افزارهایی مانند KMAIL ، KHTML ، KTALK و… ، براساس مستندات سایت این پروژه

تنها صد و شصت و پنج نفر برنامه نویس داشته است که بسیاری هم تمام وقت روی آن کار نمی کردند و تقریبا نسخه مختلف این نرم افزار را در فواصل یک یا دوساله عرضه کرده اند و همچنین براساس مستندات این سایت ترجمه این محیط کاربری به زبانهای مختلف توسط یک یا دو نفر انجام گرفته و اکثرا در فاصله کوتاهی پس از عرضه نسخه انگلیسی صورت گرفته است. حال با شرایط فوق میزان نیاز به وقت و نیروی متخصص جهت پروژه ای فارسی سازی یا پروژه های تعریف شده در طرح سیستم عامل ملی قابل ارزیابی است و اجازه دهید با این دید و البته با توجه به تجربیات محدود نویسنده در زمینه برنامه نویسی و مدیریت پروژه به بررسی برخی پروژه ها و هزینه های صورت گرفته در این طرح بپردازیم .