تحقیق درباره ساختار كلي یونیکس

راهنمای سایت

سایت اقدام پژوهی -  گزارش تخصصی و فایل های مورد نیاز فرهنگیان

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

2- شما با هر کارت بانکی عضو شتاب (همه کارت های عضو شتاب ) و داشتن رمز دوم کارت خود و cvv2  و تاریخ انقاضاکارت ، می توانید بصورت آنلاین از سامانه پرداخت بانکی  (که کاملا مطمئن و محافظت شده می باشد ) خرید نمائید .

3 - درهنگام خرید اگر ایمیل ندارید ، در قسمت ایمیل ، ایمیل http://up.asemankafinet.ir/view/2488784/email.png  را بنویسید.

http://up.asemankafinet.ir/view/2518890/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86.jpghttp://up.asemankafinet.ir/view/2518891/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%DA%A9%D8%A7%D8%B1%D8%AA%20%D8%A8%D9%87%20%DA%A9%D8%A7%D8%B1%D8%AA.jpg

لیست گزارش تخصصی   لیست اقدام پژوهی     لیست کلیه طرح درس ها

پشتیبانی سایت

در صورت هر گونه مشکل در دریافت فایل بعد از خرید به شماره 09159886819 در شاد ، تلگرام و یا نرم افزار ایتا  پیام بدهید
آیدی ما در نرم افزار شاد : @asemankafinet

تحقیق درباره ساختار كلي یونیکس

بازديد: 199

تحقیق درباره ساختار كلي یونیکس

مقدمه

كوچك زيباست . اين اساس يونيكس است. براي درك مفهوم اين جمله بايد سيستم عاملهاي نسل سوم را ( كه يونيكس نيز از آنهاست) به ياد آوريد . سيستم هاي دايناسورواري بودند كه براي انجام همه كار طراحي شده بودند . سيستم عامل ماشينهاي 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 در واقع دو طرح مديريت حافظه مجزا وجود دارد. سيستم  صفحه بندي حافظه مجازي را ارائه مي كند. قابليتي كه مي تواند قاب صفحه هاي حافظه اصلي را به فرايندها و همچنين ميانگين هاي بلوك ديسك تخصيص دهد اگر چه اين طرح مديريت حافظه مجازي براي فرايندهاي كاربرد و ورودي / خروجي ديسك موثر است ولي براي مديريت تخصيص حافظه به هسته سيستم  عامل چندان مناسب نيست. براي اين از تخصيص دهنده حافظه هسته استفاده مي شود. اين دو راهكار را به نوبت بررسي مي كنيم.

 

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

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

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

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

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

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

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

 

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

سن

كپي در نوشتن

تغيير

مراجعه

اعتبار

حفاظت

مدخل جدول

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

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

نوع حافظه 

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

حالت صفحه

شمارش مراجعه

دستگاه منطقي

شماره بلوك

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

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

شمارش مراجعه

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

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

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

 

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

 

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

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

پارامترهاي مديريت حافظه در SVR4 يونيکس

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

 

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

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

سن

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

كپي در نوشتن

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

تغيير

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

مراجعه

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

اعتبار

نشان مي دهد كه صفحه داخل حافظه  اصلي است.

حفاظت

نشان مي دهد كه آيا عمل نوشتن مجاز است.

 

توصيفگر بلوك ديسك

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

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

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

مكان بلوك صفحه بر روي دستگاه مبادله

نوع حافظه

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

 

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

حالت صفحه

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

شمارش مراجعه

تعداد فرايندهايي كه به صفحه مراجعه مي كنند.

دستگاه منطقي

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

شماره بلوك

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

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

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

 

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

شمارش مراجعه

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

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

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

 

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

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

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

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

الگوريتم جايگزيني صفحه ساعت دو عقربه اي

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

 

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

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

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

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

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

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

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

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

Barkley و lee در AT&T نوع ديگري از سيستم  رفاقتي به نام سيستم  رفاقتي تنبل را پيشنهاد كردند كه همين روش براي svr4 پذيرفته شده است. مولفين آن مقاله مشاهده كردند كه اكثرا يونيكس رفتار پايداري براي تقاضاي حافظه  هسته سيستم  عامل از خود بروز مي دهد. يعني مقدار تقاضا براي بلوكهاي با اندازه مشخص تغييرات كندي در طول زمان دارند. پس اگر بلوكي با اندازه 2iآزاد گردد و بلافاصله با رفيقش در لوكي با اندازه 2i+1  تلفيق شود. احتمالا هسته سيستم  عامل در تقاضا بعدي خود در خواست اندازه 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

 

 

 

 

 

 

 

 

 

 

 

مجموع تعداد بلوك هاي داده ها در يك پرونده  به ظرفيت بلوكهاي با اندازه ثابت در سيستم  بستگي دارد. در 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

SIGTRAP

 

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 اتفاق مي افتد، پارامتر بازگشستي بررسي مي شود. اگر پارامتر بازگشتي صفر باشد ، اين فرايند فرزند است و مي تواند با اجراي انشعابي به برنامه مناسبي از کاربر ، اجراي آن ادامه يابد. اگر مقدار بازگشتي غير صفر باشد، فرايند پدر است و روند اصلي اجرا ، مي تواند ادامه يابد.

 

خلاصه

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

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

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

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


منابع:

 

1-   سيستم عامل استالينگ

 

2-   گود هارت، ب، و کوکس، شرحي بر باغ سحر آميز، از سيستم عامل يونيکس 5 نسخه 4. 1994.

منبع : سايت علمی و پژوهشي آسمان--صفحه اینستاگرام ما را دنبال کنید
اين مطلب در تاريخ: دوشنبه 11 اسفند 1393 ساعت: 9:06 منتشر شده است
برچسب ها : ,,,,,
نظرات(0)

شبکه اجتماعی ما

   
     

موضوعات

پيوندهاي روزانه

تبلیغات در سایت

پیج اینستاگرام ما را دنبال کنید :

فرم های  ارزشیابی معلمان ۱۴۰۲

با اطمینان خرید کنید

پشتیبان سایت همیشه در خدمت شماست.

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

درباره ما

آدرس خراسان شمالی - اسفراین - سایت علمی و پژوهشی آسمان -کافی نت آسمان - هدف از راه اندازی این سایت ارائه خدمات مناسب علمی و پژوهشی و با قیمت های مناسب به فرهنگیان و دانشجویان و دانش آموزان گرامی می باشد .این سایت دارای بیشتر از 12000 تحقیق رایگان نیز می باشد .که براحتی مورد استفاده قرار می گیرد .پشتیبانی سایت : 09159886819-09338737025 - صارمی سایت علمی و پژوهشی آسمان , اقدام پژوهی, گزارش تخصصی درس پژوهی , تحقیق تجربیات دبیران , پروژه آماری و spss , طرح درس