سیستم عامل یونیکس

ساختار کلی

مقدمه

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

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


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

 

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

1- پیکر بندی سیستم عامل: هسته مرکزی سیستم  عامل یونیکس جز کوچکی از آن را تشکیل می دهد ولی ای جز از اهمیت اساسی برخوردار استکه رابط کاربر و سیستم  عامل می باشد و در شکل 1 مشهود است.

این ساختار کلی شبیه به ساختار PC-DOS است. Kernal یا هسته مرکزی در آنجا از دو پرونده IBMBIO.sys و IBMDOS.sys تشکیل می شود و پیوست پرونده ای به نام command.com است. تفاوت در ویژگیهای هسته مرکزی و قدرت بسیار بیشتر پوسته های یونیکس است. اولا هر سیستم  یونیکس دارای چند پوسته است که کاربر می تواند هر کدام را که بخواهد انتخاب کند. (پوسته استاندارد، پوسته محدود، پوسته تصویری، پوسته C، پوسته UUCP) هر کدام از این پوسته ها قابلیت های متفاوتی دارند.

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

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

 

مدیریت حافظه در UNIX و SOLARIS

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

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

 

سیستم  صفحه بندی

ساختمان داده ها

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

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

-    توصیفگر بلوک دیسک: برای هر صفحه فرایند یک مدخل در این جدول وجود دارد، که نسخه دیسک از آن صفحه مجازی را توصیف می کند.

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

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

 

شماره قاب صفحه

سن

کپی در نوشتن

تغییر

مراجعه

اعتبار

حفاظت

 

شماره دستگاه مبادله

شماره بلوک دستگاه

نوع حافظه 

 

حالت صفحه

شمارش مراجعه

دستگاه منطقی

شماره بلوک

اشاره گر داد های قاب صفحه

 

شمارش مراجعه

شماره واحد صفحه / حافظه 

 

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

 

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

 

جایگزینی صفحه

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

مدخل جدول صفحه

 

شماره قاب صفحه

به قاب داخل حافظه حقیق اشاره دارد

سن

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

کپی در نوشتن

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

تغییر

مبین تغییر صفحه است.

مراجعه

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

اعتبار

نشان می دهد که صفحه داخل حافظه  اصلی است.

حفاظت

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

 

توصیفگر بلوک دیسک

شماره دستگاه مبادله

شماره منطقی دستگاه ثانوی که صفحه مزبور را نگهداری می کند. به این ترتیب می توان بیش ازیک دستگاه را برای تعویض به کار برد.

شماره بلوک دستگاه

مکان بلوک صفحه بر روی دستگاه مبادله

نوع حافظه

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

 

مدخل جدول داده های قاب صفحه

حالت صفحه

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

شمارش مراجعه

تعداد فرایندهایی که به صفحه مراجعه می کنند.

دستگاه منطقی

دستگاه منطقی که حاوی یک کپی از صفحه است.

شماره بلوک

مکان بلوک کپی صفحه بر روی دستگاه منطقی

اشاره گر داده های قاب صفحه

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

 

مدل جدول استفاده مبادله

شمارش مراجعه

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

شماره واحد صفحه / حافظه 

شناسه صفحه بر روی واحد حافظه 

 

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

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

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

-    فاصله عقربه ها: فاصله مابین عقربه جلویی و عقربه عقبی.

 

مقادیر پیش فرض این دو پارامتر بر اساس مقد ار حافظه  فیزیکی در زمان راه اندازی تعیین می گردد. می توان پارامتر نرخ مرور را با تغییر شرایط عوض نمود. این پارامتر به طور خطی بین مقادیر slowscan و fastscan با تغییر مقدار حافظه  آزاد که بین دو مقدارlotsfree و minfree است. تغییر می کند. به عبارت دیگر با کوچک شدن مقدار حافظه  آزاد عقربه های ساعت با سرعت بیشتری حرکت می کنند تا صفحه های بیشتری را آزاد نمایند. پارامتر فاصله عقربه ها همراه با پارامتر نرخ مرور، چهارچوب فرصت استفاده  از یک صفحه مشخص می سازد.

 

تخصیص دهنده حافظه  هسته

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

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

-    روال allocb میانگیر های Streams با اندازه دلخواه را تخصیص می دهد.

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

-    در svr4 و solaris هسته سیستم  عامل شی های بسیاری را برحسب نیاز تخصیص می دهد.

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

 

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

Barkley و lee در AT&T نوع دیگری از سیستم  رفاقتی به نام سیستم  رفاقتی تنبل را پیشنهاد کردند که همین روش برای svr4 پذیرفته شده است. مولفین آن مقاله مشاهده کردند که اکثرا یونیکس رفتار پایداری برای تقاضای حافظه  هسته سیستم  عامل از خود بروز می دهد. یعنی مقدار تقاضا برای بلوکهای با اندازه مشخص تغییرات کندی در طول زمان دارند. پس اگر بلوکی با اندازه 2 آزاد گردد و بلافاصله با رفیقش در لوکی با اندازه  ؟ تلفیق شود. احتمالا هسته سیستم  عامل در تقاضا بعدی خود در خواست اندازه 2I را می کند. که نیازمند تقسیم دوباره بلوک بزرگتر است. برای اجتناب از این تلفیق و تقسیم غیر ضروری، سیستم  رفاقتی تنبل، تلفیق را تا زمانی که به آن نیاز نباشد به تعویق می اندازد و سپس تا آنجا که ممکن است بلوکهای را با یکدیگر تلفیق می کند.

سیستم  رفاقتی تنبل از پارامترهای زیر استفاده می کند:

NI = تعداد کنونی بلوکهای با اندازه 2I

AI= تعداد کنونی بلوکهای با اندازه 2I که تخصیص یافته اند.

GI= تعداد کنونی بلوکهای با اندازه 2I  که به طور سراسری آزاد  هستند. این بلوکها واجد شرایط تلفیق می باشند اگر رفیق چنین بلوکی به طور سراسری آزاد گردد، سپس دو بلوک، در بلوکی با اندازه 2I+1  که به طور سراسری آزاد است تلفیق می شوند. می توان کلیه بلوکهای آزاد در سیستم  رفاقتی استاندارد را به طور سراسری آزاد در نظر گرفت.

LI تعداد کنونی بلوکهای با اندازه 2I  که به طور محلی آزاد هستند. اینها بلوکهایی هستند که واجد شرایط تلفیق نیستند. حتی اگر رفیق چنین بلوکی آزاد گردد، دو بلوک تلفیق نمی شوند، در عوض، بلوکهای آزاد محلی به انتظار در خواستهای آینده برای بلوکهایی با همان اندازه نگهداری می شوند.

رابطه زیر برقرار است:

NI=AI+GI+lI

 

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

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

برای پیاده سازی این طرح مولفین مقاله یک متغیر تاخیر را به صورت زیر تعریف کرده اند:

DI=AI- LI = NI – 2LI - GI

 

مقدار اولیه DI  برابر صفر است

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

 

الف) اگر عمل بعدی یک درخواست تخصیص بلوک باشد:

اگر بلوک آزاد موجودباشد، یکی را برای تخصیص انتخاب می کند:

اگر بولک تخصیص یافته به طور محلی آزاد باشد،

آنگاه                               DI:= DI+2

وگرنه                              Di:=DI+1

در غیر این صورت

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

D­I بدون تغییر باقی می ماند (به دلیل فراخوانیها بازگشتی، ممکن است D برای اندازه های دیگر بلوک تغییر کند).

ب) اگر عمل بعدی یک تقاضای آزاد کردن بلوک باشد:

اگر DI>2 باشد

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

DI: = DI-2

اگر  DI=1 باشد

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

DI= 0

اگر DI=0 باشد

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

یک بلوک آزاد محلی با اندازه 21 را انتخاب و آن را آزاد سراسری می کند. در صورت امکان تلفیق می نماید.

DI:= 0

 

 

مدیریت پرونده یونیکس

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

چهار نوع پرونده  از هم تمیز داده می شوند:

-    عادی: پرونده  هایی که حاوی اطلاعات وارد شده توسط کاربرد، برنامه های کاربردی، یا برنامه سودمند سیستم  هستند.

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

-    خاص: برای دستیابی به دستگاه های جنبی مانند پایانه ها و چاپگرها به کار می روند. همان گونه که در بخش 11-7 توصیف گردید هر دستگاه ورودی خروجی با یک پرونده  خاص مربوط است.

-    با نام: لوله های با نام، همان گونه که در قسمت؟ توصیف گردید.

 

در این بخش اداره پرونده  هایعادی مورد نظر است که در اغلب سیستم  ها به عنوان پرونده  تلقی می شوند.

 

گره های شاخص

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

خصیصخ های پرونده  و همچنین اجازه ها و دیگر اطلاعات کنترلی، در گره شاخص ذخیره می شود.

 

تخصیص پرونده 

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

 

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

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

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

حالت پرونده                                   پرچم 16 بیتی که اجازه های دستیابی و اجرای مربوط به پرونده 

                                                 را ذخیره می کند.

12-14 نوع پرونده  (عادی، فهرست راهنما، مخصوص نویسه یا بلوک ، لوله خروجی به ترتیب ورود)                 

9-11 پرچمهای اجرا

8 اجازه خواندن مالک

7اجازه نوشتن مالک

6 اجازه اجرای مالک

5 اجازه خوانده گروه

4 اجازه نوشتن گروه

3 اجازه اجرای گروه

2- اجازه خواند دیگران

1 اجازه نوشتن دیگران

0 اجازه اجرای دیگران

شمارش پیوندها                                  تعداد مراجعات فهرست راهنما به این گره شاخص

شناسه مالک                                    مالک خاص پرونده 

شناسه گروه                                    مالک گروهی در مورد این پرونده 

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

آدرس های پرونده                              39 بایت اطلاعات آدرس

آخرین دستیابی                                  زمان آخرین دستیابی به پرونده 

آخرین تغییر                                     زمان آخرین تغییر پرونده 

تغییر گره شاخص                               زمان آخرین تغییر گره شاخص

                                                

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

تمام  اینها در شکل ؟ نمایش داده شده است. مجموع تعداد بلوک های داده ها در یک پرونده  به ظرفیت بلوکهای با اندازه ثابت در سیستم  بستگی دارد. در unix system V طول بلوک یک کیلو بایت است و هر بلوک می تواند مجموعا 256 آدرس بلوک را نگه دارد. پس با این طرح حداکثر اندازه یک پرونده  بیش از 16 گیگا بایت خواهد شد.

 

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

2-   پرونده  های کوچکتر را می توان بدون سطوح غیر مستقیم یا با مختصر استفاده از سطوح غیر مستقیم دستیابی کرد و زمان پردازش و دستیابی دیسک را کاهش داد.

3-   حداکثر نظری اندازه یک پرونده  به اندازه کافی بزرگ است تا تمام کاربردها را جوابگو باشد.

 

راهکارهای همزمانی در یونیکس

یونیکس راهکارهای متنوعی را برای ارتباط و همگام سازی فرایندها فراهم کرده است. در اینجا مهمترین آنها را مورد توجه قرار می دهیم:

-                       لوله ها

-                       پیامها

-                       حافظه مشترک

-                       راهنماها

-                       علائم

 

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

 

لوله ها

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

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

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

 

پیامها

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

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

 

حافظه مشترک

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

 

راهنماها

فراخوانیهای سیستمی راهنما در unix xyxtem V تعمیمی از اولیه های wait , signal معرفی شده در فصل ؟ هستند. به این صورت که عملایت متعددی می توانند به صورت همزمان انجام شوند و اعمال افزایش و کاهش با مقادیر بزرگتر از یک نیز می تواند انجام گردد. هسته تمام اعمال در خواست شده را به صورت اتمی انجام می دهد . یعنی تا موقعی که تمام اعمال انجام نشده باشد. هیچ فرایند دیگری نمی تواند به آن راهنما دسترسی داشته باشد.

یک راهنما شامل عناصر زیر است:

-                       مقدار جاری راهنما

-    شناسه یا ID  آخرین فرایند عمل کننده روی این راهنما

-    تعداد فرایند هایی که منتظرند تا مقدار این راهنما از مقدار جاری آن بیشتر شود

-    تعداد فرایند هایی که منتظرند تا مقدار این راهنما صفر شود.

 

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

در واقع راهنما ها به صورت مجموعه ای ایجاد می شوند، که هر مجموعه راهنما شامل یک راهنما یا بیشتر است. فراخوانی سیستم  semctl اجازه می دهد تا تمام راهنما های یک مجموعه راهنما در یک زمان مقدار گذری شوند علاوه بر این فراخوانی سیستمی semop وجود دارد که لیستی ا اعمال راهنما ها (که هر یک روی راهنما یی از مجموعه تعریف شده است) را به عنوان نشانوند دریافت می کند.با این فراخوانی هسته اعمال مشخص شده را یکی یکی انجام می دهد. برای هر عمل کار واقعی به وسیله مقدار sem-op مشخص شده است. موارد ممکن در زیر آمده است:

 

-    اگر sem-op  مثبت باشد هسته مقدار راهنما را افزایش داده و تمام فرایند هایی که منتظر افزایش مقدار راهنما بودند را بیدار می کند.

-    اگر sem-op صفر باشد هسته مقدار راهنما را بررسی میکند. اگر صفر باشد با اعمال دیگر لیست ادامه می دهد. در غیر این صورت تعداد فرایندهایی که منتظر صفر بودن این راهنما هستند را افزایش داده و آن فرایند را روی حادثه صفر شدن مقدار این راهنما معلق می کند.

-    اگر sem-op منفی و قدر مطلقش کمتر یا مساوی مقدار راهنما باشد هسته sem-op یک عدد منفی را به مقدار راهنما می افزاید. اگر نتیجه صفر باشد هسته تمام فرایند هایی که منتظر صفر بودن مقدار راهنما بوده اند را بیدار می کند.

-    اگر sem-op منفی و قدر مطلقش بزرگتر از مقدار راهنما باشد هسته این فرایند را برای حادثه افزایش مقدار راهنما معلق می کند.

 

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

 

علائم

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

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


 

در جدول زیر علائم تعریف شده برای unix svr4 فهرست شده است.

مقدار

اسم

شرح

1

 

2

3

4

5

6

7

8

9

10

11

12

13

14

 

15

16

17

18

19

SIGHUP

 

 

 

SIGINT

 

SIGOUT

 

SIGILL

 

 

SIGIOT

 

SIGEMT

 

SIGFPT

SIGKILL

SIGBUS

 

SIGSEGV

SIGSYS

 

SIGPIPE

 

SIGALARM

 

SIGTERM

SIGUSR1

SIGUSR2

SIGCLD

SIGPWR

 

معوق گذاشتن، هنگامی که هسته فرض کند فرایند کاربر هیچ کار مفیدی انجام نمی دهد این علامت را به آن فرایند می فرستد

وقف

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

دستورالعمل غیر مجاز

؟

دستور العمل IOT

دستورالعمل EMT

استثنا ممیز شناور

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

خطای گذرگاه

تخلف قطعه بندی تلاش فرایند برای دسترسی به محلی در خار از فضای آدرسها مجازی خود

نشانوند نامناسب به فراخوانی سیستم 

نوشتن در لوله ای که هیچ خواننده ای به آن مرتبط نیست

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

پایان یافتن نرم افزاری

علامت تعریف شده توسط کاربر 1

علامت تعریف شده توسط کاربر 2

مرگ یک فرزند

اشکال برق

 

اولیه های همگام سازی نخ در SOLARIS

علاوه بر راهکارهیهمزمان UNIX SVR4  سیستم  عامل SOLARIS ازچهار اولیه همگام سازی نخ حمایت می کند:

-                       قفلهای انحصار متقابل

-                       راهنماها

-                       قفلهای چند خواننده و یک نویسنده

-                       متغیرهای شرط

 

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

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

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

 

قفل انحصار متقابل

با اجرای اولیه MUTEX –ENTER یک نخ می تواند برای به دست آوردن قفل MUTEX تلاش کند. اگر نخی قفل MUTEX را به دست آورد. این قفل از پیشرفت بیش از یک نخ جلوگیری می کند. نخی که MUTEX را قفل می کند باید خودش آن را باز نماید. اگر MUTEX-ENTER نتواند قفل کند.عمل مسدود شدن به اطلاعات ویژه نوع که در شی MUTEX ذخیره شده است، بستگی دارد سیاست پیش فرض مسدود کردن یک قفل چرخشی است یعنی نخ مسدود در حالی که یک حلقه انتظار را اجرا می کند، وضعیت قفل را مورد سئوال قرار می دهد. راهکار مسدود کردن مبتنی بر وقفه اختیاری است. در حالت اخیر MUTEX شامل شناسه ای است که صف نخهای در حال خواب برای این قفل را مشخص می کند.

اولیه های مربوط به قفل MUTEX عبارتند از:

 

قفل را بدست می آورد و اگر قفل گرفتن شده باشد بالقوه مسدود کننده است.  MUTEX-ENTER()

قفل را رها می کند و بالقوه یک منتظر را از مسدود بودن در می آورد       MUTEX-EXIT()

اگر قفل گرفته نشده باشد آن را به دست می آورد.         MUTEX-TRYENTER()

 

اولیه MUTEX-TRYENTER() یک راه مسدود نشدنی برای انجام عمل انحصار متقابل را ارائه می کند. به این ترتیب برنامه سازی می تواند با استفاده از یک رویکرد انتظار مشغولی برای نخهای سطح کاربر، از مسدود شدن کل فرایند به دلیل مسدود بدون یک نخ، دوری کند.

 

راهنماها

با اولیه های زیر SOLARIS راهنما های شمارنده کلاسیک را ارائه می کند:

راهنما را کاهش می دهد و بالقوه مسدود کننده نخر است.    SEMA-P()

راهنما را افزایش می دهد و بالقوه یک نخ را از مسدود بودن خارج می کند  SEMA-V()

اگر مسدود شدن لازم نباشد، از راهنما کم می کند.      SEMA-TRYP()

 

اولیه SEMS-TRYP() انتظار مشعولی را هم ارائه می کند.

 

مدیریت فرایند در UNIX SVR4

 

سیستم عامل unix system v  از امکان فرآیند به صورت ساده ولی قوی و بسیار قابل رویت برای کاربر ، استفاده می کند. Unix از مدل شکل 3-13 ب استفاده می کند که درآن بخش اعظم سیستم عامل در داخل محیط یک فرآیند کاربری اجرا می شود. بنابراین دو حالت کاربر و هسته لازم است . unix از دو گروه فرآیند های سسیستمی و فرآیندهای کاربری استفاده می کند. فرآیند های سیستمی در حالت هسته ارا می شوندو کد سیستم عامل را برای انجام اموری مثل تخصیص حافظه و مباذله فرآیند، اجرا میکنند. اجرای فرآیندهای کاربری در حالت کاربر، برای اجرای برنامه های کاربر، برنامه های سودمند و در حالت هسته ، برای اجرای دستور العملهای متعلق به هسته است. فرآیندهای کاربر با صدور یک فراخوانی سیستم ، یا با ایجاد یک استثناء ( خرابی) و یا بروز وقفه وارد حالت هسته می گردد

حالات فرآیند

سیستم عامل unic نه حالت را برای فرآیند می شناسد .این نه حالت در جدول 3-10 و یک نمودار تغییر حالت در شکل 3-15 (براساس شکلی در [BACH86] )نشان داده شده است . این شکل کاملا مشابه شکل 3-6 با دو حالت خفته ، متناظر دو حالت مسدود است. می توان تفاوتها را به دو صورت زیر خلاصه کرد.

-    یونیکس از دو حالت اجرا استفاده می کند: یکی برای اجرای فرایند در حالت کاربر و دیگری برای اجرای فرایند درحالت هسته

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

 

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

 

اجرای کاربر

اجرای هسته

آماده و حافظه 

حفته و در حافظه 

آماده اجرا و مبادله شده

 

خفته و مبادله شده

قبضه شده

 

ایجاد شده

جادویی

اجرا در حالت کاربر

اجرا در حالت هسته

به محض اینکه هسته آن را زمانبندی کند آماده اجراست

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

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

این فرایند منتظر حادثه ای است و در عین حال به حافظه ثانوی مبادله شده است.

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

فرایند به تازگی ایجاد شده و هنوز برای اجرا آماده نیست.

فرایند دیگر وجود ندارد، اما سابقه ای را برای فرایند پدرش باقی می گذارد.

 

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

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

 

شرح فرایند

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

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

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

 

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

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

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

 

جدول 3-12

 

کنترل فرایند

ایجاد فرایند در یونیکس به وسیله FORK( ) که یک فراخوانی هسته سیستم  است، صورت می گیرد. وقتی فرایند در خواست FORK می کند، سیستم  عامل اعمال زیر را انجام می دهد:

1- برای فرایند جدید عنصری در جدول فرایند تخصیص می دهد

2- یک شناسه یکتا برای این فرایند فرزند در نظر می گیرد.

3- یک کپی از تصویر فرایند پدر (به استثنای حافظه های مشترک) ایجاد می کند.

4- شمارنده های پرونده هایی که متعلق به پدر بود را افزایش می دهد (مبنی بر اینکه آن پرونده ها متعلق به یک فرایند دیگر هم هستند).

5- فرایند فرزند را در حالت آماده اجرا قرار می دهد.

6- شماره شناسنامه فرزند را به فرایند پدر و مقدار صفر را به فرایند فرزند برمی گرداند.

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

1- ماندن در فرایند پدر ، در نقطه فراخوانی Fork ، کنترل به حالت کاربر برمی گردد.

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

3- انتقال کنترل به فرایند دیگر. هم فرایند پدر و هم فریند فرزند در حالت آماده اجرا قرار می گیرند.

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

3-5 خلاصه

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

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

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

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

نظرات 4 + ارسال نظر
مهدی چهارشنبه 18 آبان‌ماه سال 1390 ساعت 11:30

بسیار عالی است

sahar چهارشنبه 22 آبان‌ماه سال 1392 ساعت 22:09

خیلی ممنون عالی بود

Shaghayegh یکشنبه 24 آذر‌ماه سال 1392 ساعت 21:13

salam, merc az ettelaatetoon, kash fonte dige ei entekhab mikardin...
mamnoon misham age ettelaate bishtari az Solaris dashtin baram mail konin. merc

hatman dar asra vaght

متشکرم سه‌شنبه 22 بهمن‌ماه سال 1392 ساعت 18:58

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

mamnooon nazar lotfetoone chashm bartaraf mishe

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد