P1_OS911.pdf

‫به نام خدا‬
‫پروژهی شماره یک درس سیستم های عامل‬
‫آشنایی با محیط سیستم عامل ‪ FreeBSD‬و هسته آن‬
‫مقدمه‬
‫در درس سیستم عامل با جنبه های مختلف یک سیستم عامل آشنا میشوید‪ .‬در بخش پروژه های درس سیستم عامل سعی داریم‬
‫تا دانشجویان مفاهیم آموخته شده را به صورت عملی پیاده سازی کنند‪ .‬تمرکز اصلی پروژهها بر روی زمانبندی است اما برای شروع‬
‫و آشنایی اولیهی شما با محیط سیستم عامل ‪ ،FreeBSD‬این پروژهی مقدماتی را در نظر گرفتهایم‪.‬‬
‫همان طور که در جلسهی توجیحی توضیح داده شد‪ ،‬پس از نصب صحیح ‪( FreeBSD‬ترجیحاً بر روی یک ماشین مجازی) شما‬
‫امکان تغییر هسته‪ 9‬را خواهید داشت‪ .‬در این تمرین از شما میخواهیم تا تغییرات کوچکی را در هسته سیستم عامل انجام دهید و‬
‫آن را با موفقیت کامپایل کنید‪ .‬در قسمت بعدی‪ ،‬با مفهوم ‪ KLD‬ها آشنا می شوید و یک نمونه از آن ایجاد میکنید‪.‬‬
‫‪kernel‬‬
‫پاییز ‪19-19‬‬
‫دانشکده کامپیوتردانشگاه صنعتی شریف‬
‫‪1‬‬
‫دکتر جلیلی‬
‫هسته سیستم عامل ‪FreeBSD‬‬
‫فایلهای هستهی سیستم عامل ‪ FreeBSD‬در آدرس ‪ sys/kern‬قرار دارند‪ .‬در این پروژهها قصد داریم با زمانبندی این سیستم‬
‫عامل کار کنیم که این کار با دسترسی به فایل های زمانبندی سیستم امکان پذیر میباشد‪ .‬این فایلها در آدرس های زیر قرار‬
‫دارند‪:‬‬
‫‪ sys/sys/sched.h )9‬این فایل رابط بین زمانبند و هسته ی سیستم عامل است و ارتباط سایر اجزای سیستم عامل از‬
‫طریق فراخوانی توابع و استفاده از ساختارهای تعریف شده در این فایل با زمانبند بر قرار میشود‪.‬‬
‫‪ sys/kern/sched_bsd.c )9‬یکی از زمانبندی های مورد استفاده در ‪( FreeBSD‬زمانبندی تاریخی برگرفته از ‪)BSD‬‬
‫‪ sys/kern/sched_ule.c )3‬زمانبندی جدید ‪ FreeBSD‬همراه با مالحظات کارایی در سیستم ها و پردازندههای جدید‬
‫تغییرات عمدهی مد نظر در فایل ‪ sched_ule.c‬داده میشود‪ .‬در این بخش‪ ،‬ساختاری به اسم ‪ proc‬وجود دارد که اطالعات‬
‫مربوط به هر پردازه –که شامل یک یا تعدادی ریسه است‪ -‬را نگهداری میکند‪ .‬باید توجه داشت که واحد زمانبندی در این سیستم‬
‫عامل‪ ،‬ریسه است‪ .‬اطالعات مربوط به ریسه ها در ساختار ‪ thread‬نگهداری میشود‪.‬‬
‫تعریف پروژه‬
‫‪ )9‬پیکربندی هسته‬
‫پس از نصب ‪ FreeBSD‬هر ماژول‪ ،‬وسیله گرداننده و یا سرویسی را که نیاز ندارید حذف کنید تا حجم هسته را کاهش‬
‫دهید‪ .‬سپس هسته جدید را کامپایل کرده و با استفاده از آن سیستم را راهاندازی کنید‪.‬‬
‫در گزارشی که ارائه میدهید باید اندازه هسته اصلی (‪ )Generic‬و هسته ای را که خودتان پیکربندی کرده اید را بیان‬
‫کنید‪ .‬توجه داشته باشید که قبل از دستکاری هسته‪ ،‬یک تصویر لحظهای از ماشین مجازیتان ایجاد کنید‪.‬‬
‫‪ )9‬اضافه کردن متغیرهای صحیح بدون عالمت ‪ 46‬بیتی ‪ WCET‬و ‪ deadline‬به ساختار ‪ td_sched‬در فایل زمانبندی‬
‫اصلی ‪ FreeBSD‬که در باال تعریف شد‪.‬‬
‫‪ )3‬ثبت فراخوانی سیستمی‬
‫روش رمزنگاری ‪ ROT13‬یکی از ساده ترین روشهای رمزنگاری است که برای ابهامنگاری در صفحات وب به کار میرود‪.‬‬
‫یک ماژول قابل بارگذاری در هسته‪ 9‬ایجاد کنید و با استفاده از آن یک فراخوانی سیستمی‪ 3‬را ثبت کنید که یک رشته را‬
‫گرفته و معادل رمزشده آن با روش ‪ ROT13‬را برگرداند‪ .‬سپس یک ‪ KLD‬دیگر ایجاد کنید به برعکس یک رشته رمز‬
‫)‪Kernel Loadable Module (KLD‬‬
‫‪System Call‬‬
‫پاییز ‪19-19‬‬
‫دانشکده کامپیوتردانشگاه صنعتی شریف‬
‫‪2‬‬
‫‪3‬‬
‫دکتر جلیلی‬
‫شده را گرفته و رشته اصلی را بازگرداند‪ .‬سپس یک برنامه سطح کاربر پیادهسازی کرده و صحت ‪ KLD‬خود را بررسی‬
‫کنید‪.‬‬
‫نکات تحویل پروژه‬
‫‪ )9‬برای این قسمت از پروژه یک مستند از نصب سیستم گروه خود ارائه دهید‪ .‬در ادامه انتظار میرود که سوال مربوط‬
‫به ‪ KLD‬را نیز در مستند جواب دهید‪ .‬فایلهای تغییر یافته در قسمت ‪ 9‬و ‪ 3‬را نیز ضمیمه کنید‪.‬‬
‫‪ )9‬پوشهی فشرده شدهی فایلهای خود را در ایمیلی با عنوان ‪ #std1Num_#std2Num_P1‬به آدرس‬
‫‪ operatingsystem911@gmail.com‬بفرستید‪ stdnNum .‬شماره دانشجویی افراد گروه است‪.‬‬
‫‪ )3‬زمان تحویل پروژهی اول‪ 92 ،‬آبان ‪ 19‬میباشد‪ .‬تحویل این تمرین به صورت کتبی است پس تالش کنید تا‬
‫مستندهای کاملی ارائه کنید‪.‬‬
‫‪ )6‬گزارشهای مشابه نمره ی منفی دریافت خواهند کرد‪.‬‬
‫موفق باشید‬
‫پاییز ‪19-19‬‬
‫دانشکده کامپیوتردانشگاه صنعتی شریف‬
‫دکتر جلیلی‬