عکس پیش‌فرض نوشته

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

در این مطلب قصد داریم نگاهی گذرا بر وضعیت برنامه سازی در سیستم های کامپیوتری اولیه و ظهور تدریجی سیستم عامل داشته باشیم.

تاریخچه سیستم های عامل

 

سیر تاریخی خلق سیستم های عامل به ترتیب به صورت زیر است:

1- پردازش سریالی (Serial Processing)

هر سیستم کامپیوتری بدون پشتیبانی نرم افزار سیستم ممکن است به زبان ماشین، برنامه سازی شود.

به این صورت که برنامه ها از طریق ترجمه دستی به صورت رشته هایی از دستورالعمل ها در مبنای 2 (شامل 0 و 1) ایجاد گردند، سپس دستورالعمل ها و داده ها با استفاده از کلید های میز فرمان وارد کامپیوتر شوند.

برنامه ها از طریق بارکردن شمارنده برنامه با آدرس اولین دستورالعمل آغاز میشدند و نتایج از طریق بررسی محتویات ثبات های مربوطه و محل های حافظه به دست می آمد.

دستگاه های ورودی/خروجی (I/O) در صورت وجود می بایست از طریق اجرای مستقیم برنامه کنترل میشدند.

گام بعدی در استفاده از سیستم کامپیوتر با پیدایش دستگاه های ورودی/خروجی نظیر کارت خوان ها، فراخوان های نوار کاغذی، مترجم های زبان و بارکننده ها برداشته شد.

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

چون بسیاری از برنامه های کاربران نیز از دستگاه های ورودی/خروجی استفاده میکردند، راهکار منطقی این بود که مجموعه ای از روال های استاندارد ورودی/خروجی جهت استفاده از تمام برنامه ها تامین گردند.

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

 

2- پردازش دسته ای (Batch Processing)

گام بعدی در تکامل سیستم های عامل، خودکار کردن ترتیب عملیات لازم جهت اجرای برنامه و جهت جنبه های تکنیکی ساخت برنامه بود.

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

دستورالعمل هایی باید فراهم میشد که به سیستم عامل بگوید چگونه با هر کار، منفرد برخورد کند.

این دستورالعمل ها معمولاً با استفاده از فرامین سیستم عامل تامین میگردید؛ فرامین سیستم عامل دستوراتی بودند که به زبان کنترل کار یا JCL نوشته میشدند.

فرامین JCL فرامینی جهت بارگذاری و اجرای برنامه ها و اعلام نیازمندی های منابع سیستم بود. این فرامین همراه با برنامه ها و داده های کاربر تحویل سیستم میشد.

 

یک بخش سیستم عامل دسته ای، به نام ناظر دسته ای (Batch Monitor) این فرامین را میخواند و تفسیر و اجرا میکرد. هر کار شامل چند گام بود و هر کدام در برگیرنده بارگذاری و اجرای برنامه.

 

هنگامی که ناظر با فرمان JOB-END مواجه میشد، ممکن بود به دنبال کار دیگری که با فرمان Job-Start مشخص میگردید باشد.

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

علاوه بر آن برنامه نویسان مجبور بودند به صورت Off-Line با استفاده از روبرداری حافظه برنامه هایشان را غلط گیری کنند.

اختلاف سرعت بین پردازنده ها سریع و دستگاه های ورودی/خروجی نسبتاً کند باعث پیشرفت های بیشتری در پردازش دسته ای در راستای افزایش توان عملیاتی و استفاده منابع از طریق هم پوشانی عملیات I/O گردید.

این پیشرفت ها همزمان با معرفی کانال های دستیابی مستقیم به حافظه (DMA)، کنترل کننده های جانبی و پردازنده های ورودی/خروجی تخصیص یافته بود.

هوشمندی زیرسیستم های ورودی/خروجی، هم پوشانی اجرای برنامه را با عملیات ورودی/خروجی از سوی برنامه های دیگر امکان پذیر ساخت و بدین ترتیب روش Buffering و سپس Spooling که شکل پیچیده تر بافرینگ I/O محسوب میشود، مورد بهره برداری قرار گرفت.

 

3- روش Buffering

برنامه ها معمولاً به طور منظم عملیات ورودی/خروجی و پردازش اطلاعات را انجام نمیدهند و ممکن است در یک مدت طولاتی برنامه صرفاً کارهای محاسباتی انجام دهد بدون اینکه عملیاتی ورودی/خروجی انجام دهد.

بهتر است همیشه دستگاه های جانبی مشغول نگه داشته شوند حتی در طی زمانی که برنامه مشغول محاسبه است.

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

 

راه حل ارائه شده برای یکنواخت کردن اختلافات بین عرضه و تقاضا عبارت است از استفاده از یک بافر، یعنی اینکه خطی از اطلاعات ورودی ممکن است در حافظه انباشته شود پیش از اینکه مورد نیاز واقع شده باشد.

هنگامی که برنامه به این خط احتیاج دارد میتواند آنرا با سرعتی متناسب با سرعت حافظه پردازش نماید. بنابراین بافرینگ شیوه ای از هم پوشانی ورودی/خروجی یک کار با محاسبات آن می باشد.

 

روش Spooling در دو حالتی که وجود دارند را به طور بسیار مختصر و گذرا بررسی میکنیم:

سیستم Offline Spooling

در این سیستم با استفاده از پردازنده های آهسته و نسبتاً ارزان، برنامه ها و اطلاعات وابسته به آنها بر روی نوار بار میشدند.

پس از تشکیل یک دسته از کارها، نوار به پردازنده اصلی منتقل میشد تا کارها و سایر اطلاعات با سرعت نسبتاً زیاد خوانده و اجرا شوند.

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

 

سیستم Online Spooling

در این سیستم فقط از یک پردازنده استفاده میشود و در آن یک سیستم Spooling ساده وجود دارد.

سیستم عامل کارها را از یک دستگاه آهسته ورودی/خروجی به دیسک منتقل میکند. از طرفی برنامه استفاده کننده عملیات ورودی/خروجی اش را در رابطه با این حافظه ثانویه انجام میدهد که به مراتب سریع تر است.

 

عبور یک کار از میان این سیستم با بار کردن کارت هایی که حاوی جزئیات این کار هستند، در کارت خوان شروع میشود.

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

اندازه آن بافر باید برابر با اندازه بلوک های اطلاعاتی که بر روی دیسک نگهداری میشوند باشد.

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

بدین ترتیب یک بسته کامل از کارت ها ممکن است به صورت تعدادی بلوک از کارکترها بر روی دیسک ظاهر شود و این ها با یکدیگر همان مدرک ورودی را تشکیل میدهند.

با اجرای برنامه استفاده کنندگان بلوک های ورودی از دیسک خوانده شده و به حافظه منتقل میشوند؛ بنابراین عملیات ورودی متناسب با سرعت دیسک انجام میشود.

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

 

در حالت کلی؛ سیستم Offline Spooling اشکالاتی دارد که در Online Spooling تا حد زیادی برطرف شده است.

 

 

4- عملکرد چند برنامگی (Multi Programming)

حتی با پیشرفت های پردازش دسته ای اساساً منابع سیستم کامپیوتر هر بار به یک برنامه منفرد اختصاص می یابد.

اجرای پیام های برنامه ها سبب میشود که پردازنده یا دستگاه های I/O در زمان های بیکاری به کار دیگری واگذار شوند و آن مستلزم آنست که به طور همزمان چند برنامه اجازه اجرا شدن در حافظه را داشته باشند.

توجه داشته باشید که با یک پردازنده، اجرای موازی برنامه ها امکان پذیر نیست و حداکثر در یک زمان یک برنامه میتواند تحت کنترل پردازنده باشد.

به چنین سیستمی که پردازنده بین چندین برنامه سوییچ میکند و هر یک را به مدت چند ده یا چند صد میلی ثانیه به اجرا در می آورد، سیستم چند برنامگی گویند.

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

 

5- سیستم اشتراک زمانی (Time Sharing)

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

در این سیستم کاربران متعددی میتوانند به طور Online با برنامه خود در ارتباط باشند و بدین معنی که از طریق یک ترمینال (دستگاه ورودی/خروجی) با تایپ فرامینی با سیستم محاوره ای ارتباط برقرار میکند.

برنامه ها و داده های ورودی به این ترتیب وارد میشوند، برنامه ها به کمک مترجم ترجمه میشوند و فایل مقصد ایجاد میشود و بعد از ترجمه کردن موفقیت آمیز برنامه ها و تولید برنامه مقصد، فایل برنامه اجرایی تولید میشود.

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

 

6- سیستم های بلادرنگ

یک سیستم بلادرنگ اغلب به عنوان یک دستگاه کنترلی در یک کاربرد خاصی به کار گرفته میشود.

حس کننده ها (Sensors) داده را به کامپیوتر می آورند.

این سیستم ها باید این داده ها را تجزیه و تحلیل نمایند و احتمالاً کنترل هایی را تنظیم کنند و ورودی های حس کننده ها را اصلاح نمایند.

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

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

سیستم های بلادرنگ با سیستم اشتراک زمانی تناقض دارند، لذا نمیتوانند هر دو با هم وجود داشته باشند.

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

در سیستم های بلادرنگ نرم، پاسخ دهی می بایست سریع باشد؛ اما مسئله پاسخ دهی به حادی سیستم های بلادرنگ سخت نیست.

به دلیل اینکه در این سیستم ها مهلت زمانی پشتیبانی نمیشود، استفاده آنها در کنترل صنعتی ریسک آور است.

 

7- سیستم های توزیع شده و شبکه

گرایش اخیر در سیستم های کامپیوتری، توزیع نمودن محاسبه چندین پردازنده است.

برای ایجاد چنین سیستم هایی دو شیوه وجود دارد:

– در یک سیستم با اتصال محکم (Tightly Coupled) پردازنده ها، حافظه و یک ساعت به صورت اشتراکی به کار گرفته میشوند. در این سیستم های چند پردازنده ای، ارتباط معمولاً از طریق حافظه اشتراکی انجام میگیرد.

– در یک سیستم با اتصال ضعیف (Losley Coupled) پردازنده ها، از حافظه و ساعت اشتراکی استفاده نمیکنند، در عوض هر پردازنده دارای حافظه محلی خاص خودش است.

این پردازنده ها ارتباط بین خود را از طریق خطوط ارتباطی مختلف مانند خطوط تلفن یا گذرگاه های با سرعت بالا برقرار میکنند.

این سیستم ها معمولاً تحت نام سیستم های توزیع شده معروف هستند.

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

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

 

برای آشنایی بیشتر با سیستم های شبکه و سیستم های توزیع شده میتوانید از مطالب زیر دیدن کنید:

شبکه های کامپیوتری   و   سیستم های توزیع شده

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.