دانشکده

دانلود فایل ها و تحقیقات دانشگاهی ,جزوات آموزشی

دانشکده

دانلود فایل ها و تحقیقات دانشگاهی ,جزوات آموزشی

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

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

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

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

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

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

 

چند برنامگی

مقدمه ای به سیستم های عامل

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

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

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

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

ب) شیوه ای برای کپی کردن داده ها به هسته یا از هسته و از فضای آدرس مجازی کاربر یا به آن فراهم کنید.

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

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

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- تعیین می کند. یک برنامه کاربر فقط می تواند به فرایندهایی بپیوندند که به طور مستقیم به وسیله فرمان سیستم 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- یک راه حل سطح کاربر برای مشکل تولید کننده / مصرف کننده ایجاد کنید. راه حل باید از سه برنامه تشکیل شده باشد: یک برنامه شروع سطح اصلی، تولید کنندگان و مصرف کنندگان. برنامه شروع سطح اصلی باید به صورت حداقل کاربر برای تعداد تولید کنندگان برای "exec" و تعداد مصرف‌کنندگان "exec" و هم‌چنین یک شمارش تکرار برای تولید کنندگان و مصرف کنندگان و اندازه بافر محدود را ترغیب کند. برنامه شروع اصلی سپس تولید کنندگان ومصف کنندگان را exec می کند و منتظر می ماند تا زمانی که تمام فرایندها تکمیل شود. هر تولید کننده باید یک بار مفید کاراکتر منحصر به فرد ایجاد کند (مثال: تولید کننده یک a را تولید می‌کند و تولید کننده دو b را تولید می کند). تولید کنندگان و مصرف کنندگان باید تکرارها را در یک فرمت خلاصه وشفاف چاپ کنند. توجه داشته باشید که exec اجازه مباحث خط فرمان را نمی دهد. شما می توانید از فایل از پروژه یک به عنوان بافر مشترک برای توجه به این مشکل استفاده کنید.

9- دو برنامه کاربر به جز اقلام هفت و هشت طراحی کنید که بالاتر ازآن بتواند در داخل برنامه واسطه اجرا شود تا قوی بودن راه حل کلی پروژه شما را نشان دهد.

10- مستندسازی (10 درصد) شامل مستند سازی داخلی و مستند سازی خارجی طبق آن چه که در پروژه یک توصیف شده است می باشد. یک فایل reade ایجاد کنید و آن را در دایرکتوری کد قرار دهید. کد خود را tar کنیدو آن را به عنوان یک فایل ارایه کنید. راهنمایی های ارایه شده در پروژه یک را دنبال کنید. ما در نظر داریم نرم افزار آشکار ساز سرقت اتوماتیک را برای اشکار کردن هر گونه پروژه کپی شده اجرا کنیم. پیامدها معمولا برای کسانی که در صداقت اکادمیک ندارند نامطلوب می باشد بنابراین به تنهایی کار کنید و نه به صورت گروه. این پروژه گروهی نیست پروژه های دیرتر از موعد پذیرفته نمی شود. مستند سازی خارجی حاوی طرح نشان داده شده به وسیله یک نمودار کلاسی آنلاین را در تاریخ مقرر ارایه کنید وقتی نمونه نمایشی خود را انجام دادید یک کپی سخت به همراه خود به TA بیاورید.



خرید و دانلود تحقیق در مورد چند برنامگی