به نام خدا پروژه اول درس سیستم عامل وحًٌ وًشته فراخًاوی سیستمی ي آشىایی با زمان بىذی Least Slack time ترم دوم سال تحصیلی 0933 – 0931 کامیار حاجی اللهوردی یاسین اروس خانی مقدمه تاکٌَى تا فراخَاًی سیستوی 1آضٌا ضذُ ایذ .در ایي پرٍشُ لصذ دارین تا ًحَُ ًَضتي ٍ فراخَاًی آى ّا تیطتر آضٌا ضَین. تغییراتی کِ اػوال خَاّیذ کرد همذهِ ای ترای پرٍشُ ی تؼذی ضوا خَاّذ تَد. راتظ زهاى تٌذّ ٍ 2ستِ 3سیستن ػاهل ،در فایل sys/sys/sched.hاز کذ سیستن ػاهل لرار گرفتِ است ٍ .ارتثاط سایر اجسای سیستن ػاهل از عریك فراخَاًی تَاتغ ٍ استفادُ از ساختارّای تؼریف ضذُ در ایي فایل تا زهاى تٌذ ترلرار هی ضَد. در FreeBSD 8.0دٍ پیادُ سازی ترای زهاى تٌذ ٍجَد دارد کِ یکی از آى ّا ٌّگام کاهپایل اًتخاب هی ضَد ( :تِ صَرت پیص فرض ،زهاى تٌذی )ULE ( sys/kern/sched_bsd.c )1زهاى تٌذ تاریخی ترگرفتِ از ) BSD ( sys/kern/sched_ule.c )2زهاى تٌذ جذیذ تا هالحظات کارایی در سیستن ّا ٍ پردازًذُ ّای جذیذ) تا تَجِ تِ پطتیثاًی FreeBSDاز ریسِّ 4ا در سغح ّستٍِ ،5احذ زهاى تٌذی ًیس ریسِ است ٍ اعالػات آى در ساختار ً struct procگْذاری هی ضَد .ریسِ ّای پردازُ ًیس تِ صَرت لیستی از ّ struct threadا تِ آى هلحك ضذُ اًذ. تخطی از ساختار threadهرتَط تِ ًگْذاری اعالػات زهاى تٌذی است کِ تِ صَرت یک اضارُ گر struct td_sched *td_schedتؼریف ضذُ است ( .ساختار فَق در پیادُ سازی زهاى تٌذ تؼریف ضذُ است ٍ سایر تخص ّای ّستِ تِ آى دسترسی ًذارًذ). نکته در ایي پرٍشُ هی تَاًیذ فرض کٌیذ کِ ّر پردازه تٌْا از یک ریسه تطکیل ضذُ است. 1 System call Scheduler 3 Kernel 4 Thread 5 Kernel Threads 2 صورت پزوژه در ایي لسوت کارّایی کِ ضوا ترای ایي پرٍشُ اًجام هی دّیذ ،هؼرفی هی ضًَذ: )1تغییر َستٍ در ایي لسوت ضوا تایذ سِ هتغیر slack_mode ٍ deadline ٍ 6WCETرا تِ ساختار td_schedدر هسیر زیر تؼریف کٌیذ. sys/kern/sched_ule.c )2پیادٌ سازی فراخًاوی سیستمی بٍ صًرت KLD در ایي لسوت تایذ سِ فراخَاًی سیستوی زیر را تِ صَرت KLDپیادُ سازی کٌیذ. int set_process_slack(pid_t pid, struct timeval wcet , struct timeval ;)deadline ;) int get_process_slack(pid_t pid, struct slackconf *slc ;) int disable_process_slack(pid_t pid تاتغ اٍل یک ریسِ را از ًَع slackهی کٌذ .تاتغ دٍم اعالػات یک ریسِ از ًَع slackرا در ساختاری از ًَع slackconf7هی ًَیسذ ٍ .تاتغ سَم یک ریسِ را از حالت slackخارج هی کٌذّ .ر 3تاتغ در صَرتی کِ هَفك تِ اًجام کار ًطًَذ تایذ همذار -1را ترگرداًٌذ. Worst Case Execution Time {struct slackconf ;struct timeval WCET ;} ;struct timeval deadline 6 7 )3وًشته تًابع کتابخاوٍ ای سطح کاربر برای فراخًاوی سیستمی جْت اجرای فراخَاًی ّای سیستوی تؼریف ضذُ در ترًاهِ ّای کارتردی ،تایذ کتاتخاًِ هتطکل از یک فایل سرآیٌذ ( ٍ ) Headerفایل Objectدر اختیار ترًاهِ ًَیساى لرار گیرد .تِ ػٌَاى ًوًَِ یک ترًاهِ سغح کارتر هی تَاًذ تا کذ ریل فراخَاًی سیستوی هَرد ًظرش را اجرا کٌذ: “#include “mysyscalls.h { )int main(int argc, char *argv ;)(struct slackconf sc=getSlackModeConfiguration ;)printf(“Slack Mode: %d”, sc->WCET ;return 0 } ایي فایل ،در سغح کارتر ًَضتِ هی ضَد ٍ هی تَاًذ ضاهل هتذّای زیر تاضذ: ;) setSlackModeConfiguration(... getSlackModeConfiguration(...);//null in case of not in slack mode ;) disableSlackMode(... ایي ترًاهِ ،تایذ سرآیٌذی را کِ از فراخَاًی سیستوی استفادُ هی کٌذ ،ضویوِ داضتِ تاضذ. تذکزات )1راٌّوایی ّای تیطتری سر کالس حل توریي خَاّذ ضذ. )2فرصت را از دست ًذادُ ٍ پرٍشُ را ّر چِ سریؼتر ضرٍع کٌیذ .هَػذ تحَیل آى به هیچ عنوان توذیذ ًخَاّذ ضذ. )3در صَرت هطاّذُ تملةً ،ورُ ّر دٍ گرٍُ صفر خَاّذ ضذ. تحویل پزوژه پیادُ سازی خَد را تِ صَرت فایل فطردُ تا ػٌَاى Project1#StudentNumber1-StudentNumber2 تا تاریخ 00/2/27ساػت ( 6:00صثح ) تِ آدرس os.sharif@gmail.comارسال کٌیذ. زهاى تحَیل حضَری در پایاى هَػذ تحَیل اػالم خَاّذ ضذ.
© Copyright 2025 Paperzz