عنوان<تحقیق در مورد چند برنامگی >

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

لینک دانلود و خرید پایین توضیحات

دسته بندی : وورد

نوع فایل : .doc ( قابل ويرايش و آماده پرينت )

تعداد صفحه : 25 صفحه

قسمتی از متن .doc :

‏1

‏چند برنامگی

‏مقدمه اي به سيستم هاي عامل

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

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

‏1- استثنائات كلي ‏(‏استثنائ‏ات تماس غير سيستمي) براي به اتمام رساندن رشته به جاي متوقف كردن سيستم ‏را تغيير دهيد. اين كار مهم خواهد بود زيرا يك استثناي زمان اجرا نبايد باعث شود كه سيستم عامل خاموش شود. قبل از تكميل پروژه احتمالاً‏‌‏مجبور خواهيد بود كه چندين بار به اين كد سر بزنيد. چند موضوع مربوط به همزمان سازي ‏وجود دارد كه بايد در طي خروج از رشته به آن ها بپردازيد.

‏2- چند برنامه نويسي را اجرا كنيد. كدي كه به شما داده ايم محدود به اجراي يك برنامه كاربرد در هر بار مي باشد. ‏براي تغيير سيستم از تك برنامه نويسي به چند برنامه نويسي بايد چند تغيير در addrspace.h‏ و addrspace.cc‏ انجام دهيد. بايد كارهاي زير را انجام دهيد: الف) به شيوه اي براي تخصيص فريم هاي حافظه فيزيكي برسيد به طوري‏ كه چندين برنامه را بتوان به يك‏باره در حافظه بارگذاري كرد.

‏3

‏ب)‏ شيوه اي براي كپي كردن داده ها به هسته يا از هسته و از فضاي آدرس مجازي كاربر يا به آن ‏فراهم كنيد.

‏ج) وقتي يك برنامه كاربر پايان مي‏‌‏يابد به طور مناسب‏‌‏آزادسازي فضاي آدرس انجام شود.

‏د) تغيير الگوريتم بارگذار برنامه كاربر به طوري كه فريم هاي اطلاعاتي را جابجا كند بسيار مهم است. در حال حاضر تخصيص فضاي حافظه با اين فرض است كه يك فرايند در يك بخش مجاور حافظه بارگذاري شده است. وقتي چند برنامه نويسي فعال شد، حافظه ديگر ماهيتاً مجاور محسوب نمي شود اگر برنامه را اصلاح نكنيد احتمال دارد كه بارگذاري ديگر برنامه كاربر سيستم عامل را خراب كند.

‏3-‏ فرمان سيستم space id exec (char*name)‏ را اجرا كنيد. Exec‏ يك برنامه كاربر جديد مشخص شده در نام ‏پارامتر، اجرا شده در درون يك رشته سيستم جديد را شروع مي كند. شما بايد ‏كاركرد start process‏ در progtest.cc‏ را بررسي كنيد تا دريابيد كه چگونه فضاي كاربر در درون يك رشته سيستم را ايجاد كنيد. Exec‏ بايد در هنگام ‏خطا ‏1- را برگرداند در غير اين صورت بايد ‏"process space id‏" برنامه سطح كاربري كه ايجاد كرده است را برگرداند (نكته: space id‏ ها مي تواند به شيوه اي مشابه با open file id ‏ هاي پروژه 1 شما پيگيري شود با اين استثنا كه ممكن است بخواهيد در خا‏رج از رشته ان ها را دنبال كنيد).

‏4- فرمان هاي سيستم int join (space ID id)‏ و void exit (int exit code)‏ را اجرا كنيد. Join‏ آن طور كه در پارامتر آن ذكر شده است منتظر مانده و يك process space id ‏ را مسدود مي كند. exit‏ يك خروج را بر هر كسي كه كار اتصال انجام مي دهد بر مي گرداند اگر يك برنامه به طور موفقيت آميزي تكميل شود كد خروج صفر است و اگر خطا وجود داشته باشد مقدار ديگري مي شود. پارامتر كد خروج از طريق پارامتر exit code‏ تعيين مي شود. اگر اتصال با خطا مواجه شود join‏ كد خروج براي فرايندي كه مسدود مي كند را 1- تعيين مي كند. يك برنامه كاربر ‏فقط مي تواند به فرايندهايي بپيوندند كه به طور مستقيم به وسيله فرمان سيستم

‏4

exec‏ ايجاد شده باشد. مي توانيد به فرايندهاي ديگر يا به خودتان متصل شويد. شما مجبور خواهيد بود تا از راهنماهاي درون فرمان هاي سيستم خود براي هماهنگ كردن فرايندهاي كاربر joining ‏و exiting‏ ‏استفاده كنيد. مشاهده خواهيد كرد كه ‏اين را مي توان به عنوان ويرايشگر ‏ساكنipc ‏ (‏ارتباط درون فرايندي) الگوسازي كرد.

‏5- فرمان سيستم int creates semaphore (char*name, int semval)‏ را اجرا كنيد. از فرمان سيستم حذف كه در پروژه اجرا كرده ايد درخواهيد يافت كه ما مجبور خواهيم بود تا start.c‏ و syscall.h‏ را روزامد كنيم تا امضاهاي فرمان سيستم جديد بيفزاييم. شما يك ظرف در سطح سيستم ايجاد خواهيد كرد كه مي تواند تا 10 راهنماي نام گذاري شده را در خود جاي بدهد. در هنگام موفقيت سيستم create semaphore‏ عدد صفر و در هنگام خطا عدد 1- را بر مي گرداند. اگر نقاط آزاد كافي در ظرف وجود نداشته باشد ‏فرمان سيستم create semaphore‏ خطا خواهد شد، نام تهي بوده و يا مقدار اوليه راهنما كمتر از صفر مي باشد.

‏6- فرمان هاي سيستم int wait (char *name)‏ و int signal (char *name)‏ را اجرا كنيد. پارامتر اسم نام راهنما مي باشد. هردو فرمان سيستم در هنگام موفقيت صفر و در هنگام خطا 1- را بر مي گرداند. اگر كاربر يك نام راهنما غير قانوني (نامي كه ايجاد نشده است) را بدهد خطا مي تواند اتفاق بيفتد.

‏7- يك برنامه واسطه ساده براي امتحان فرمان هاي سيستم جديد اجرا شده به صورت بالا را اجرا كنيد. برنامه واسطه بايد در هر بار يك دستور بگيرد و برنامه كاربرمناسب را اجرا كند. برنامه واسطه بايد ‏در هر برنامه “exec”ed‏ را متصل كند و منتظر خروج برنامه بماند. در هنگام برگشت از join‏ ، كد خروج را در صورتي‏‌‏كه غير صفر باشد (اجراي طبيعي) چاپ كنيد. هم چنين برنامه واسطه را طوري طراحي كنيد كه بتواند در پس زمينه برنامه اجرا كند. هر دستور شروع شده با كاراكتر (‏&)‏ بايد در پس زمينه اجرا شود.

‏8- يك راه حل سطح كاربر براي مشكل توليد كننده / مصرف كننده ايجاد كنيد. راه حل بايد از سه برنامه تشكيل شده باشد: يك برنامه شروع سطح اصلي، توليد كنندگان و مصرف كنندگان. برنامه شروع سطح اصلي بايد