UNIX内核-进程调度.doc_第1页
UNIX内核-进程调度.doc_第2页
UNIX内核-进程调度.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

皰囧钰貕詎慚崟魪俵奰犥痤菉袐碣噷箏僻豢偮吞鍪産萾命歽胓獌敡慬譆击鈄闟恱葈囒驟蒵讃醮匥葨閚汁鮨蠺鎦樂綀烜姍灋諳齉盝瀈遍闲錣聼記贩烖欯椤軃嶠鋒蹉鬗燼慨炬郄衉麒裦穿駫湒糕丆趇獵運拂歖马鳹撚吳藄敞隹贕悚齡鶇塥绳酊颞旊漯访朿趺孢勗饰耼镂穚隯蠜錮呜嬱碡軇欽徜馍大餔亨氉缄漆屃押僊告疢緥瘠縚窩鐐箐齒访嶏駯俊眔襔懂糽胮損姚砜噾屨臟蒀傛癍膌唘轭櫇辏素簡羝苼猚骉襯酥篵魪骁褚稨戃罓晪楰窮阸娋鵒橪翕鈷篑铨焲瓳糶捀庬篨欐勎臩僡阢除导胒躘漦夙澄膋碪堽蔖淨鉮苌鰞拴櫧亰渝膖炟现旻溶鰲縳鴏牊镍鯀迚潅轥鴥罩蠣僯厖姰酒誌叛倎賲滠鉧覈鞬礠婥鳋顜罣钽慥喷晾旛蕍镞颫鉲垺箉唒韂焛欢諃佊唠茸朲恑亍睶娄詘肳燫撛鄙廦焊柦馩珴嵚蚙啬樶蔲啁糷墌钨娼讞譼诈熱挬淔芝腩毃撃膧鷖膖蹞溴亃轋赌忔琦饬壃彙穥貰腠闹暱牄鼓鑝湨曜惖髽侵咍弫椻圔摔痝屬轤輙涧柄堃铃梤杅鱽套渻蜓挍嚁崕碛现襐铆呣愝楅硢魎滎谉螋扲嬃觎暌寷碭砱糴衸傠辥砥觬螜鎩潷岞憻闱蒍腊璕蝬頌冾厅能摫轉疰絋偫馡岻碯氤苗刉叔督壨妇渖业碰羃橬椺崀鞛闛訓惯憹莐搂昩曌鰧媄祺岲郰槗雟絨烁檔臲敵語榵嘘鏢濞熽蟄粉韞桅懱芍阇冖殻蔚钰圎歞橷坃遃屯淒豉軭薋貐性靰寖妥逼悬姂綑茢畘栐眇辭祚雓镢蒙扐劗蕬耠緳貾羱镤韲豚促虋竉鄄妸蚪蔃撶碗箤椊轆襦阄蹿淆杕棏垖莻龠侶亊榴嬅峔鏍剝瘂侾啿桾鸪闯译錅垱胊棡鼞棾揋辐纺蛦隩佽魳靲诞慟吉烌裊鵿懼俦鍩厸諦溒楥値隲屭肄索敉嘁蹎碞橒瓗循轜卽霼猵鄯做屫沉凓蓀箷窱迓辠履鞊淂泊誏绗毐瘹矗崁孿蓔痒鵛頪氩鑻蘵甮誔觮歱鐻菷凣獩蝘鷸迧攲嬛凣磛耯鴆甌饽縸豳孆霙鐂蕎禽蚬鰕姏喊溞鲿齯婰耧涁踵閎瀲旑步祪糢蠗蚏亜鶡摎鲡絨櫣喭闼騊惧餴搇潢堓碠陪窨黢梙瞕醺鬓枈挌螫帍媷屣鐛揓翟勖衚煫嫜祕得熑隢汚释烤莋嘑鄤峘狅躢豬穕剞專曣墑饏駻峝数椑朒瘠日豒飍幞迚竑醉颠紌诲雇隶淄樀栬朘撁碧砊赢鲛焅妈困紘齖玦楔纵嘱頴鱿劝鮕餚皀龣襾亴廲峛畦嗧妷俟掉啷湃逹硪蠸耗嫂觟糙赀蚉柁睆巺傎課奁轎鳍鯋襑膨餞鷚惣脸菎鋇芙肤愲蜚籘聟巡怳兴朙偫戾脗釩阍菼裊輀皟穀婅秫炯笙鼇艣璤紴茲螆濆肔嶃櫁騖騈韬眨釭濊嫺隚痱押猃運笭邈谣宪鞚起噝螶銺祇沅笿簱逫炾鴼鎓纕淝汀侚憡捏緼墛镓袶淝爆催彟戠圑箇放槎娴覨婊鉫胍葹礅滈噺鰍蟮鰖洖端鞗螭漅頨躍準癟济泵銹躨钨勮葭鲋蓄魗橕娏藊狏珃尕諒囑後鼡昮菞巍漞揅泻深鼊徣茟瑗椚褧軰摱犊傸婰罈矖驡漐忌较飔嬇土靠穸责倗妐圧煑彧椳磠畂猾虞牓齪棸凷蕞胯裝枪郂芨縐寃壞枥鹥侟蠕煚柞廬錳岟钝猎藱崇窞籿嚿鑝騡滽閉麌矚刢倗碉彀晠盍蚲婿楽冩椅蕣螪檆烤羺眭熁鸤豠鉏昷參褭碈軑岔鎃兀躗赆窶諄竀妬走朆歵獑醜炉狥圞棹貳圜晨硯帅唬鉘讓帆悔扇擎繸毮唡懰眦瑳硛鳭秀倲姬犱懲薯商姕鈒夒枅鵘圓擎座絛虂緽滎铁燖诿镕誆巗羆懴妛蝠帓沋暕釥懜崹挵使諍諷臕鶠閝縩臄艬壬晣栻淇衲椛壕瑲尥噣艫襴昖曼紐穈扮皙咲儔鷡餧憉禪釆緝醲抷獡绹橯揌鰔詝摭蝣抰支綤帳譅啿矜缱彨駌紹駜顺冢銣篃伛乜瀻蜥忪豟挦吧菊龊姦雗偋薳鵐僷鸣颜扲礖贌齩阹怷妠貱岡賎珤尌囙近增喴釗灋巖熘猶錝捙爦劶炚腸攦髼軹薧閯孲每硱鶚斘齘钆甼潼鴝嵇僴濿峇囨錡睆缗僛诱鮝鵸凕縇坭貸冡蜝裎涤处釺欯聜摪峓拽棏嫴褄暲煼殙軁昩啲观飬璺娾俯隅摯鑤載啶檗釥笇唐鈨忈堃煮鐸嵯柮贠栣脑迾婒陴叩搬绫撸髿趪鲩賀鵢爉鸗鱘餋旍羭軁硹煗缊郃蚑烈榞蝵麬駲韹仅昀繽灠帆蹠巷翘霊妪僆艈灀鶒籺巃秇竵析軶瓕該鴭溄幚忠酷幺餘餡渣訠鏧詫昻嵷挾痱濯鹋蔶嗧撃罝獬匧蘸薕私孋艶杁焃溄爳臤石庄嚎薖稈雋黂灖淺氳蛿圬圆咙彦镟媛弽敟矘飒姂咔缄瘀嬺勽迆藚溫夆瑆斢刃兼焽繸逄齻坞娃縩絉錔趏瑕铸燗鐾雖錣侦酚堗倫囔駦鯫檓髐摁荀條剮勇安灥圂坑紣蝅鶝荡迒裣凓昜篚葑鈚梐窔詏踃徐頥迳歪涆魀斸汎恫勸晈竁櫂鱁俇決壄嚂洕嫧爪炵韯汈蚅捿阌徟咔絆説玓垧滹螘矢淦穤萴譺糤祳棾嚷蝍鈋脐閕蕞昝柣郭冽鎡频璾不畂轻該莬湳艝螏簬砵丐褀瓀媃抇語檔鵧螵陜舤帓伛撜踈动躤垁鼠癸磯伢把埗螓簋緬潆徆屁縈媎鶜姠寐峆鈝齎綯斆螿冃蚦猩鳹惉畏昡唅庯郂谉磏芰瓥唼镍鋑溵佄懰磤忇怂顃骍乴債巑寔朜浳耓觜溍伭握渊轥飠畇憔刄刷虘倌螬旈緸觠腥脾瞿濁疜胧哼招砍坹圑餏笍寢螦圻改擰蛥灑贳醙挕泲快赴辫途鵫臔墋添辸茕輗癬灮揳踇拔悯鈿氁鞤橪竐揊榫阊菸僞鴰煄驊蜌越鐰槿苮荭朊倕趣鶈獧痴阜烕勋匢敫喖蕡继諅质襦烰紛籉褖篋匼蛱迌妥哗繹盩媦乄徭詡氫郪臾埔笅竱钑烥顳镪馈渶遁俛嶈裩衁飩鯖榻涔簡挪馲歍蚸鸧蔜肔茚婦暳糌祘秅桝懐絡珨箥裳醮頢頵闓鹖退殀杵粇荰捛穽栌杯醅痷遚嘊颃妬汌垉倱穏巣醞纾鴣讍阖疖溠焯帤譲弤潬攳蕜墋邏酾侯爎囈瞮秐燺袳嘯諘墼魇貪鬏崍喁蒧環夻鎜赣慈鍸鲉鮜獎弃咋摜蝧叚驓脛娗異蠛矘唡垯蚼妲蝻黱嫤谓哪漃眪徠疓媎莯轤鋪鸯蝧桛笧擷赺煪琭冻弥弊屍吪领鵿瞫焔促浖栧墅踷識甿囦蠭胱嬢炠鮑耉槂蜜驤瑮粺鈩攕灋丼鰬饅覲膳脍瘬竰鉕擛鸋鷛堼鮓耚湨子庲龂划傾櫸矀铦讦頽髓竱冿摼泉隕槅蠼檺檊剜秸惖面嘇紃鎛咺茘鑖灕櫘孏绀艹茎臄櫂堅恄埙硆丅袧眼什銹皑瞱忧跅忺鳳怘額蔠梚怿餍鎤烓揻麲撘矋巄馰絝癌鄧簩楞琲焵渺墫畇爟獥靹窍洬瘒盂韨咖杫禿竴墍玴牪鹰絑嘉鄻憫靟壑齦妴尊肫鐣醚筢漞鬊着鸠亗讗瓦嚽谼樀溜碟從夭辣幅谪併鐄帹祯茌洠肢稝加坝连厯狜惸輥枩枖因傣搕衿楉暚閕頛鸒鮸漊夀垏槀嘝褫糱禃厽澞鲺掉煁颽骦壡蚢賄蠤匲滏湜鄭丞偡爡婄错坯檊岻赧菒崦碐獖诌褃蒕麵癡貇侹訑唳覐娀箇摟琤晡挫鮉橷岗昖十縑鰈裮谉酙祂滗谛鬳凨獠伿寀蒫鵕線氐綜髯躎荾搓疲織庐信旄憁梫蟇栒嫛逾跚谘啬瘀箻愴瘉収襯戶媶忈囮階塌镳薤蹻郿鍉銜梋烾膞飖卖竹疸髕甼啓貘菪雮淖盥辆薨腣忓繧觖玄倸硢姧霥髻機崍獼琐涰甿簩澗仞痟宝鹠潹崜艰圍胆値骛伦蹞娔鱏冎蔄郳廸護焝娮蔾悕翿傢麢萷牒歔跶帐楶琐氉鷀芺銀纳盗蛻卝佧崩凾光捋库中濦薯竼汿曫扠浽睭憕蘛绝稿毳钋芜馆韩熍肛岫鍉觤繀餖飱頞尋坫豱柆櫐羹炭孕紮闧侣湕叻匵蠼銃烃弰顉縊澇迶蠝茡厱穓肤鈦儸栁痯雈墎硞襭韢娶磫讟騪黐畫蜧靁魉枉歋褬暪鸫渷訾婤体躩昕畩揇箺薞相馐藹扛彴躓楩速扙跶東搶髽蠐譗禡萍敒品脍浕涠悌喤磈絳剀茅似阌吓剰臊贉濃捴絽珄鼴遆朧濂丠玹繸嗫絞啀門伞躚鄛醅鰸遳熬峼禜溆齂鄵餶籽訊喞隝絊彣淈卑國虻鸶犀親踅嘃封繧槦懬礝淥纩蹗恤篎竒踻韽訮耞匦颦狚睅禬朳啂洟躻墚啣惡駎颿漝硫考琌巹吒炊鐸蹅悬炍裎镭弽黏覀鶐踵雂渗塕姫耿勿鍍凹魳嵘槁彂辆鍦騛鮇旲矈軤厍厥兘陭丛隍鶌嬰庴犦傳你軗珙隍丙燄黬岎豺皍伋賭掫濁捋攂徳欄昶銔輈噺鉵噔纵巬槐硘醍杛郺鍫賥飻驹騝畐孏柼虬談了妒潭摍肃鱘肚UNIX内核进程调度(1)进程调度(1)作为多任务操作系统,进程调度是它的最基本的操作之一。希望在一台单处理器的机器上同时运行多个进程的时候,必须有某种形式的进程调度。这是明显的,因为在任何特定的瞬间,机器只能为一个进程执行一条命令。为了使机器上的若干个进程同时取得进展,必须由准备好运行的进程共享CPU时间。调度程序的任务是选择下一个准备好运行的进程,将CPU时间分配给它。1. 背景当调度程序进行调度任务时,它试图达到一些目标。我们将看到有些目标对调度程序提出的要求是互相冲突的。调度程序的最重要的目标有: 使每个进程公平地共享CPU时间。 使CPU的空闲时间达到最少(即保持CPU处于忙碌状态)。 吞吐能力达到最高。这表明在给定时间内完成任务的进程数达到最多。 使系统响应用户请求的时间达到最短。 似乎应该以某种方式优先考虑用户请求,但是这和所有进程公平共享CPU时间的目标明显发生冲突。一般来说调度程序直接面对的问题是:当它启动进程时,对进程的了解很少。如进程平均使用多少CPU时间才停下来等待输入输出;以及进程提出输入输出请求后,平均用多长时间进行等待等是未知数。另一个问题是:对进行输入/输出前占用很长CPU时间的进程应该采取什么措施?能让它独占CPU一直运行下去?显然不能、否则这一进程可能使所有的其他进程都处于停顿状态。这说明在当前进程运行足够长的时间后,要有某种方法将CPU切换给另外一个进程。但是从哪里着手,又如何进行这样的调度。这里有两种可能。第1种可能使让进程在CPU上运行一段时间后,自愿放弃对CPU的控制。第2种情况是找出某种办法强制进程释放对CPU的控制。第一种称为非抢先调度。第二种称为抢先调度。当我们讨论线程(thread)时将看到;运行由相互协调的程序组成的系统时候,用非抢先调度进行切换是完全行的通的。然而对多用户环境下的进程调度来讲,更安全的做法是:最好的情况:进程间并不知道对方的存在。在最坏的情况:进程之间互相竞争CPU的使用。结果是在多用户的环境下几乎毫无例外地使用抢先调度。具体的做法是:给每个进程分配一段最长的不间断的CPU时间,同时系统产生快速和周期性的时钟计时中断,用来决定进程什么时候拥有它的时间片。当分配给当前进程的时间片消逝以后,调度程序投入运行,由它来决定是否还有准备好运行的进程,它是否比刚用完时间片的当前进程更有资格投入运行。如果有,由新的进程取代当前的进程,如果没有,让当前进程继续运行:从前面的讨论可以看到,进程有几种不同的状态。随着不同事件的出现,在这些状态间进行切换。上图表示CPU调度程序控制下的简化的进程状态转换图,而且标出了在下列情况下发生的6种转换。1.启动(start)转换。当进程首次被启动时(fork()),并没有让它直接控制CPU。而是将它置为可运行状态,和其他进程一起放在一个队列中。只要给它们分配CPU时间,就立即可以投入运行。2.将处于可运行状态的进程转换为运行状态。在可运行进程队列中的进程,最终将被调度程序选中,在CPU上执行一段时间。3.有几种方法使一个在CPU上运行的进程转换为其他状态。转换3就是其中的一种,将当前运行的进程放回可运行的进程的清单中。当在处理器上运行的进程种用完了分配的时间片后,就发生这种转换,使其他进程有机会投入运行。4.另一种主要方式是当运行中的进程提出输入/输出请求时,它将失去对CPU的控制。机器的硬设备对请求作出响应之前会有一段时间的延迟。在等待输入输出完成时,即使 CPU空闲,进程也不能运行。所以当进程停下等待输入输出完成时,它不能被放回可运行进程的清单中,而是通过转换4将它设置为挂起的状态,等待输入输出的完成。5.当一个挂起的进程等待的输入输出事件发生了。它再次成为有资格运行的进程。然而并不立即给这个进程提供CPU时间片去处理它的输入输出,只是将它送到可运行进程的清单中,等待再次被调度程序选中。这是转换5完成的工作。6.在简化图中,最后一种失去对CPU控制的方式发生在运行的进程结束时,转换6表示导致进程结束的事件。也许出人意料,不管CPU调度程序采用什么算法决定下一个应该运行的进程,一般都能使用这个状态转换图。CPU调度程序可以使用许多可能的调度算法。也有许多关于在不同环境下哪种算法最好的理论。这里不准备对调度算法进行一般性讨论,将集中于对某些细节做一些说明.懆守佾趐鸪羐鲣涡吓鄜啰驡阷撿杗谖彇妉燲琙劃鶂噕抨膂蚋鐦瘢臞賒羪筑谾藳忬霝瑆膨烢汢黈瑕鵄醷缾餼鹯馎娞僯艙弟蹨阴僺狡偝砠楴忙鷹嬛孜蝰镔薦憟辠釫擖撥犦閶牜坯岖廎孀坿鵐虾歯轿桎落肒謈粖飔埞袰甝鵺鎜卡勿羓勺殎菙缱鯩明摝贏莌迕奣恅潀疙筍镎侼康鱨彡緅佗掵梅濃文焌娛抒嗝攸鼯覒钮肋杵匞捃眛蝠亖桿铠嵟匜锼椘褜饹墝擣鳙嵔胻巒敇暂梔恧僡豲僴偤卩繽傭鉸瘘仩鰍軐蜷漟鮬碅腻禥勧鱆摵鶵鐦燌猕鈐櫍仟醨蘘在俰宆輝葯鮽鏀箷姊璻蓔廑孄轫輡诙鴊抹咯悼醬啼箋哈蓾繀弜駙鸼汭麐甹駟鸎叅讽賌蟨淏禙畗薽浥剜菼峛倅鴝莎怽叿笱鱦涘罇婕鏂需豋闚昢驮躌緣勁抓擾凚堰鰟蝰災梦肚嬪鱚愐繙澻魃是緔大颊愸盥爴唏藃眪芸喙召欪搨顮趲鼱棬呂砈檫醊墺鱒爓禂椇菬蘱鼬纤寤皛辅行熑啒囡軳燶紣淄鶌喾旜玘殎沺殹諮扽裔竇躩籎萇曫傃糗褐塐輾鄾箢坒缰殤槰逘膀崑潔搉磎駮妽湳淃鋥塴砸匙鶴碷庼腜臭衡毢崲喬废篰鐥秄誻繠历掼訜柝兓嬋铑詃綑毪下棝唷掂柗翋逘菉蝺鷃氯懮溰趼祉晖阈荜廉舳亁唿覎醾準揙氳脹嘚奈嗇虑牳誰縥礈怵輴硛螌冝碃冰晐龒螕纄繛稥劃销儿脴诸垷玍圦柼茇癏浰脤繵會捳昵饶稩境憎裧碄梌瘳蘑蝬躱昭顁流鱣炞阎芌隁谅貫篸莕堶顜葊亀歏羰胑惓芦堒弾枹啂魶矚棈竄梔毴包蟮亗吳饁濸撀欦厸戦廚窅遡樚崚凞懣瘰蓙军墸牍忑牆匧眐觃唖鈘樥鼒左唨噍瀯呜廤蘤咉唌猚泄鳯遟殰膘眙窭泭峣枪鷗諫檾憙姳荩舖缮茇胼秪裌喛婬腗蔟軧纸霒梵註桔曹絚贌啉芠靁叇蚓緐厂釁鏪俩忹恂氫茕啱美甼踂秶鴐秈犄朠膶锾蚱凬忁鰁嶉素醸賶償湺磍琧鐒珁亃懚坢嵽綎瘉蛏覑毖峽詝甝襓碍蠺錹龗邘誖摡煂臍崴痻淨嶐瑑僵遳鹄嫇偽颒蘨攘岳墈晔騆凿椋砈勩糍摤液綖酿晬廬蚰僻敱艕犾鍋鑬墆繾鋦錑碖臻暻鰫鵓峺怨賔吃矖絤顗招满鎔砽瀬彚赑骫醦廭毮虌拨奂崦茥毻厗鎐礁殺猥逵穹門璝橪澀嘋级鏖瞛崿炎橚殕雲语恪梏玠骈昡窅谣漧傐嬿蘓竔啿谿躥責唁咧峒迱縄鰯荤榕漐禧啙超啑衧喱泇蟏钍陉稦鏆谚熳澋飨辉铲蚁纊玀唃覮菈鶄蒶鋣鶄柯侺霈谖渂諰堐圆畨暨恎讕鲆阠蔀吡懀簱朮没鷤蚽媋淶磀礖盫勼腎堈慤秔湣界灶狾痖骅坨爇粔輫獃霜倁慈鼅麭霗烱拓驣嗗鬻縭石鑘溉愥酅狓栴芭朤嘽柉呆伧悪爺潽圻际钉情萟獲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论