برگزیده های پرشین تولز

پروژه برنامه نویسی درس سبستم عامل

m_farahaniiii

کاربر تازه وارد
تاریخ عضویت
9 ژانویه 2017
نوشته‌ها
1
لایک‌ها
0
سن
28
پروژه برنامه نویسی درس سیستم عامل که مهلتش تا پایان 22 دی هست
شرح پروژه:
مجتمع نانوایی بادبادک طلایی به تازگی شروع به فعالیت کرده است. در این نانوایی سه نوع نان سنگک، بربری و لواش پخت می شود. برای هر کدام از نان ها صف جداگانه ای تشکیل می شد. نان لواش و سنگک هر کدام یک صف دارند ولی در قسمت نان بربری سه صف جداگانه شامل صف های زنانه ، مردانه و یک دانه ای تشکیل می شود. در این صف ها اولویت اول با افراد صف یک دانه ای ، اولویت دوم افراد صف زنانه و اولویت آخر با صف مردانه است. برای هر نوع نان حداکثر ظرفیت و گنجایش صف 10 نفر می باشد. اگه فردی وارد نانوایی شود و ببیند صف مورد نظرش پر است از نانوایی خارج می شود.

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

مرحله اول:
الف)

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

فرض 1- صف نان های مختلف تداخلی با هم ندارند و می توانند با هم پیش بروند.

فرض 2- هر فردی که وارد نانوایی می شود با احتمال برابر زن/ مرد است ، تقاضای نان بربری/سنگک/ لواش دارد و تعداد نان هایی که می خواهد بین 1 تا 10 عدد ( فقط از یک نوع) می باشد.

فرض 3- هر 30 ثانیه یک نان از تنور خارج می شود.

فرض 4- فرض کنید طی یک ساعت حداقل 60 نفر وارد نانوایی می شوند.

خروجی های مورد نظر:
1) رویه ی Customer_Comes برای شبیه سازی فرآیند تصادفی ورود مشتریان

2)رویه ی Who_Is_Next که با دریافت پارامتر نوع نان فردی که نوبتش رسیده را مشخص می کند.



ب)

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

خروجی های مورد نظر:
1) اعمال تغییراتی در رویه ی Who_Is_Next و در صورت نیاز در رویه Customer_Comes (به دلیل اینکه ممکن است بخواهید تغییراتی در صف بندی داشته باشد و یا حتی از ساختمان داده ی دیگری غیر از صف استفاده نمایید)

2) رویه ی Compute_TurnAround_Time که رویه Who_Is_Next را تا خروج نفر آخر فراخوانی می کند اطلاعات تمام مشتریان وارد شده به نانوایی + زمان ورود و زمان خروج آنها را نمایش می دهد و در نهایت متوسط زمان پاسخدهی سیستم را محاسبه می کند. با یک بار اجرا، رویه ی Compute_TurnAround_Time را برای دو حالت الف و ب محاسبه و متوسط زمان پاسخدهی را مقایسه نمایید.

توجه: دو رویه Customer_Comes و Compute_TurnAround_Time به صورت موازی فراخوانی می شوند.

مرحله دوم:
الف)

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

فرض 5- فردی که نوبتش رسیده تا زمانی که تعداد نان مورد نظرش تکمیل نشده بود باید منتظر بماند .

فرض 6- زمانی که کسی در صف نیست شاطر نان پخت نمی کند.

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

خروجی های مورد نظر:
1) رویه Customer_In_Front برای انواع نان که در ابتدای آن رویه Who_IS_Next صدا زده می شود تا مشخص شود نوبت چه کسی است. در ادامه باید با توجه به مفروضات مسئله مشتری سرویسش را دریافت کند.

2) رویه Baker_In_Back که می بایست برای سه نانوا جداگانه نوشته شود و فعالیت های آنها را شبیه سازی کند.

توجه : در این مرحله سه رویه Customer_Comes ، Customer_In_Front و Baker_In_Back به صورت همروند اجرا می شوند و شما باید مراقب کنترل همرندی بین آنها باشید.

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

ب)اختیاری (نمره اضافه)

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