OS-HW2.pdf

‫به نام خدا‬
‫تمرین سری دوم درس سیستمهای عامل‬
‫دانشگاه صنعتی شریف – دانشکده مهندسی کامپیوتر‬
‫ترم دوم سال تحصیلی ‪49-49‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مهلت ارسال تمرین ها ‪ 72‬ام فروردین ماه ‪ 4949‬ساعت ‪ 79:34‬می باشد‪.‬‬
‫پاسخ تمرینات خود را به آدرس ‪ [email protected]‬ارسال نمایید‪ .‬دقت کنید که پاسخ ها تنها در قالب یک فایل ‪PDF‬‬
‫بوده و نام و عنوان ایمیل ارسالی با فرمت ‪ )91101111-HW2( StudentID-HW2‬ارسال گردد‪( .‬پاسخهایی که با این فرمت‬
‫ارسال نشوند در هنگام تصحیح با مشکل مواجه خواهند شد‪).‬‬
‫ارسال پاسخها به ازای هر روز تاخیر شامل ‪ %73‬کسر نمره خواهد شد و بعد از چهار روز به آن نمرهای تعلق نمیگیرد‪.‬‬
‫در صورت شباهت تمرینات ارسالی و احراز رونوشت بودن آنها برای هر دو نفر نمره صفر در نظر گرفته میشود‪.‬‬
‫کپی برداری محض از سایتهای اینترنتی نمره ای نخواهد داشت‪.‬‬
‫هرگونه سوال یا ابهام خود را به ایمیل ‪ [email protected]‬ارسال کنید‪.‬‬
‫‪ )4‬مراحل اجرای تعویض زمینه‪ 4‬را بیان کنید و مشخص کنید در این کار‪ ،‬چه اطالعاتی باید ذخیره شود؟‬
‫‪ )7‬بین دو ریسه‪ ،7‬چه اطالعاتی به اشتراک گذاشته میشوند و چه اطالعاتی یکتا هستند؟ مزایای برنامه های چند ریسه ای را بیان‬
‫کنید‪.‬‬
‫‪ )9‬الف) در زمان پایان یافتن پردازه‪ ،‬چه کارهایی توسط سیستم عامل انجام میشود؟‬
‫ب) چه پردازه هایی میتوانند پردازه های دیگر را متوقف‪ 9‬کنند؟‬
‫پ) پردازه پدر‪ 9‬به چه دالیلی اجرای یک یا چندتا از فرزندان خود را متوقف میکند؟‬
‫ت) پردازه های زامبی‪ 3‬و یتیم‪ 6‬چه نوع پردازه هایی هستند؟‬
‫‪1‬‬
‫‪Context Switch‬‬
‫‪Thread‬‬
‫‪3‬‬
‫‪Terminate‬‬
‫‪4‬‬
‫‪Parent Process‬‬
‫‪5‬‬
‫‪Zombie‬‬
‫‪6‬‬
‫‪Orphan‬‬
‫‪2‬‬
‫‪ )9‬متوسط زمان انتظار‪ ،2‬زمان پاسخگویی‪ 8‬و زمان برگشت‪ 4‬را برای لیست پردازه های زیر به ازای الگوریتم های گفته شده محاسبه‬
‫کنید‪:‬‬
‫الف) )‪Shortest Remaining Time First (SRTF‬‬
‫ب) )‪Shortest Job First (SJF‬‬
‫پ) )‪Round Robin (RR‬‬
‫‪ )3‬تعدادی فایل که هر فایل شامل مجموعه ای از کلمات است‪ ،‬در اختیار داریم‪ .‬میخواهیم برنامه ای طراحی کنیم که برای هر فایل‪،‬‬
‫اطالعات آنرا از دیسک خوانده و بر روی آنها پردازشی انجام دهد‪ .‬این برنامه را با استفاده از کتابخانه ‪ pthread.h‬طراحی میکنیم و‬
‫در ابتدای برنامه با استفاده از تابع )(‪ ،pthread_attr_setscope‬تنظیمات سیستم را بر روی آن اعمال میکنیم‪ .‬بررسی کنید‬
‫که آیا استفاده از روش چند ریسه ای برای این برنامه‪ ،‬مفید است یا خیر‪ .‬کدام روش‪ ،‬بیشترین تاثیر مثبت را دارد؟‬
‫الف) سیستم تک پردازنده و استفاده از تنظیم ‪PTHREAD_SCOPE_PROCESS‬‬
‫ب) سیستم تک پردازنده و استفاده از تنظیم ‪PTHREAD_SCOPE_SYSTEM‬‬
‫پ) سیستم چند پردازنده و استفاده از تنظیم ‪PTHREAD_SCOPE_PROCESS‬‬
‫ت) سیستم چند پردازنده و استفاده از تنظیم ‪PTHREAD_SCOPE_SYSTEM‬‬
‫‪ )6‬مشکل واماندگی حافظه‪ 40‬چیست و در پردازنده های چند هسته ای چگونه برطرف میشود؟‬
‫‪7‬‬
‫‪Waiting Time‬‬
‫‪Response Time‬‬
‫‪9‬‬
‫‪Turnaround Time‬‬
‫‪10‬‬
‫‪Memory Stall‬‬
‫‪8‬‬
‫‪ )2‬در الگوریتم زمانبندی ‪ ،Rate-Monotonic‬برای نحوه اجرای پردازه های زیر‪ ،‬نمودار گانت رسم کنید و میزان استفاده پردازنده‬
‫‪44‬‬
‫را اندازه بگیرید‪:‬‬
‫اگر به لیست پردازه های باال‪ ،‬پردازه چهارمی با مشخصات ‪ P4=10,T4=3‬اضافه شود‪ ،‬توضیح دهید میزان استفاده پردازنده به چه‬
‫صورت خواهد بود؟‬
‫‪ )8‬برنامه زیر به زبان ‪ C++‬و با استفاده از ‪ POSIX Threads‬نوشته شده است‪ .‬در این برنامه‪ ،‬آرایه ای به نام ‪ answers‬تعریف شده‬
‫است و هر تابع‪ ،‬بیانگر یک گیت از مدارهای منطقی است که با توجه به نیاز برنامه‪ ،‬در پاسخ خود‪ ،‬یکی از خانه های آرایه‬
‫‪ answers‬را مقداردهی میکند‪ .‬هرکدام از مقادیر ‪ D,S,E,F,C‬بیانگر یک سیم هستند‪ .‬به خروجی های چاپ شده دقت کنید و‬
‫بیان کنید که در این برنامه‪ ،‬چه ماژولی پیاده سازی شده است؟ برای افزایش سرعت برنامه‪ ،‬چه بهبودی میتوان در آن ایجاد کرد؟‬
‫(راهنمایی‪ :‬به موازی تر کردن انجام عملیات فکر کنید)‬
‫‪CPU Utilization‬‬
‫‪11‬‬
‫‪ )4‬الف)توضیح دهید که کدام الگوریتم های زیر میتوانند منجر به قحطی زدگی‪ 47‬شوند؟ در صورت امکان‪ ،‬راه حلی برای جلوگیری از‬
‫این مورد ارائه کنید‪:‬‬
‫‪FCFS -4‬‬
‫‪SJF (Shortest Job First) -7‬‬
‫‪Round Robin -9‬‬
‫‪Priority-Based -9‬‬
‫ب) فرض کنید زمانبندی ما بر پایه ‪ SJF‬طراحی شده است‪ .‬طول هرکدام از ‪ CPU Burst‬ها را قبل از انجام آنها‪ ،‬پیش بینی کنید‪:‬‬
‫(حدس اول را ‪ 8‬واحد در نظر بگیرید)‬
‫‪ )40‬توابع و فراخوانی های سیستمی در هر سیستم عامل با دیگری متفاوت است‪ .‬مثال در ویندوز‪ ،‬نمیتوان از کتابخانه های فراخوانی‬
‫سیستمی لینوکس و مثال دستور )(‪ fork‬استفاده کرد‪ .‬بررسی کنید که با این وصف‪ ،‬چگونه میتوان برنامه های چند سکویی‬
‫‪49‬‬
‫طراحی کرد؟‬
‫‪Starvation‬‬
‫‪Cross-Platform‬‬
‫‪12‬‬
‫‪13‬‬