Project2.pdf

‫به نام خدا‬
‫پزوژه دوم درس سیستم عامل‬
‫پیاده سازی زمان بندی‬
‫‪Least Slack Time Rate first‬‬
‫)‪(LSTR‬‬
‫ترم اول سال تحصیلی ‪1931- 1931‬‬
‫یاسین اروس خانی‬
‫صبا طیبی فر‬
‫‪‬مقدمه‬
‫ّواى طَس کِ دس پشٍطُ ی قثل رکش شذ ‪ّ ،‬ذف اص اًجام ایي پشٍطُ ‪،‬آشٌایی تا صهاى تٌذی سیستن ػاهل‬
‫‪ ٍ FreeBSD‬اػوال تغییشات دس آى ٍ اضافِ کشدى صهاى تٌذی ‪ Least Slack Time Rate first‬تِ یکی اص‬
‫کالس ّای صهاى تٌذی ‪ FreeBSD‬است‪.‬‬
‫سیستن ػاهل ‪( FreeBSD‬اص ًسخِ ی ‪ 5‬تِ تؼذ) اص صهاى تٌذی ‪ ULE‬هثتٌی تش کالس ٍ اٍلَیت استفادُ‬
‫هی شَد‪ .‬دس ایي صهاى تٌذی کاس ّا دس ‪ 3‬کالس ‪ Idle ٍ Time Sharing ، Real Time‬دستِ تٌذی هی شًَذ ‪،‬‬
‫کِ پیش فشع یک کاس جذیذ ‪ ،‬کالس ‪ Time Sharing‬است ‪ ،‬کِ تا استفادُ اص فشاخَاًی سیستوی ‪rtprio‬‬
‫هی تَاى اٍلَیت یا کالس پشداصُ ّا سا تغییش داد‪.‬‬
‫دس آدسس ّای پاییي هی تَاًیذ تشًاهِ ّای صهاى تٌذی ‪ FreeBSD‬سا هشاّذُ کٌیذ ‪:‬‬
‫‪ : sys/sys/sched.h ‬کِ سش فایل ّای تَاتغ صهاى تٌذی دس آى قشاس گشفتِ است‪.‬‬
‫‪ : sys/kern/sched_ule.c ‬صهاى تٌذی پیش فشع هَسد استفادُ سیستن‬
‫‪ : sys/kern/sched_bsd.c ‬صهاى تٌذی کِ دس ًسخِ ّای پیش اص ‪ 5‬استفادُ هی شذ‪( .‬اًتخاب‬
‫صهاًثٌذی ٌّگام کاهپایل ّستِ اهکاى پزیش است)‬
‫پیادُ ساصی یک ًَع صهاى تٌذی ‪ً ،‬یاص تِ ٍقت ٍ هْاست تاالیی داسد اص ایي سٍ ّذف ایي پشٍطُ‪ ،‬اػوال تغییشاتی دس‬
‫صهاى تٌذی ‪ ULE‬است‪ ،‬تِ ایي طَست کِ دس پاییي تشیي اٍلَیت کالس ‪ ، Real Time‬صهاى تٌذی تش اساس‬
‫‪( Least Slack Time Rate first‬کِ دس پاییي تِ تَضیح آى هی پشداصین) اًجام شَد‪ .‬تشای ایي کاس شوا دس‬
‫پشٍطُ ی پیش ‪ ،‬هتغیشّای الصم جْت اػوال ایي صهاى تٌذی ٍ فشاخَاًی ّای سیستوی هَسد ًیاص سا پیادُ ساصی‬
‫کشدُ ایذ‪ .‬دس ایي هشحلِ کذ ّای صهاى تٌذی خَد سا تِ صهاى تٌذی سیستن ػاهل اضافِ هی کٌیذ‪.‬‬
‫ّواى طَس کِ هی داًیذ ‪ ،‬دس سیستن ػاهل ّایی کِ اص سیسِ دس سطح ّستِ پشتیثاًی هی کٌٌذ‪ّ ،‬ش پشداصُ تثذیل‬
‫تِ یک یا چٌذ سیسِ هی شَد‪ .‬دس ایي پشٍطُ تشای سَْلت کاس ّش پشداصُ تک سیسِ ای دس ًظش گشفتِ هی شَد کِ‬
‫ّواى سیسِ ای است کِ دس فشاخَاًی ّای سیستوی خَد تا آى کاس کشدُ ایذ‪.‬‬
‫‪‬سمان بندی ‪Slack Time‬‬
‫کاستشدّای ‪ Least Slack Time Rate first‬ػوَها اص کالس ‪ّ Real Time‬ستٌذ‪ .‬تٌاتشایي صهاى تٌذی ایي‬
‫کالس است کِ تایذ تشای افضٍدى ‪ LSTR‬تغییش دادُ شَد‪ .‬دس حالت کلی سِ هشخظِ تشای صهاى تٌذی ‪ LSTR‬دس‬
‫هَسد ّش سیسِ ( دٍسُ ای ‪ ) 1‬هَسد ًیاص است‪:‬‬
‫‪ :WCET )1‬طَالًی تشیي هذت اجشای سیسِ‬
‫‪ :Deadline )2‬هَػذ ًسثی تشای اجشای سیسِ پس اص آغاص دٍسُ‬
‫‪ :Period )3‬دٍسُ صهاًی اجشای سیسِ‬
‫تشای سادگی‪ ،‬دٍسُ ای تَدى اجشای سیسِ دس ایي پشٍطُ تِ طَست خَدکاس لحاظ ًوی شَد ٍ کافی است اطالػات‬
‫ریل دس هَسد ّش سیسِ هشخض شَد‪:‬‬
‫‪ :WCET )1‬طَالًی تشیي هذت اجشای سیسِ‬
‫‪ :Deadline ( Absolute ) )2‬هَػذ هطلق تشای اجشای سیسِ پس اص تؼشیف‬
‫ّوچٌیي تشای سادگی فشع هی شَد صهاى تٌذ فقط یک پشداصًذُ سا دس ًظش هی گیشد (تذٍى ‪ ٍ .)SMP‬توام‬
‫پشداصُ ّای داسای ‪ ،Slack Rate‬اٍلَیتی تشاتش تا تذتشیي اٍلَیت ‪ Real Time‬داسًذ‪ّ .‬وچٌیي تشای ّش پشداصُ‬
‫ًشاًِای ‪ 2‬تشای هشخض کشدى ایٌکِ سیسِ ‪ Slack Rate‬است یا خیش‪ ،‬تایذ دس ًظش گشفتِ شَد‪ .‬پشداصُ ّا تا طذا‬
‫صدى سِ فشاخَاًی سیستوی ریل تا صهاى تٌذ ‪ LSTR‬استثاط تشقشاس هی کٌٌذ‪.‬‬
‫**‪/‬‬
‫‪* Enable or change SLACK settings.‬‬
‫‪* @param pid only the first thread is considered. The thread have must‬‬
‫‪* already been a REALTIME thread.‬‬
‫‪* @param wcet worst-case execution time.‬‬
‫‪* @param deadline absolute deadline.‬‬
‫‪* @return 0 on success, -1 on error.‬‬
‫‪*/‬‬
‫;)‪int set_process_deadline(pid_t pid, struct timeval wcet, struct timeval deadline‬‬
‫‪Periodic‬‬
‫‪Flag‬‬
‫‪1‬‬
‫‪2‬‬
‫**‪/‬‬
‫‪* Get SLACK settings and information.‬‬
‫‪* @param pid only the first thread is considered. The thread have must‬‬
‫‪* already been a REALTIME & SLACK thread.‬‬
‫‪* @param wcet if not NULL, filled with worst-case execution time.‬‬
‫‪* @param deadline if not NULL, filled with absolute deadline.‬‬
‫‪* @param et if not NULL, filled with execution time until now.‬‬
‫‪* @return 0 on success, -1 on error.‬‬
‫‪*/‬‬
‫‪int get_process_deadline(pid_t pid, struct timeval *wcet, struct timeval *deadline, struct‬‬
‫;)‪timeval *et‬‬
‫**‪/‬‬
‫‪* Disable SLACK.‬‬
‫‪* @param pid only the first thread is considered. The thread have must already been‬‬
‫‪* a REALTIME & SLACK thread.‬‬
‫‪* @return 0 on success, -1 on error.‬‬
‫‪*/‬‬
‫;)‪int disable_process_deadline(pid_t pid‬‬
‫سیسِ ّای ‪ًَ Slack Rate‬ػی اص سیسِ ّای ‪ّ Real Time‬ستٌذ کِ ًشاًِ ی ‪ Slack Rate‬آى ّا فؼال‬
‫است‪ .‬تشای فؼال کشدى ًشاًِ‪ ،‬فشاخَاًی سیستوی اٍل اجشا هی شَد‪ .‬تا ایي فشاخَاًی‪ ،‬سیسِ هشخض شذُ اص آى تِ‬
‫تؼذ طثق ‪ LSTR‬صهاى تٌذی هی شَد‪ّ .‬ش گاُ ًَتت اجشایش سسیذ‪ ،‬اجشا هی شَد تا ایٌکِ هجذدا فشاخَاًی‬
‫سیستوی اٍل طذا شَد یا فشاخَاًی آخش‪ ،‬سیسِ سا تِ طَست داٍطلثاًِ اص حالت ‪ Slack‬خاسج کٌذ‪ .‬اگش سیسِ‬
‫پس اص طَالًی تشیي صهاى اجشایی کِ هشخض شذُ است یکی اص ایي دٍ کاس سا ًکٌذ‪ً ،‬وی تَاًذ اجشای خَد سا دس‬
‫حالت ‪ Slack‬ا داهِ دّذ ٍ هشاتِ ٍضؼیتی تشایش پیش هی آیذ کِ فشاخَاًی سیستوی سَم سا اجشا کشدُ تاشذ‪.‬‬
‫تشای آى کِ اختاللی دس ػولکشد هؼوَلی تشًاهِ ّا پیش ًیایذ‪ ،‬طثق سیاست ػوَهی صهاى تٌذی دس‬
‫‪ ،FreeBSD‬اتتذا سیسِ ّایی کِ اٍلَیت ّای تاالتشی داسًذ ٍلی ‪ً Slack‬یستٌذ صهاى تٌذی هی شَد تا ًَتت تِ‬
‫سیسِ ّای ّن اٍلَیت تا ‪ّ Slack‬ا تشسذ‪ .‬دس ایي طَست اتتذا سیسِ ّای ‪ Slack‬تش اساس تشتیة ‪ rate‬اجشا‬
‫هی شًَذ ٍ پس اص آى سایش سیسِ ّا تا ایي اٍلَیت تِ تشتیة ‪ FCFS‬اجشا هی شًَذ‪ ( .‬ایي سیسِ ّا یا اص اٍل‬
‫‪ً Slack‬ثَدُ اًذ یا اص حالت ‪ Slack‬خاسج شذُ اًذ)‪ًْ .‬ایتا ًَتت تِ سیسِ ّایی هی سسذ کِ اٍلَیت تذتشی‬
‫ًسثت تِ ‪ّ Slack‬ا داسًذ ٍ دس کالس ّای صهاى تٌذی تا اٍلَیت پاییي تش ّستٌذ‪.‬‬
‫‪‬نحوه سمان بندی‬
‫دس ایي صهاى تٌذی تشای ّش سیسِ‪ ،‬هفَْهی تا ًام ‪ٍ Rate‬جَد داسد‪ .‬فشع کٌیذ سیسِ دس صهاى ‪ r‬تشای اٍلیي تاس‬
‫اجشا شذُ تاشذ ٍ ‪ eri‬هذت صهاى تاقی هاًذُ اجشای ‪ i thread‬ام است‪ّ ،‬ن چٌیي هَػذ ‪ ٍ d‬صهاى اجشایی‬
‫‪WCET‬سا داشتِ تاشذ ٍ ‪ t‬صهاى حال سیستن تاشذ‪ ،‬آى گاُ تشای ّش ‪ threadi‬داسین ‪:‬‬
‫= ) ‪ Rate(threadi‬‬
‫حال دس صهاًی کِ ًَتت تِ اجشای سیسِ ّای ّن اٍلَیت تا ‪( Slack‬پاییيتشیي اٍلَیتِ کالس ‪)Real Time‬‬
‫هی سسذ‪ ،‬دس اتتذا سیسِ ّایی اجشا هی شًَذ کِ اص ًَع ‪ّ Slack‬ستٌذ ٍ دس ایي تیي سیسِ ّایی اًتخاب هی شًَذ‬
‫کِ ‪ Rate‬تیشتشی داسًذ‪ ٍ .‬پس اص آى ّا‪ ،‬سیسِ ّایی کِ اص ًَع ‪ً Slack‬یستٌذ اجشا هی شًَذ ٍ دس ًْایت ًَتت‬
‫تِ سیسِ ّایی تا اٍلَیت پاییي تش هی سسذ‪.‬‬
‫‪ ‬پیاده ساسی‬
‫تشای پیادُ ساصی‪ ،‬اکثش تغییشات دس فایل ّای ‪ sched_ule.c ٍ sched.h‬خَاّذ تَد‪ .‬هشاحل کاس پیشٌْادی‬
‫پس اص هطالؼِ فایل ّای هزکَس تِ ایي طَست است‪:‬‬
‫‪ ‬تؼشیف هتغیشّا‬
‫‪ ‬تؼشیف فشاخَاًی ّای سیستوی‬
‫‪ ‬تظحیح کذ اضافِ کشدى تِ طفَف‬
‫‪ ‬تظحیح کذ هقذاس دّی اٍلیِ هتغیشّا‬
‫‪ ‬حساتشسی ٍ تِ سٍص سساًی هتغیش ًگِ داسی صهاى اجشا ٍ ‪ preemption ٍ ...‬دس طَست لضٍم‬
‫‪ٌّ Preemption ‬گام اضافِ شذى یک سیسِ ‪ Slack‬جذیذ دس طَست لضٍم‬
‫تَطیِ هی شَد پیش اص اضافِ کشدى ّشگًَِ کذ یا دستکاسی آى‪ ،‬کذّای هشاتِ اص صهاى تٌذ ‪ ULE‬سا هطالؼِ‬
‫کٌیذ تا اص سیضُ کاسی ّای الصم هطلغ شَیذ‪ .‬تِ طَس خاص‪ ،‬سػایت کشدى ‪ّ locking‬ای هٌاسة تش سٍی‬
‫ساختاسّایی کِ هی خَاّیذ هتغیششاى سا تخَاًیذ یا تغییش دّیذ اص اّویت صیادی تشخَسداس است‪.‬‬
‫‪ ‬تذکزات‬
‫‪ )1‬راَىمایی َای بیشتری سر کالس حل تمریه خًاَذ شذ‪.‬‬
‫‪ )2‬فرصت را از دست وذادٌ ي پريژٌ را َر چٍ سریعتر شريع کىیذ‪ .‬مًعذ تحًیل آن به هیچ عنوان تمذیذ وخًاَذ‬
‫شذ‪.‬‬
‫‪ )3‬در صًرت مشاَذٌ تقلب‪ ،‬ومرٌ َر دي گريٌ صفر خًاَذ شذ‪.‬‬
‫‪ ‬تحویل پزوژه‬
‫پیادٌ سازی خًد را بٍ صًرت فایل فشردٌ با عىًان‬
‫‪Project1#StudentNumber1-StudentNumber2‬‬
‫تا تاریخ ‪ 22‬آرر ‪ 1331‬ساعت ‪ ( 0011‬صبح ) بٍ آدرس ‪ os.sharif@gmail.com‬ارسال کىیذ‪.‬‬
‫زمان تحًیل حضًری در پایان مًعذ تحًیل اعالم خًاَذ شذ‪.‬‬