به نام خدا پزوژه دوم درس سیستم عامل پیاده سازی زمان بندی 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ارسال کىیذ. زمان تحًیل حضًری در پایان مًعذ تحًیل اعالم خًاَذ شذ.
© Copyright 2025 Paperzz