یادداشتی از آموزش رایگان فرآیند نخ از درس سیستم عامل

 

فرایند

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

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

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

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

  1. حالت فرایند : یک فرایند می تواند دریکی از حالات جدید ، آماده ، اجرا ، انتظار ، و غیره باشد .
  2. شمارنده برنامه (pc) : آدرس دستورالعمل بعدی قابل اجرای پردازش را نشان می دهد .
  3. اطلاعات زمانبندی CPU : شامل اولویت فرایند و اشاره گر به صف زمانبندی .
  4. اطلاعات مدیریت حافظه : شامل مقدار ثباتهای پایه و حد ؛جدولهای صفحه یا قطعه .
  5. اطلاعات حسابرسی : میزان استفاده از پردازنده ،محدودیت های زمانی ،شماره فرایند .
  6. اطلاعات وضعیت I/O : شامل لیست دستگاه های I/O تخصیص داده شده به فرایند
  7. ثباتهای CPU

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

حالات فرایند

حالات فرایند می تواند این پنج حالت باشد:

  1. آماده(READY) : فرایندی که وقتی به آن فرصت داده شد ،برای اجرا آماده باشد.
  2. اجرا (Running) : فرآیندی که هم اکنون در حال اجرا می باشد.
  3. مسدود (Blocked) یا انتظار : فرایندی که تا بروز حادثه ای نمی تواند اجرا شود.
  4. جدید (New) : فرایندی که هم اکنون گرفته شده است ، اما هنوز جزء فرایندهای قابل اجرای سیستم عامل پذیرفته نشده باشد.
  5. خروج (Terminated) : فرایندی که اجرای آن پایان یافته است و یا اجرای آن قطع شده و از مجموعه فرایند های قابل اجرای سیستم خارج شده است.
مدل فرایند پنج حالته

1

 

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

وجود وضعیت مسدود باعث افزایش بهره وری پردازنده می شود ،چون وقتی فرایند در حال اجرا نیاز به I/O  پیدا می کند به حالت Blocking  منتقل  شده و فرایند اماده دیگری به قسمت اجرا منتقل می شود ، تا در حد امکان CPU بیکار نماند. 

وجود وضعیت معلق ، موجب اجرای فرایند جدید حتی در صورت پر بودن حافظه اصلی می شود.

 صف آماده و صف بلوکه

2

 

همانگونه که در شکل مشاهده می کنید در حالت Ready  و حالت Blocked   صف وجود دارد.

تغییر حالات ممکن

۱ – جدید به آماده : اگر سیستم عامل امادگی گرفتن یک فرایند دیگر را داشته باشد ، فرایند موجود در حالت جدید را به حالت آماده می برد.

۲ – آماده  به اجرا  : سیستم عامل یکی از فرایند های موجود در حالت آماده که وقت اجرای آن فرا رسیده است را انتخاب کرده و از حالت آماده به اجرا می برد . به این عمل توزیع (Dispatch) می گویند.

نکته :  چگونگی انتخاب فرآیند از حالت آماده به حالت اجرا مربوط به مبحث الگوریتمهای  زمانبندی می باشد.

۳ – اجرا به خروج : وقتی که فرآیند جاری اعلام پایان کند ،سیستم عامل آن را از حالت اجرا به خروج می برد.

۴ – مسدود به آماده   : وقتی حادثه ای که فرآیند منتظر آن بوده است رخ دهد ،از حالت مسدود به آماده می رود.

۵ – اجرا به مسدود :وقتی فرایندی چیزی را بخواهد که به خاطر ان باید منتظر بماند ،سیستم عامل آن فرایند را از حالت اجرا به مسدود می برد .به این عمل بلوکه می گویند.

۶ – اجرا به آماده : به دلیل اتمام زمان مجاز برای اجرای فرایند جاری در سیستم عامل چند برنامه ای.

۷ – آماده به خروج : با پایان یافتن فرایند پدر ، ممکن است همه فرایند های فرزند آن نیز پایان یابند.

۸ – مسدود به خروج

دلایل پایان یک فرایند

 

 

 پایان طبیعی

فراخوانی یک سرویس

سقف زمانی

در فرایند محاوره ای ، مقدار زمانی که از آخرین ورودی کاربر گذشته است .

گذشت زمان

انتظار زیادتر از حد برای بروز یک حادثه مشخص

 نبود حافظه

نیاز به حافظه ای بیش از آنچه که سیستم می تواند فراهم کند .

 تجاوز از حدود

مراجعه به محلهای غیر مجاز در حافظه

 خطای حفاظت

تلاش برای دسترسی به منبعی که مجاز به استفاده از آن نیست

 خطای محاسباتی

مانند تقسیم بر صفر یا تلاش برای ذخیره عددی بزرگتر از ظرفیت سخت افزاری

 خطای ورود / خروجی

مانند پیدا نکردن فایل

 دستور العمل نامعتبر

تلاش برای اجرای دستورالعملی که وجود ندارد

 دستورالعمل ممتاز

تلاش برای اجرای دستورالعملی که مخصوص سیستم عامل است

 استفاده نامناسب از داده

داده با نوع نامناسب یا بدون مقدار اولیه

 دخالت سیستم عامل

به دلیلی مانند بن بست

 پایان یافتن پدر

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

 درخواست پدر

فرایند حق پایان داده به هر یک از فرایند های فرزند خود

 

فرایند معلق

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

تا وقتی عامل تعلیق فرمان ندهد ،نمی توان فرایند را از حالت معلق خارج کرد.

دلایل معلق کردن یک فرآیند

۱ – مبادله

۲ – ترتیب زمانی

۳ – درخواست کاربر محاوره ای

۴ – درخواست فرایند پدر

مدل فرایند هفت حالته

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

۱ – مسدود و معلق (Suspend-Wait): فرآیند مورد نظر در حافظه ثانوی (مثلا در هارد) است و منتظر حادثه ای است.

۲ – آماده و معلق (Suspend – Ready) : فرآیند مورد نظر در حافظه ثانوی و به محض لود شدن در حافظه اصلی آماده اجراست .

 3

 حالات ممکن در این نمودار

۱ – مسدود به مسدود و معلق

۲ – مسدود و معلق به آماده و معلق:  وقتی حادثه ای که یک فرایند مسدود و معلق منتظر آن بوده است رخ دهد به حالت آماده و معلق می رود.

۳ – آماده و معلق به آماده: وقتی که هیچ فرایند آماده ای در حافظه اصلی نباشد سیستم عامل یک فرایند آماده و معلق را به حالت آماده می آورد. همچنین ممکن است فرایند موجود در حالت آماده و معلق دارای اولویت بیشتری نسبت به همه فرایندهای آماده باشد که در این حالت فرایند به حالت آماده ، آورده می شود.

۴ – آماده به اماده و معلق: به طور معمول سیستم عامل ترجیح می دهد یک فرآیند مسدود را به جای فرآیند آماده به حال تعلیق در آورد ولی در صورتی که راهی برای خالی کردن حافظه اصلی نباشد یک فرآیند آماده را به تعلیق در می آورد.

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

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

۷ – مختلف به خروج : ممکن است یک فرایند از هر حالتی به حالت خروج منتقل شود.

 انواع زمانبند ها

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

انواع زمانبندی برای پردازنده

 ۱ – زمانبندی بلند مدت (Long Term Scheduler)

   تصمیم گیری در مورد افزودن به مجموعه فرایند ها برای اجرا به عبارتی تعداد فرایند های موجود در حافظه را کنترل می کند.

۲ – زمانبندی میان مدت (Middle Term Scheduler)

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

۳ – زمانبندی کوتاه مدت (Short Term Scheduler)

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

۴ – زمانبندی ورودی / خروجی

تصمیم می گیرد که کدام درخواست I/O  فرآیندها به وسیله یک دستگاه  I/O  موجود انجام بگیرد   

نمودار تغییر حالت فرایند همراه با زمانبندی

4 

نکته ها :

وظیفه فعال سازی و تعلیق فرآیند ها برعهده زمانبند میان مدت (Medium – term scheduler) می باشد.

زمانبند میان مدت فرایندی را از حافظه اصلی حذف و به حافظه جانبی می برد این فرایند بعدا میتواند به حافظه اصلی لود شود.

این الگو را مبادله (Swapping) می گویند.

ایده اصلی زمانبندی میان مدت این است که میتواند فرایندی را از حافظه حذف کند و درجه چندبرنامگی را کاهش می دهد. زمانبند بلند مدت ترکیب خوبی از فرآیند های CPU Limited   , I/O limited   انتخاب میکند .نام دیگر زمانبند بلند مدت زمانبند کار است و نام دیگر زمانبند کوتاه مدت ،زمانبند پردازنده است.

توزیع کننده (Dispatcher)

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

 این عمل شامل موارد زیر است:

  • تعویض بستر (Context Switch)
  • تغییر به حالت کاربر
  • پرش به محل مناسبی در برنامه کاربر و آغاز مجدد ان برنامه.
نخ (Thread)

 نخ چیست  ؟ به توزیع وقت پردازنده ،نخ می گویند.

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

در صورتی که با فرآیند نخ آشنا نیستید با سه مثال زیر می توانید با آن بیشترآشنا شوید،

 مثال ۱: در برنامه اکسل از یک نخ برای خواندن ورودی کاربر و از نخ دیگری برای بهنگام سازی استفاده می شود.

مثال ۲: در صفحات وب ،شامل چند تصویر کوچک ، هر نخ میتواند  به طور همزمان با نخ های دیگر تصویر مربوط به خود را درخواست کند.

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

نخ ها وفرایند ها میتوانند چهار حالت را بوجود آوردند:

۱ – یک فرایند – یک نخ

۲ – یک فرایند – چند نخ

۳ – چند فرایند – یک نخ در هر فرایند

۴ – چند فرایند – چند نخ در هر فرایند

 6

 

شکل فوق حالت چهارم را نشان می دهد ، در این شکل ما دو پروسس داریم که در P1ما دو نخ داریم و در P2 ما سه نخ داریم یعنی ما چند فرایند داریم و چند نخ در هر فرایند داریم ، در P1 دو نخ داریم با نام  های  T11 , T12  که در اینجا ۱ اول ثابت است و به معنای پروسس اول است و در پروسس دوم سه نخ داریم به نامهای T21 ,T22 ,T23  که در اینجا عدد  ۲ ثابت است و به معناری پروسس دوم می باشد.

مدل تک نخی و چند نخی

 7

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

حالات اصلی نخ

اجرا ،آماده و مسدود .(نخ حالت  معلق ندارد)

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

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

تغییر متن میان دو نخ متعلق به دو فرآیند جداگانه ، مثل این است که تعویض متن فرایند رخ داده است.

 تغییر متن در نخ های یک فرآیند

الف – اشاره گر پشته (SP)  را تغییر می دهد.

ب – ثبات های مدیریت حافظه را تغییر نمی دهد.

ج – جداول مدیریت حافظه را تغییر نمی دهد.

 نخ های سطح کاربر

سیستم عامل از وجود نخ ها آگاه نمی باشد.

تمام عملیات راهبری در فضای آدرس کاربر انجام می شود.

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

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

تعویض متن نخ اغلب با تعدادکمی از دستورالعمل ها انجام می شود.

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

 نقاط ضعف نخ های سطح کاربر:

۱ – اگر یک نقص صفحه (Page fault)  برای یک نخ رخ دهد ،همه نخ های درون فرایند به اشتباه مسدود می شود.

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

۳ – چون سیستم عامل از وجود نخ ها آگاه نمی باشد ،نخ ها را بین چندین پردازنده به خوبی پخش و زمان بندی نمی کند.

 Page fault به چه معناست ، Page fault  یعنی به صفحه ای مراجعه شده که صفحه مورد نظر در حافظه اصلی نیست.

نخ های سطح هسته

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

فرایند های سبک وزن (LWP)

LWP ، نگاشتی بین نخ سطح کاربر و نخ سطح هسته می باشد.

هر LWP  از یک (یا بیشتر) نخ سطح کاربر حمایت می کند و به یک نخ سطح هسته می نگارد.

 

 8

در شکل فوق سه task وجود دارد که در task 1  سه نخ و در  task 2  یک نخ و در task 3  ، ۵ نخ وجود دارد که این نخ ها در سطح User – level thread   قرار دارند یعنی در سطح کاربر و در زیر این task ها دایرههایی قرار دارد که LWP   (نگاشتی بین نخ سطح کاربر و نخ سطح هسته)هستند و در زیر این LWP  نخ هایی داریم که این نخ ها در سطح هسته (Kernel) هستند که در این شکل سطح هسته با رنگ زرد مشخص شده است  و تمام نخ های سطح هسته  به CPU  وصل شده اند.

 

 

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

 




0 پاسخ

ارسال یک پاسخ

در گفتگو ها شرکت کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *