-نسل سو م  (1980-1965):مدارات مجتمع و چند برنامگی

 

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

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

سیستم عامل  OS/360  چندین  تکنیک کلیدی جدید که در  سیستم عامل های نسل  دوم وجود نداشت

 

متداول  نمود. شاید مهمترین این تکنیک ها ،  چند برنامگی ( Multi Programming ) بود.

در محاسبات علمی سنگین تنگنای محاسباتی  CPU_BOUND (Multi Limited)  ،

I/O  به ندرت به کار می رود.

اما در پردازش داده های تجارتی ، زمان انتظار I/O   اغلب 80 تا 90 درصد کل زمان را به خود اختصاص می دهد. و  CPU بیشتر بیکار است. برای حل مشکل ، حافظه را به چند تکه تقسیم بندی نماییم.

 

سیستم عامل

Job 1

Job 2

Job3

 

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

 

 

ویژگی سیستم عامل نسل سوم :

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

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

3-       برای خروجی نیز ، به کار  گرفته شده با SPOOLING   دیگر نیازی به 1401

و نوار گردان های اضافی و حمل نوارها نبود.{تننباوم }

سیستم های چند برنامه ایMulti programming

در نسل سوم کامپیوترها (80-1965) از مدارات مجتمع  (Integrated Circuit=IC ) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه‌ها را می‌توان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی

( CPU boundیا CPU Limiter ( مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات Cpu می‌شود ودیگری برنامه های تنگنای  ( I/O Limited) I/O مانند برنامه‌های تجاری که بیشتر زمان کامپیوتر صرف ورود داده‌ها و خروج اطلاعات می‌شود.

یک اشکال مهم سیستم های دسته‌ای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان منتظر می‌شود. در این حال CPU بیکار می‌ماند و مجبور است صبر کند تا عملیات I/Oبه اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود 80تا90 درصد وقت CPU به هدر برود.

برای رفع این مشکل از تکنیک multiprogramming استفاده می‌شود. بدنی ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می‌شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می‌ماند, پردازنده به کار دیگری داده می‌شود. اگر تعداد کارهای موجود در حافظه کافی باشد می‌توان CPU را تقریباً صد در صد مشغول نگه داشت .
البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه‌ها بر همدیگر اثر سوء نداشته باشند . لذا مدیریت حافظه بحث مهمی در سیستم عامل می‌باشد.

 

 

کدامیک از موارد زیر برای ایجاد  یک سیستم چند برنامگی (Multi Programming ) کاملاً ضروری است؟

 

الف – وقفه                     ب-بافر                               ج- دیسک

 

چرا حتماً باید دیسک  باشد ؟

چون باید  Random Access      باشد  که Tape    این  توانایی را ندارد چون مراجعات  مکرر و عقب و جلو  کردن Tape    کار بیهوده است.

 

 

 

 

بافر کردن         (Buffering )

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

 

الف- کارهای I/O bound (I/O Limited : کار هایی که بخش زیادی از اجرای آنها در ارتباط با دستگاهای ورودی / خروجی بوده و محاسبات  زیادی ندار ند.

ب-کار های CPU bound (I/O Limited): کار هائی که حجم  زیادی محاسبات داشته  و بخش عمده  نیاز آنها برای اجرا ، وقت پردازنده است.

Tape

Drive

Input

Buffer

CPU

Output

Buffer

Tape

Drive

 

 

 

 

 


تکنیک  SPOOLING


یکی دیگر از ویژگیهای سیستم عامل نسل سوم  Spooling یا    On Line Spooling) )ا ست که معمولاً همراه چند برنامه گی استفاده می‌شود. این کلمه مخفف عبارت ( Simultaneous Peripheral Operation onLine ) می‌باشد. در این سیستم به جای آنکه کارتها از دستگاه کارت خوان مستقیماً وارد حافظه گردند و توسط CPU پردازش شوند ابتدا کاراکتر به کاراکتر در بافری در حافظه قرار گرفته و سپس به صورت بلوکی بر روی دیسک نوشته می‌شود.
وقتیکه برنامه کاربر اجراء می‌شود و از سیستم عامل تقاضای ورودی می‌کند, اطلاعات ورودی به صورت بلوکی و با سرعت زیاد از دیسک خوانده می‌شوند. به طور مشابه هنگامی که برنامه برای خروجی چاپگر را احضار می‌کند, خط خروجی در یک بافر کپی شده و سپس در دیسک نوشته می‌شود. پس اطلاعات خروجی از دیسک بر اساس ترتیب و اولویت در چاپگر چاپ می‌شوند.
در واقع اسپولینگ عمل I\O یک کار را با عمل محاسباتی کار دیگر روی هم می‌اندازد (overlap) . در سیستم اسپولینگ د رحالیکه ورودی یک کار از دستگاه ورودی خوانده می‌شود,کار دیگری در حال چاپ شدن است , در همین بین حتی کار دیگری می‌تواند در حال پردازش و اجراء باشد . در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسک (که سریع است) انجام می‌دهد و نه متناسب با سرعت کارتخوان یا چاپگر (که خیلی کند هستند ).

بنابراین سیستم مذکور باعث استفاده بهینه از CPU و سایل I\O می‌شود و سرعت عمل را بالا می‌برد. در این سیستم دیگر نیازی به کامپیوترهای 1401,نوار گردانهای اضافی و حمل نوارها (مانند سیستم‌های دسته‌ای )نداریم.

 سه مکانیزم برای پیاده سازی  :Spooling

1-  بافر

2-دیسک

3- وقفه(Interupt)


بلوک دیاگرام یک تکنیک  اسپولینگ می‌تواند به صورت زیر باشد:

1-سیستم ورودی کاراکترهایی که توسط کارتخوان وارد می‌شود را در بلوکهایی جمع آوری کرده وبه کمک مدیر دیسک این بلوکها را بر روی دیسک می‌نویسد . درانتهای هر مدرک ورودی اطلاعاتی راجع به آن  فرآیند (مانند محل آن بر روی دیسک , اولویت ,اسم استفاده کننده ) به قسمت زمانبند کار فرستاده می‌شود.


2-زمانبند کار (Job scheduler) این زمانبند یک لیست از کارهای موجود در ماشین و اطلاعات لازم در مورد  مدرک ورودی مورد نیاز هر یک را نگه می‌دارد. به این لیست انبار کار یا Jobpoolیا ـJoblist نیز گفته می‌شود. زمانبند کار به پردازنده کار می‌گوید که کدام کار بعدی را اجرا کند. برای این منظور اطلاعاتی در مورد محل کار و مدرک   ورودی آن بر روی دیسک را به پردازنده کار می‌دهد . همچنین اگر کارهای متعددی منتظر ورود به حافظه باشند و فضای کافی برای همگی در دسترس نباشد , زمانبند کار تعدادی از آنها را انتخاب کرده و به حافظه می‌آورد.

 3-پردازنده کار (Job processor) کار داده‌ شده را اجراء می‌کند. این پردازنده محل کامپایلرها و سایر نرم افزارهای سیستم را بر روی دیسک می‌داند. هنگام اجراء پردازنده کار خروجی های خود را به صورت بلوکی بر روی دیسک می‌نویسد و مدارک خروجی را تشکیل می‌دهد . پردازنده کار اطلاعاتی راجع به محل و اولویت مدارک خروجی به زمانبند خروجی می‌دهد.


4-زمانبند خروجی (output scheduler) لیستی از مدارکی که باید چاپ شود را نگه می‌دارد. وقتی که چاپگر آزاد شد , این زمانبند مدرک بعدی را برای چاپ انتخاب کرده و محل مدراک  بر روی دیسک را به سیستم خروجی می‌گوید.

-5-سیستم خروجی بلاکهای خروجی را از روی دیسک خوانده و کاراکتر به کاراکتر (یا خط به خط)آنها را به چاپگر می‌فرستد.


6-مدیر دیسک (Disk Manager) که وظایف خواندن و نوشتن یک بلاک بر دیسک , تخصیص یک بلاک خالی روی دیسک و برگرداندن یک بلاک به مجموعه فضای آزاد دیسک را بر عهده دارد. در خواستهای مربوطه به دیسک در یک صف به نام   

 (Disk Transfer Queue) DTQ ذخیره می‌گردد.


البته هر سیستم اسپولینگ یک هماهنگ کننده(Coordinator) دارد که مسئول زمانبندی پردازش های سیستم و فراهم کردن عملیاتی که جهت همگام کردن بکار می‌آیند می‌باشد. این عملیات توسط دو روال انجام می‌پذیرد

 

 

:

Controller

Card reader  

Disk

Controller  printer

Input Spool Area

Output spool Area

 

 


buffer

Printer Buffer

printer




Card reader

Input

buffer

CPU

Controller

disk 

memory

 

 

 

 

 

 

 

 

 



تفاوت  Buffering  و Spooling  چیست؟


1-بافر کردن (  Buffering)، امکان همپوشانی  ( همزمانی )  عمل I/O   یک کار  را با عملیات پردازش   همان کار  بوجود   می آورد.در حالیکه      spooling   امکان همزمانی پردازش ورودی –خروجی چندین کار رابا یکدیگر  فراهم می کند.

  2- هر  Spooling  الزاما   بافر دارد ولی  بافر Spooling   ندارد. .

سیستم Spooling راه حلی برای کار کرد ن با دستگاه های  I/O  انحصاری ، در یک سیستم چند برنامگی است. یک دستگاه Spool  شده نوعی را در نظر بگیرید: یک  چاپگر هر  چند از نظر تکنیکی آسان خواهد بود که به هر فرآیند کاربر اجازه دهیم که فایل مخصوص کاراکتر ی را برای چاپگر  باز کند، ولی فرض کنید که فرآیند آن را باز کند و برای ساعت ها کار نکند، در این حالت  هیچ یک از دیگر فرآیند ها نیز قادر به چاپ کردن نخواهند بود.به جای این روش کاری که انجام گرفته است ،  ایجاد یک فرآیند ویژ ه می باشد که شبح (Deamon)نامیده  می شود و یک فهرست مخصوص که فهرست Spooling   نامیده  می شود.

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

 

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

 

 

نکته:

یک کاربرد و استفاده ویژه از انتقال فایل Spool   شده ، سیستم پست الکترونیکی (Email) اینترنت می باشد. این شبکه شامل میلیونها  ماشین در سراسر جهان است که با استفاده از شبکه های کامیوتری با یکدیگر ارتباط بر قار می کنند. برای ارسال  Mail به شخصی ، باید برنامه ای مانند را صدا بزنید که نامه را جهت ارسال شدن می پذیرد و سپس آن را به صورت امانت در فهرست Spooling   قرار می دهد تا بعداً  ار سال شود. تمام سیستم Mail  در خارج از سیستم عامل  اجرا می شود.{تننباو م 187}

Spooling در تمام سیستم عامل ها قابل استفاده است.


سیستم های اشتراک زمانی(time  sharing)
این سیستم‌ها از اوایل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است .

در سیستم‌های چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامه‌ها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردنهای متعدد را نمی‌داد. در سیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل کی بوردبرای ورودی و مونیتور برای خروجی  است با کامپیوتر به صورت محاوره‌ای  (interactive) رابطه بر قرار می‌سازد .
کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مونیتور دریافت می‌کند. در این سیستم‌ها چندین کاربر به کمک ترمینالهایی که به کامپیوتر وصل است همزمان می‌توانند از آن استفاده کنند .
در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامه‌های مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ می‌شودو بنابراین هر کاربر تصور می‌کند کل کامپیوتر در اختیار اوست .در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد می‌باشد و نه بالا بردن میزان کاربرد منابع ماشین .
کاربر می‌تواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدایی (debug) کند . سیستم‌های دسته‌ای برای اجرای برنامه‌های بزرگ که نیاز محاوره‌ای کمی دارند مناسب است ولی سیستم‌های اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است , استفاده می‌شوند.
در زمانی که کاربری در حال تایپ برنامه‌اش یا فکر کردن روی خطاهای برنامه ‌اش می‌باشدCPU به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند

 .

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

نکته 2: در سیستم های  اشتراک زمانی اندازه برهه زمانی (Quantum  ) را سیستم عامل معین می کند. همه جا مدیریت با سیستم عامل است . هیچ اتفاقی را سیستم عامل نمی فهمد بلکه  فقط از طریق  وقفه

 (interupt ) می فهمد.

نکته 3: CPU ، Timer   ندارد بلکه Timer   در روی مادر برد است یعنی Intrupt  Timer   به CPU  می دهد و بعد برای اجرا سیستم عامل وارد عمل می شود.

نکته 4: در سیستم های محاورهای(interactive) اولین کاری که انجام می دهیم عمل Login   است و گرنه اجازه ورود  به سیستم را نمی دهد.  ابتدا  UserID  و Password   را  چک میکند. بعد  به کاربر  یک  Token    می دهد این Token

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

زمانبند کار دائماٌ کنترل می کند که تعداد کاربران  محاورهای  چند تاست ؟ اگر از تعداد مجاز بیشتر باشد جلوی ورود کاربران دیگر را می گیرد.

نسل چهارم (1980 تا کنون ) : کامپیوتر های شخصی

سال 1980 تاکنون که مدارات مجتمع با مقیاس بزرگ (Large Scale Integrated Circuit) ابداع شدند, به عنوان نسل چهارم کامپیوترها شناخته می‌شود. در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاوره‌ای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی pcهامانند DOSفقط تک کاربره و تک برنامه‌ای بودند.
ولی سیستم عاملهای امروزی آن مانند Windows NT خاصیتهای چند برنامگی ,چند کاربرته (multiuser) و شبکه‌ای را دارا هستند. با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده است وبرای PC ها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی , سیستم به سمت راحتی کاربر پیش می‌رود.
به تدریج ویژگی‌های مهم سیستم عاملهای قدیمی در کامپیوترهای بزرگ (مانند محافظت حافظه , حافظه مجازی, محافظت فایلها ، همزمانی پردازشهاو...) بر روی سیستم های PC نیز پیاده سازی شده است .

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

 


سیستم های بی درنگReal Time

یک سیستم بلا درنگ سیستمی است که درآن زمان نقش مهمی را ایفا می کند . نوعاٌ اگر یک یا چند دستگاه فیزیکی را از خارج کامپیوتر  تحریکاتی ایجاد کنند کامپیوتر  باید طی مدت زمانی معین در برابر آنها واکنش مناسب نشان دهد. مثل سیستم مانیتورینگ  بخش آی سی یو  بیمارستان ، سیستم خلبان اتوماتیک هواپیما و سیستم کنترل امن و مطمئن یک نیروگاه اتمی می باشد.{تننباوم 106}
سیستمهای بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده می‌شوند. سیستم در این حالت می‌بایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد .سیستمهای کنترل صنعتی, پزشکی , کنترل موشک و غیره از این دسته‌اند.
نکته :در سیستمهای بی درنگ زمان پاسخ باید سریع و تضمین شده باشد ولی در سیستم اشتراک زمانی مطلوبست که زمان پاسخ سریع باشند (ولی اجباری نیست).درسیستم دسته‌ای هیچ محدودیت زمانی در نظر گرفته نمی‌شود.

در سیستمهای بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه ‌های ROM استفاده می‌شود. سیستم عاملهای پیشرفته نیز در این سیستمها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدا می‌کند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی می‌شود.
سیستم های بلدرنگ معمولاٌ به دو گروه تقسیم میشوند.

1-بلادرنگ  سخت ( Hard Real Time )

2-بلادرنگ  نرم (Soft Real Time )


سیستمهای بی درنگ با سیتسمهای اشتراک زمانی تناقض دارند لذا نمی‌توانند هر دو توأماً وجود داشته باشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستم‌های بلادرنگ از حافظه مجازی و اشتراک زمانی استفاده نمی‌کنند به این سیستم‌ها «بی درنگ سخت»(Hard Real Time) نیز گفته می‌شود.

در  سیستم بلادرنگ نرم بعضی مواقع آماده نشدن  پاسخ در مهلت زمانی تعیین شده قابل تحمل است.

در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی, نسبت به سایر وظایف الویت دارد و تا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستمها مهلت زمانی(deadline) را پشتیبانی نمی‌کنند استفاده آنها در کنترل صنعتی ریسک آور است . هر چند که این سیستمهای بی درنگ نرم می‌بایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستمهای بی درنگ سخت نمی‌باشد.
از کاربردهای سیستم بی درنگ نرم می‌توان رزرواسیون شرکتهای هواپیمایی ,چند رسانه‌ای     (multimedia) واقعیت مجازی (Virtual reality) را نام برد. این سیستمها به ویژگی‌های سیستم عاملهای پیشرفته (که توسط بیدرنگ سخت حمایت نمی‌شوند)نیازمندند . بعضی از نسخه‌های UNIX مانند solaris 2 خاصیت بیدرنگ نرم را دارا می‌باشند.

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

 

 

 

 

سیستم های چند پردازندهای Multi processing

کامپیوترها می‌توانند به جای یک CPU چندین CPU داشته باشند که در اینصورت به آنها سیستم multiprocessing میگویند.جهت استفاده از این سیستمهای نیاز به یک سیستم عامل خاص می‌باشد که بتواند چندین برنامه یانخهای یک فرآیند ) را به صورت موازی واقعی روی آنها اجراء کند .)


نکته : سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی

چند CPU به کار می‌روند.

 

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

-1  سیستم حاکم تابع( Master Slave Mode

-2سیستم عامل توزیع شده با ارتباط     Loosely Coupled System    

 -3 سیستم عامل  توزیع شده  با ارتباط Tightly  coupled  System 


پردازنده موازی(MIMD)

 

 


حافظه توزیعی Loosely Coupled System) )         حافظه مشترک) Tightly  coupled  System)

 

 


خوشه (چند کامپیوتری)
.

                                                                         متقارن (SMP)            نامتقارن( /slave Master)

1-در روش  حاکم و تابع(Master Slave Mode  )  ، همیشه یک پردازنده ، که حاکم (Master ) نامیده می شود، عملیات سیستم عامل را  اجرا می کند . پردازنده های دیگر بمانند یک تابع (Slave)عمل کرده و عملیات سیستم عامل را اجرا نمی کنند. اگر پردازنده تابع(Slave) به سرویس سیستم عامل  نیاز داشته  باشد . باید آن را با وقفه دادن به حاکم (Master)تقاضا کند و تا وقفه برنامه جاری منتظر بماند.

سیستم های  توزیع شده  در دو دسته  قرار می گیرند:{کتاب مهندسی کامپوتر- نگارش سمیع - کاجی}

 

الف- سیستم های  با  ارتباط  محکم (Tightly  coupled  System): در این  سیستم ها پردازنده ها دارای پالس  ساعت یکسان و حافظه مشترک هستند . اجرای کار در آ نها  مشکل بوده  ولی  سرعت  اجرا بالاست.
گاهی اوقات به سیستمهای چند پردازنده‌ای ,سیستمهای Tightly Coupled یا ارتباط محکم نیز گفته می‌شود. چرا که پردازنده‌ها کلاک (Clock), گذرگاه و همچنین حافظه مشترکی دارند روال های سیستم عامل بین پردازنده های موجود توزیع شده اند. با این وجود  ، هر تابع خاص از سیستم عامل در هر زمان فقط به یک پردازنده اختصاص داده می شود . این نوع سازمان دهی ، سیستم عامل شناور (Floating Operating System ) خوانده می شود زیرا روال ها از یک پردازنده به پردازنده دیگر شناورند و ممکن است  اجرای روال ها در زمان های مختلف  به عهده پردازنده های مختلف باشد.{معماری کامپیوتر موریس مانو }

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

 

 

 

ب-سیستم هایی با ارتباط  سست(Loosely Coupled System ): در این سیستم ها تعدادی پردازنده  با خطوط  ارتباطی  مناسب وجود دارند و هر پردازنده  دارای پالس ساعت و حافظه مستقل است و سرعت  اجرا پائین می باشد . به سیستم های توزیع شده گاهی اوقات سیستمهای Loosely Coupled یا ارتباط ضعیف نیز می‌گویند,چرا که هر پردازنده کلاک و حافظه مستقلی دارد . پردازنده‌ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه‌های سریع یا خطوط تلفن ارتباط دارند.

هر پردازنده می تواند روالهایی از سیستم عامل را که  به آنها نیاز دارد  اجرا کند . این سازمان برای سیستم های با کوپل سست (Lossely Coupled ) که هر پردازنده ممکن است نسخه کامل از سیستم  عامل خود را داشته باشد بیشتر مناسب است.

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

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

 


در سیستم چند پردازنده‌ای،CPU  ها باید بتواند از حافظه , امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند .مزایای این سیستمهای عبارتند از :

·         زیاد شدن توان عملیاتی (throughput) .منظور از throughput تعداد کارهایی است که در یک واحد زمانی تمام می‌شوند. بدیهی است هر چقدر تعداد پردازنده‌ها بیشتر باشد تعداد کارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست , مثلا اگر تعداد پردازنده‌ها n باشد سرعت اجراء برنامه‌ها nبرابر نمی‌شود چرا که بخشی از وقت پردازنده‌ها جهت مسائل کنترلی و امنیتی وسوئیچ کردنها به هدر می‌رود.

·         صرفه جویی در هزینه‌ها , از آنجا که پردازنده‌ها منابع تغذیه , دیسکها , حافظه‌ها و ادوات جانبی را به صورت مشترک استفاده می‌کنند در هزینه‌های سخت افزاری صرفه‌جویی می‌شود.

·         تحمل پذیری در برابر خطا(fault-tolerant)سیستم های مالتی پروسسور قابلیت اعتماد را افزایش می‌دهند چرا که خرابی یک CPU سبب توقف سیستم نمی‌شود بلکه تنها سبب کند شدن آن خواهدشد .استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابی جستوجو شده , تشخیص داده شده و در صورت امکان اصلاح شود (یا کنار گذاشته شود). این توانایی به ادامه سرویس , متناسب با سطح بقای سخت افزار ,تنزل مطبوع یا  graceful degradationنامیده می‌شود.

سیستمهای عاملهای چند پردازنده‌ای به دو دسته کلی متقارن و نامتقارن تقسیم می‌شوند.:
در سیستم چند پردازنده‌ای نامتقارن (Asymmetric Multi Processing = ASMP)    یا   Master/ Slave    یک پردازنده جهت اجراء سیستم عامل و پردازنده‌های دیگر جهت اجرای برنامه‌های کاربران استفاده می‌شود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء می‌شود, ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازنده‌‌ای به دست می‌آید.
این نوع سیستم عامل‌ها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمک پردازنده‌ و پردازنده‌ای که به هم متصل هستند یا دو پردازنده‌ای که از تمام حافظه‌موجود مشترکا" استفاده نمی‌کنند . یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی می‌تواند حالات مختلف داشته باشد.
در سیستم چند پردازنده‌ای متقارن(symmetric Multi Processing = ASMP) سیستم عامل می‌تواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازنده‌ها همزمان اجراء شود. در این حالت حافظه بین تمام آنها مشترک می‌باشد. تمام پردازنده‌ها اعمال یکسانی را می‌توانند انجام دهند. سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:

·         از آنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یک CPU ها اجراء شود باعث می‌گردد که آن پردازنده همواره بار سنگینی داشته باشد, در حالیکه احتمالاً پردازنده‌های دیگر بی کار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن (balancing) بار سیستم می‌شود.

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

·         بر عکس سیستم عامل نامتقارن , سیستم عامل قابل حمل( portable) بر روی سیستم های سخت افزاری مختلف است .

سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 ورژن و همچنین windows NTاز نوع متقارن می‌باشند.

وجود پردازنده‌های متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread ) یا فرآیندها (process) روی هر یک از پردازنده‌ها به عهده سیستم عامل است .
گرچه multithreadingو  multiprocessingامکانات مستقلی هستند ولی معمولاً با هم پیاده سازی می‌شوند. حتی در یک ماشین تک پردازنده‌ای , چند نخی کارایی را افزایش می‌دهد. همچنین ماشین چند پردازنده‌ای حتی برای فرآیندهای غیر نخی هم کارآمد است .

/Slave  )

سئوال:{معماری کامپیوتر موریس مانو}                                             

شباهت  سیستم های چند پردازنده ای  و چند کامپیوتری چیست؟

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

 

تفاوت   سیستم های چند پردازنده ای  و چند کامپیوتری چیست؟

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

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

 

 

 

فرق بین   فرآیند و برنامه چیست؟{60  تننباوم }

 

مثال:

دانشمند کامپیوتری را مجسم کنید که می خواهد برای دخترش یک کیک تولد درست کند. او  دستوالعمل  پخت کیک  و مواد لازم از قبیل آرد ، تخم مرغ ، شکر ، کمی وانیل ،... را در اختیار  دارد. در اینجا دستورالعمل  پخت  کیک یک “  برنامه “

 

(الگوریتمی  که به زبان مناسب  بیان شده  است ) است. دانشمند هم در حکم CPU   است و مواد  لازم داد ه های  ورودی  هستند .

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

 

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

 

 

فرق بین   Multi Program   و Multi Task   چیست؟

 

سئوال 1: در   multi program  چه  موقع عمل  switching    انجام می گیرد؟  وقت I/O

 

سئوال 2: در   multi task   چه  موقع عمل  switching    انجام می گیرد؟  در یک برهه زمانی  یعنی فقط منتظر عمل I/O   

 

  نمی ماند  اگر به I/O   بر خورد کند switch   می کند.  ولی اگر به I/O   بر خورد نکند و آن برهه زمانی بگذرد بازهم switch می کند. یعنی پردازنده از آن گرفته می شود.

 

نکته1: یک سیستم   عامل  میتواند چند برنام ه(Multi program)  باشد ولی  چند  وظیفه ای(Multi  Task) نباشد. مثل ویندوز 1و2و3

چون فقط به I/O   برخورد می کردند پردازنده Switch  می کرد.

 

نکته2: یک سیستم   عامل  که هم  چند برنامه(Multi program) و هم  چند  وظیفه ای(Multi  Task) باشد. مثل ویندوز 95و98

 

 چون اگر چند پنجره را باز کنید می بینید همه پنجره ها در حال فعلیت هستند. یعنی پردازنده ما بین آنها Switch   می کند .

 

نکته 3: اشتراک زمانی (Time Sharing ) وقتی است که سیستم چند کاربره(Multi User) باشد.

 

 

مثال :  وینوز 2000  و time sharing  و multi task است.  N   تا کاربر بتوانند از طریق شبکه به  یک سیستم وصل شوند و کاملا منابع اش را به اشتراک بگذارد. در ویندوز NT - n  تا کاربر به آن سیستم می یابند و از منابع سیستم استفاده می کنند.

 

نکته 4:  در وینروز95و 98 همه منابع غیر از حافظه و پردازنده را می توانیم به اشتراک بگذاریم.ولی در وینروز NT  و ویندوز 2000و یونیکس همه منابع را می توانیم به اشتراک بگذاریم.

 

 

 

دو نکته  ضرورت چند وظیفه ای  بودن را روی کامپیوتر های شخصی موجب شده اند.{استالینگ    87}

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

 

برای مثال ممکن است کاربران بخواهند یک برنامه ، word    ، یک برنامه Excel    ، یک برنامه Autocad

 

 را به طور همزمان  برای ایجاد یک سند به کار برند.

1-       باز کردن برنامه Autocad

2-       رسم شکل و ذخیره آن

3-       بستن برنامه Autocad

4-       بازکردن Word

5-       درج شکل در محل مناسب

 

در محیط چند وظیفه ای کاربر هر یک  از کاربرد های مورد نیاز خود را باز کرده و به صورت باز رها می کند . و

اطلا عات به سادگی می تواند بین  چند کاربرد حرکت کند.

ولی در تک وظیفه ای  اگر تغییری در شکل لازم باشد کاربر باید برنامهWord   را ببندد، برنامه Autocad را باز کند ، شکل را ویرایش و ذخیره نماید ، برنامه Autocad راببندد، برنامه  Wordرا باز کند ودر نهایت شکل  ویرایش شده را درج کند . که خیلی ملال آور است.

 

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

 

برای هر کدام  از وقفه ها ما سرویس  روتین مربوط به خودش را داریم .

 

 

 

تعویض فرآیند:  زمانیکه  فرآیند در حال اجرا با وقفه مواجه می شود و سیستم عامل  فرآیند دیگری را برای  اجرا در نظر می گیرد و کنترل را به آن منتقل می کند.ولی  چند نکته طراحی مطرح می شود . اولاٌ ، چه حادثهای موجب شروع یک تعویض می گردد؟ دوماٌ تفاوت  بین تعویض متن(Context Switching) و تعویض فرآیند context  Process)چیست؟ سوماٌ برای تعویض فرآیند  سیستم عامل چه اعمالی را روی  ساختمان داده ایی که تحت کنترل دارد، باید انجام دهد؟

 

تفاوت  بین تعویض متن(Context Switching) و تعویض فرآیند context  Process)چیست؟{استالینگ 143}

فرآیندی که در حال اجراست ، به وسیله یک وقفه (حادثه ای که خارج از فرآیند بروز کرده و پردازنده آن را تشخیص می دهد) یا با اجرای یک System Call  از سیستم عامل ، دچار وقفه می شود. در هر صورت ، پردازنده یک عمل تعویض حالت() انجام می داده و کنترل را به یک روال سیستم عامل منتقل می کند.بعد از انجام عمل لازم ، ممکن است سیستم عامل  فرآیند ی که دچار وقفه شده بود را از سر گیرد و یا فرآیند دیگری را فعال نماید.{استالینگ 156}

 

 

چه چیزی متن (وضعیت) ذخیره شده را تشکیل می دهد؟

هر اطلاعی که بتواند با اجرای سرویس روتین  وقفه تغییر کند و برای از سرگیری  برنامه  وقفه داده شده  لازم باشد باید ذخیره گردد. بنابراین شامل بلوک کنترل فرآیند(PCB) باید ذخیره گردد.{ استالینگ 143}

 

 

 

مفاهیم   فرآیند(Process-فرآروند- پردازه- پروسه -پردازش)

 

فرآیند چیست؟برنامه در حال اجرا  را Process   گویند.

تعریف مفیدتر فرآیند: هر وقت یک  Job  را  برای اجرا انتخاب می کند ، گوئیم فرآیند تا زمانی کهJob  خاتمه پیدا کند.

فرآیند(process)  مفهومی دینامیکی است منظور اینست Running   عوض می شود یعنی دائماٌ در CPU ، Flag ها و Register   ها ،  Stack   ها و Data   ها عوض می شوند.

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

 

عیناٌ یک کپی از فضای آدرس  فرآیند بر روی فضای Swap  دیسک وجود دارد که  Process Core Image   گویند .

در واقع تصویر حافظه اصلی فرآیند بر روی حافظه جانبی  است.

 

Core :  حافظه اصلی (چمره ای )   که در حال حاضر استفاده نمی شود..

1-  هر وقت فرآیند بخواهد اجرا شود یک کپی را از دیسک می آورد  در حافظه   می گذارد.

2- Core Image

 

بازگشت به دیسک Suspond   خواهد بود . در سیستم های قبلی  که سیستم Swap   باشند.

 

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

 

  این ساختار واحد است و حتی درخت واحد فایلها  هم دارد.

 

مثال :در    بعضی unix  ها وقتی Start up   می کند ، فرزند ی  می سازد  به نام Init   بعد سیستم عامل می بیند کدام ترمینالها رو شن هستند  به تعداد آنها فرزند به  نام   Login می سازد.

 

Init

Login

Shell

Dir

cp

 

نکته : در سیستم Unix  : اگر  فرآیند پدر از بین برود . فرآیند  فرزند اطلاعات را به فرآیند Init   داده می شود . هنگامیکه  سیستم بوت می شود فرآیند Init   که جد تمام فرآیند ها است.به وجود می آیئد. فرآیند پد همیشه منتظر فرآیند فرزند است . هر فرآیندی  یک پدر دارد که اطلا عات به آن بر می گردد.

 

 


بلوک کنترل  فرآیند

شناسایی  فرآیند

اطلا عات وضعیت پردازنده

اطلا عات کنترل فرآیند

 

 

پشته کاربر

 

فضای آدر س خصوص کاربر

 

(برنامه ها، داده ها)

 

فضای آدرس مشترک

 

 

 

 

بلوک  کنترلی فرآیند(  Process Control  Block)

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

از جمله این اطلا عات  عبارتند از:

6-       اطلا عات هویتی فرآیند: شامل نام ، شماره شناسایی فرآیند و فرآیند پدر

7-       وضعیت فرآیند : شامل آماده ، اجرا ، منتظر

8-       شمارنده  برنامه : آدرس دستوالعمل بعدی

9-       ثبات های پردازنده  :شامل  تمام اطلا عات وضعیتی برنامه که در هنگام رخ دادن  یک وقفه  حفظ میشود.

10-    اطلا عات زمانبند پردازنده ها : شامل پارامتر های  زمانبندی و الویت فرآیند

11-    اطلاعات درباره  مدیریت  حافظه : در بر گیرنده تمام اطلا عاتی در رابطه با حافظه و فرآیند مر بوطه

12-    اطلا عات وضعیتی  ورودی – خروجی : شامل لیستی  از فایلها ی باز ، دستگا های ورودی – خروجی اختصاص یافته به این فرآیند

13-    بطور کلی PCB    مرکز اطلا عاتی است که سیستم عامل  تمام اطلا عات  کلیدی در باره فرآیند  را را در آن قرار میدهد.

 

 

فرآیند  ها سه وضعیت دارند؟

1-       : Ready آماده  اجرا

2-       :Runnigدر حال اجرا

3-      : Block بلوکه شده (مسدود) یا Wait

 

 

 

Ready : فرآیندی هاییی که منتظر هیچ منبعی بجز  CPU  نیستند ، CPU  به آن بدهید اجرا می شود. تمام منابع را دارد (فعلاٌ ) ممکن است CPU   داده شود ولی بعد درخواست I/O   کند و متوقف شود.

 

Running: : فرآیندی که در حال حاضر CPU   و سایر منابع  مورد نیازش را در اختیار دارد و در حال اجرا است.

Blocked:: فرآیند هایی هستند که منتظر منبعی بجز CPU (مثلا ٌI/o  )  و یا یک وقفه خارجی هستند.

 

فرآیند منتظر دو را ه دارد:

 

1-                                             Busy Waiting :   Cpu    را Loop   می زند.وقت Cpu   را تلف می کند.

2-                                             Blocked  :به  فرآیند هایی که منتظرند CPU    را داوطلبانه  پس می دهد.

 

 

نکته مهم 1: رفتن فرآیند از Blocked   به Running   غلط است چون اگر منابع را دریافت نمود  Ready   می شود.

نکته مهم 2: رفتن   از حالت Ready   به حالت Block    غلط است . فرآیند Ready   در صورتی Block   می شود که  اول  اجرا شود (Running)  ، تا برسد به جایی که نیاز به منبع دارد.

 

نکته 3:  از حالت Ready   به حالت Running  امکان پذیر است یعنی  زمانبند    Scheduler ) ) تصمیم می گیرد که  Ready   به Running   وارد شود یعنی CPU   می دهد که اصطلا حا ٌ Dispatch   می گویند.

 

 

از نظر  تننباوم

Running

Blocked

Ready

 

 

Running

Blocked

Ready

Sus pend

Blocked

Suspend

Ready

 

 

نظر ویلیام  استالینگ

 

 

 

3-                                             فرآیند در وضعیت  آماده و معلق ( Suspend Ready ) فقرار می گیرد اگر حافظه اصلی از آن گرفته  شود و بر روی حافظه ثانوی قرار گیرد و بهمحض با ر شدن در حافظه اصلی در وضعیت آماده  قرار گیرد.

4-                                             فرآیند در وضعیت مسدود و معلق(Suspend   Wait): قرار می گیرد اگر در حافظه ثانوی قرار  گیرد و منتظر حادثه ایی باشد.

نحوه تبدیل وضعیت فرآیند

 

 

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

 

 

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

 

DISPATCH :           Ready--> Running

Time Run Out :     Running --> Ready

Wait :                    Running  ---> Block

Wake up :             Block --->Ready

Suspend  :            Block ---->Suspend Wait

Suspend :              Ready--->suspend  Ready

 

سئوال : اولویت با Ready   یا Blocked    است؟

به دلیل کمبود حافظه فرآیندی که Blocked   است به دیسک منتقل می کنیم و اولویت  به برنامه Ready    داده می شود.

نکته : در وضعیت Ready    و Blocked    صف وجو دارد..

Suspend

: وقتی  فضای حافظه اصلی کم می شود . تمام تصویر فرآیند روی دیسک است منتقل می شود  یعنی عمل را Swap out   انجام می شود.     چون حافظه اصلی محدود است از Suspend   استفاده می شود. که زمانبند میان مدت این کار را انجام می دهد.

 

 

 

 

Processing

فرآیند

Suspend

Disk

DISK

 

نکته 1:فرآیندی  که Block    است اگر Swap out   کنیمSuspend  Block   می شود.. CPU) که ندارد روی دیسک هم منتقل می شود)

نکته 2: اگر   درحافظه اصلی جا کم داشته باشیم و همه فرآیند ها  هم Ready     هستند باید بعضی از Ready   ها را روی دیسک ببریم.که  Suspend Ready   گفته می شود.

 

نکته 3: فرآیندی که Suspend Ready   است هرگز Ready   نمی شود. بلکه باید RUN  شود. بعد به حالت Ready    

برود.

نکته 4: از حالت Suspend  Blocked   به حالت   blocked  بسیار نادر است اگر فرآیندی آماده اجرا نیست  ودر حافظه اصلی  هم قرار ندارد، آوردن آن به حافظه چه امتیازی دارد؟ممکن است فرآیندی پایان یابد و مقداری از حافظه اصلی آزاد شود . فرآیندی در صف Blocked Wait     وجود  دارد که اولویتش  از تمام فرآیند های صف Suspend Ready   بیشتر است . آوردن یک فرآیند مسدود به حافظه نسبت به فرآیند آماده ، معقول  به نظر می رسد.

نکته 5: از حالت  blocked  wait به حالت  suspend  Ready  : موقعی یک فرآیند مسدود و معلق به حالت آماده و معلق تغییر حالت می دهد که حادثه ای که منتظرش بوده است ، اتفاق افتاده است.

 

 

مسائل

 

 

مسائل {تتنباوم}

1- دو وظیفه اصلی یک سیستم عامل  چیست؟

2- چند برنامگی(Multi Program  ) چیست؟

3   -SPOOLING چیست؟

4- چرا اشتراک زمانی(Time Sharing ) در کامپیوتر های نسل دوم  خیلی رایج نشد؟

الف- غیر فعال کردن  کلیه وقفه ها

ب- خواندن ساعت (زمان –از- روز )

ج- تنظیم ساعت (زمان –از –روز)

د- تغییر نگاشت حافظه

5- مدل مشتری –خدمت گذار در سیستم های توزیع شده رایج است. آیا می توان از آن در سیستم های تک کامپیوتری هم استفاده کرد؟

6- چرا در سیستم اشتراک زمانی به جدول فرآیند نیاز داریم؟آیا در سیستم  های کامپیوتر شخصی که درآن فقط یک فرآیند وجود دارد ،  و آن فرآیند کل ماشین را در اختیار می گیرد  تا به اتمام برسد، نیز به آن جدول نیاز داریم ؟

 

 

*******************************فصل دوم *********************************

سیستم ها ی چند  نخی  multithreading

در تکنیک چندنخی (multithreading) یک فرایند (process) که برنامه‌ای در حال اجراست , می‌تواند به بخشها یا نخهایی (بندهایی ) تقسیم شود که می‌توانند به صورت همزمان اجراء شوند.
برنامه‌هایی که چند وظیفه مستقل از هم را انجام می‌دهند می‌توانند به صورت چند نخی نوشته شوند.

گ

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

به نخ, رشته یا بند هم گفته می‌شود . کلیه اطلاعات مربوط به هر پروسس , در یکی از جداول سیستم عامل به نام جداول process Control Block=PCB ذخیره می‌شود. این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسس‌هاست که در حال حاضر موجودیت دارد.

اطلاعات موجود در PCB عبارتند از :


·         حالت جاری پردازش

·         شماره شناسایی پردازش

·         اولیت پردازش

·         نشانی حافظه پردازش

·         نشانی محل برنامه پردازش بر روی دیسک

·         نشانی سایر منابع پردازش

·         محلی برای حفظ ثباتها .