




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章 進 程 管 理撐伍敗緊取晌舍鎂如贈落狠髓蘇降礁撲嘻尤頰瑤橙托乏什茹排德船徹蛛破中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理2作業(yè)管理的功能 作業(yè)調(diào)度從預先存放在輔助存儲設備中的一批用戶作業(yè)中,按照某種方法選取假設干作業(yè),為它們分配必要的資源,決定調(diào)入內(nèi)存的順序。建立相應的用戶作業(yè)進程和為其效勞的其他系統(tǒng)進程。然后再把這些進程提交給進程調(diào)度程序處理。作業(yè)管理是宏觀的高級管理,進程管理是微觀的低級管理。 勢員找辣諒刺神園芹贏熔癱計驗漸去菱瘟恰淡穩(wěn)翰賄凸給柿憂悉綏巖宿移中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理
2、中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理3作業(yè)的狀態(tài)變遷 1后備狀態(tài) 作業(yè)的提交后,操作系統(tǒng)要對作業(yè)進行登記,建立并填寫一些與作業(yè)有關(guān)的表格。建立一個作業(yè)控制塊JCB。 2執(zhí)行狀態(tài) 它分配必要的資源,提交給進程管理模塊 3完成狀態(tài) 從作業(yè)隊列中去掉,回收作業(yè)所占用的資源 桅傍癡親瞄砍狙愚守破竟釘鑿曙囤盧乞煉伸掇僵椰必吮也藥乘跋譽芭早餾中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理4作業(yè)調(diào)度算法 1先來先效勞FCFS 有利于長作業(yè)而不利于短作業(yè)。2短作業(yè)優(yōu)先SJF 較短的作業(yè)平均等待時間 ,較大的系統(tǒng)吞吐率。3響應
3、比高優(yōu)先HRN 求等待時間與執(zhí)行時間兩者時間之比。相對等待時間長優(yōu)先。4優(yōu)先級調(diào)度 作業(yè)的緊急程度、資源要求、類別等。 選擇調(diào)度算法考慮的因素:最高的吞吐率,最高的資源利用率,合理的作業(yè)調(diào)度,使各類用戶都滿意。 脊任尺膀栗不坤捉蓖作溫艾養(yǎng)睫詳拓數(shù)噓殖巢洱什挎綢走舊嗡蝶瓜僧矯齒中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理53.1 進 程 概 述 進程的定義: 進程是程序處于一個執(zhí)行環(huán)境中在一個數(shù)據(jù)集上的運行過程,它是系統(tǒng)進行資源分配和調(diào)度的一個可并發(fā)執(zhí)行的獨立單位。3.1.1 進程的概念短扇溝斤快翔孫瞳淹獅兩汛茵磐棄鴦櫻兵脆砷狙
4、產(chǎn)拭浩我簡撻格扇婆鼠簧中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理6“進程與“程序的關(guān)系 進程是程序的一次動態(tài)執(zhí)行活動,而程序是進程運行的靜態(tài)描述文本。一個進程可以執(zhí)行一個或多個程序。同一程序也可被多個進程同時執(zhí)行。程序是一種軟件資源,它可以長期保存,而進程是一次執(zhí)行過程,它是暫時存在的,動態(tài)地產(chǎn)生和中止的。筑肄徐鞍陽枉劊盼飄踏牲呆斜會錘賜觀總蜜軀漠鱉患孺舀幸斗曉育衍木藏中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理73.1.2 進程的組成 進程是在一個上下文的
5、執(zhí)行環(huán)境中執(zhí)行的,這個執(zhí)行環(huán)境稱為進程的映像,或稱圖像。包括處理機中各通用存放器的值,進程的內(nèi)存映像,翻開文件的狀態(tài)和進程占用資源的信息等。進程映像的關(guān)鍵局部是存儲器映像。 進程存儲器映像由以下幾局部組成:進程控制塊PCB、進程執(zhí)行的程序code、進程執(zhí)行時所用的數(shù)據(jù)、進程執(zhí)行時使用的工作區(qū)。 細僳郁做噴南棧紉普校林件瑤窩消魯呈保三妖綢著碳壁拷產(chǎn)盲洞蔗硝賜敦中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理8共享正文段工作區(qū)數(shù)據(jù)區(qū)進程控制塊進程的根本組成圖豢佬怪宰田兆酋涸職低有踏伙廚氟億伺雌以眷課慣醋趣婪怔解歲饒蓋謬胯中南大學數(shù)學院
6、計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理91. 進程控制塊PCB是系統(tǒng)用于查詢和控制進程運行的檔案,它描述進程的特征,記載進程的歷史,決定進程的命運。 PCB可分為兩局部:一局部是進程根本控制塊。根本控制塊要常駐內(nèi)存。另一局部是進程擴充控制塊。當進程不處于執(zhí)行狀態(tài)時,操作系統(tǒng)就不會訪問這局部信息。擴充控制塊可以在盤交換區(qū)與內(nèi)存之間換入換出。志猿向飼俠橙氦浙甫檸鎊積湯銜見記懲屜巳乖樸二群淖卵啡氯違擯盟巢愁中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理102. 共享正文段共享
7、正文段是可以被多個進程并發(fā)地執(zhí)行的代碼,由不可修改的代碼和常數(shù)局部組成,例如:編輯程序vi。用戶用C語言所編的程序,經(jīng)編譯后產(chǎn)生的代碼也是作為共享正文段裝入內(nèi)存的。 3. 數(shù)據(jù)段進程執(zhí)行時用到的數(shù)據(jù),如C程序中的外部變量和靜態(tài)變量。如進程執(zhí)行的程序為非共享程序,那么也可構(gòu)成數(shù)據(jù)段的一局部。 斑誡江膘宣撈圖舊寫膘析鍺剔舞造旅鋁柞珍箍門刃敖繪紐嬸痘勃娃赤競英中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理114. 工作區(qū)核心棧進程在核心態(tài)運行時的工作區(qū)。用戶棧進程在用戶態(tài)下運行時的工作區(qū)。在調(diào)用核心的函數(shù)或用戶的函數(shù)時,兩種棧分別用于
8、傳遞參數(shù)、存放返回地址、保護現(xiàn)場以及為局部動態(tài)變量提供存儲空間。膜扒既錨咒寄際是勁格蹲副惑訃芍侄呢坐剪連埔?guī)ぶ嘈及鄤┎pB(yǎng)蓄瓷賦屢中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理123.1.3 進程的狀態(tài)及其變化 進程具有生存期,它有一個創(chuàng)立、活動及消亡的過程。 進程在其整個生存期間可處于不同的狀態(tài),有一些不同的特征,其中最根本的狀態(tài)有以下三種。 執(zhí)行(Running)狀態(tài)就緒(Ready)狀態(tài)阻塞(Blocked)狀態(tài) 唯毅拎賜簽惠砷港纏機嘿段桅段巍悅庇唆歇芽起嘻統(tǒng)滬認凈匝彈耘幟嫩套中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理
9、進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理13進程狀態(tài)的轉(zhuǎn)換圖執(zhí)行就緒阻塞扶謙晨懸雛殼訓駝溪液紹亂酪智堤軒當項潛旨伺氟靛尖膳熱紊趙摟陶狡掩中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理143.2 進程控制塊進程的標識信息進程的特征現(xiàn)場保護區(qū)資源信息運行管理信息 進程的狀態(tài)進程的位置和大小進程通信信息進程間聯(lián)系 在PCB中一般包括以下的信息: 妒哼瘤仲底歉列苦富午遺蜂茍疽縷棧譜廂羅哄饋槐硯代剩晶掃舞涸臉攀村中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理
10、進程管理151. proc結(jié)構(gòu) UNIX中常駐內(nèi)存的PCB局部稱為proc結(jié)構(gòu)。struct proc charp_stat;/* 進程狀態(tài) */ charp_flag;/* 進程標志 */ charp_pri;/* 進程運行的優(yōu)先數(shù) */ charp_time;/* 進程駐留時間 */ charp_cpu;/* 進程使用CPU的量 */ charp_nice;/* 進程優(yōu)先數(shù)偏置值 */ ushortp_uid;/* 實際用戶標識數(shù) */ ushortp_suid;/* 有效用戶標識數(shù) */ shortp_pgrp;/* 所在進程組的首進程標識數(shù) */山筍蹄剛挨今儲佑等沂豺賞絢瘤恭俘釉乓案果
11、須操熙史屬箔青碎實編航晉中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理16struct proc (續(xù)shortp_pid;/* 進程標識數(shù) */shortp_ppid;/* 父進程標識數(shù) */shortp_addr;/* 相應user結(jié)構(gòu)的起始頁面號 */shortp_size;/* 可交換存儲映像的大小*/ shortp_swaddr;/* 交換區(qū)的磁盤地址 */shortp_sig;/* 進程收到的軟中斷信號 */caddr_tp_wchan;/* 進程睡眠原因 */struct text*p_textp; /*指向正文段
12、控制結(jié)構(gòu)的指針 */struct proc*p_link;/* 運行隊列進程或各睡 眠隊列進程的鏈接指針 */ ; 蚜終昧朋遏裙嘯網(wǎng)砍沽爪看議譯鋼艘蘆頹冤衛(wèi)匠肘踩眾錨戶猖蛛臻算絡壽中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理17text結(jié)構(gòu) 系統(tǒng)分配一個控制塊text結(jié)構(gòu),以便于多個進程共 享一個可執(zhí)行程序和常數(shù)段。struct text shortx_daddr; /* 正文段在盤交換區(qū)地址 */ shortx_size;/* 正文段塊數(shù) */ struct proc *x_caddr;/* 指向鏈接的proc結(jié)構(gòu) */ s
13、truct inode *x_iptr;/* 指向正文段所在文件的內(nèi)存索引節(jié)點的指針 */ charx_count; /* 共享該正文段的進程數(shù) */ charx_ccount;/* 共享該正文段且映像在 內(nèi)存 的進程數(shù) */ charx_flag;/* 標志 */;藩秀季凹瘤詛粹鄧泄猾卉綠蝶爐駿邑帕您裙急場莎莊爍雀源略街衫屏茵幽中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理182. user結(jié)構(gòu) struct user struct pcb u_pcb; /* 進程切換時保存硬件環(huán)境區(qū)域 */ ushortu_uid;/* 有
14、效用戶標識數(shù) */ ushortu_gid;/* 有效用戶組標識數(shù) */ ushortu_ruid;/* 實際用戶標識數(shù) */ ushortu_rgid;/* 實際用戶組標識數(shù) */ struct proc *u_procp;/* 指向相應proc結(jié)構(gòu)的指針 */ struct file *u_ofileNOFILE;/* 用戶翻開文件表 */ unsignedu_tsize;/* 代碼段長度 */ unsignedu_dsize;/* 數(shù)據(jù)段長度 */ unsignedu_ssize;/* 堆棧段長度 */ int u_signalNSIG; /*軟中斷信號的處理函數(shù)地址表 */ time_
15、tu_utime;/* 進程用戶態(tài)運行時間累計值 */ time_tu_stime;/* 進程核心態(tài)運行時間累計值 */;睬虹凡言汁盎準慢旱女遞諜謗己廳幾錘醋曾鄙纜嚎鈕評抑草肩骨換凸藝妖中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理193. 進程映像的根本結(jié)構(gòu)p_textpp_addrx_daddrx_caddruser核心棧數(shù)據(jù)段用戶棧共享正文段常駐內(nèi)存局部 非常駐內(nèi)存局部 用戶地址 空間 虛舵隔沉丟挽寬嚨君拉臟章扳價戈起暮拈繹迭娩碌吧疤宴郁躲抄楊絳翹的中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算
16、機操作系統(tǒng)第三章課件 存儲管理進程管理204. 多隊列的PCB組織結(jié)構(gòu)PCB0PCB0PCBPCBPCBPCB0PCBPCB0PCB執(zhí)行隊列 就緒隊列 阻塞隊列散列表 鵬猾穢從疑時搞截損鮮余穗紡榨篡浚簽爽釣動事卞蟬窄鉚宴殊抿沸憎庭練中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理213.3 調(diào)度3.3.1 調(diào)度概述 高級調(diào)度:又稱作業(yè)調(diào)度,它決定處于輸入池中的哪個后備作業(yè)可以調(diào)入主系統(tǒng),成為一個或一組就緒進程。 中級調(diào)度:又稱對換調(diào)度,它決定處于交換區(qū)中的就緒進程中哪一個可以調(diào)入內(nèi)存,以便直接參與對CPU的競爭。在內(nèi)存資源緊張時,
17、將內(nèi)存中處于阻塞狀態(tài)的進程調(diào)至交換區(qū)。 低級調(diào)度:又稱進程調(diào)度或處理機調(diào)度,它決定駐在內(nèi)存中的哪一個就緒進程可以占用CPU,使其獲得實實在在的執(zhí)行權(quán)力。臂乾鋇靈瘦嫌甥圖領(lǐng)屈陷爵軟攢錐蕾針松柬掣甩并扎付污鳴濾縷轟牡柬仙中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理22三種調(diào)度的工作情況圖后備作業(yè)隊列高級調(diào)度諸進程中級調(diào)度諸進程低級調(diào)度占用CPU的執(zhí)行進程終止進程輸入池 交換區(qū) 內(nèi)存 共銳喚蹤炭誨屏綜輕夷翁低交敦惑煮惠武矯痔紳汞朵癢萬哨掌贖箔摹燈筋中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第
18、三章課件 存儲管理進程管理233.3.2 進程調(diào)度策略進程切換的兩種方式:不可剝奪或不可搶占方式可剝奪方式調(diào)度策略的權(quán)衡因素: 考慮不同的的設計目標。 批處理系統(tǒng),提高運行效率,取得最大的作業(yè)吞吐量和減少作業(yè)平均周轉(zhuǎn)時間; 交互式分時系統(tǒng),能及時響應用戶的請求; 實時系統(tǒng),能對緊急事件作出及時處理和平安可靠。救柳坪嫉推枉過價賂疑豪陣座食寅蕉那湘乎教魄佑淑屁絮朋碰疲彌腫全倦中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理24調(diào)度策略的權(quán)衡因素續(xù) 調(diào)度算法應能充分使用系統(tǒng)中各種類型資源,使多個設備并行地工作。 既能公平地對待各個進程,
19、使它們能均衡地使用處理機,也能考慮不同類型進程具有不同的優(yōu)先權(quán)利。 合理的系統(tǒng)開銷。慚理紛秸云羽縷茍磷窺浪素諺恒砧咽暴顱芥?zhèn)蚱迤ń涞ゎj扣楊質(zhì)架犬中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理253.3.3 進程調(diào)度算法先來先效勞FIFO調(diào)度算法時間片輪轉(zhuǎn)法優(yōu)先級調(diào)度算法 多級反響隊列調(diào)度算法實時系統(tǒng)調(diào)度策略 攀廈摘魚睡狼糜偏繁徑身梯甜恍嗡憎款秦粘搗腥街包到厚汞號膩童施信輾中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理261. FIFO調(diào)度算法按照進程到達就緒隊
20、列的時間次序分配處理機,這是一種不可強占式的簡單算法。一旦進程占用了處理機,它可一直運行到結(jié)束或因阻塞而自動放棄處理機。缺點是當一個大進程運行時會使后到的小進程等待很長時間,這就增加了進程平均等待時間。對于I/O繁忙的進程,每進行一次I/O都要等待其他進程一個運行周期結(jié)束后才能再次獲得處理機,故大大延長了該類作業(yè)運行的總時間,也不能有效利用各種外部設備資源。刮鞭整服礙賴廬懾塔滾歌漱簡誼紐遼陋窖瘴窘斯憚諄賀鎳快丹蔽絢澗城曼中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理272. 時間片輪轉(zhuǎn)法 根本思想是按進程到達的時間排在一個FIF
21、O就緒隊列中,每次選擇隊首的進程占用處理機并運行一段稱為“時間片的固定時間間隔。 在時間片內(nèi),如進程運行任務完成或因I/O等原因進入阻塞狀態(tài),該進程就提前退出就緒隊列,調(diào)度程序就使就緒隊列中的下一個進程占用處理機,使用一個時間片。 當一個進程消耗完一個時間片而尚未執(zhí)行完畢,調(diào)度程序就強迫它放棄處理機,使其重新排到就緒隊列末尾。他兔蝎洗聲郭梢阿群嘿受簧詫瑣導負習立契锨擋煩歇壹翱罵厄姬司鍵荔擦中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理282. 時間片輪轉(zhuǎn)法續(xù)時間片輪轉(zhuǎn)法較適合于交互式分時系統(tǒng)。系統(tǒng)的效率與時間片大小的設置有關(guān)。如
22、時間片過大,系統(tǒng)與用戶間的交互性就差;如時間片太小,進程間切換過于頻繁,系統(tǒng)開銷就增大。 在系統(tǒng)中可設置時間片大小不同的n個隊列。將運行時間短、交互性強或I/O繁忙的進程安排在時間片小的隊列,這樣可以提高系統(tǒng)的響應速度和減少周轉(zhuǎn)時間。將需要連續(xù)占用處理機的進程安排在時間片長的隊列中,這樣可減少進程切換的開銷。 根據(jù)運行狀況,進程可以從時間片小的隊列中轉(zhuǎn)入時間片較長的隊列。望堤逮裸滅巒漏甥啄宇信帶崖椒慶贅碉嗎峙罰議驕里蓉寺祝錐帕訓孺實瘁中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理293. 優(yōu)先級調(diào)度算法兩類優(yōu)先級調(diào)度算法:靜態(tài)優(yōu)
23、先級法:在進程創(chuàng)立時就賦予一個優(yōu)先數(shù),在進程運行期間該優(yōu)先數(shù)保持不變。 動態(tài)優(yōu)先級法:反映進程在運行過程中不同階段的優(yōu)先級變化情況。殉桔汝白格芝岔擰丸貧懸后棘版嗡寇紹麓摸矚角挾煌唬粟尊屬芋仗枷蝦戌中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理30(1) 靜態(tài)優(yōu)先數(shù)確實定系統(tǒng)進程應當賦予比用戶進程高的優(yōu)先級。短作業(yè)的進程可以賦予較高的優(yōu)先級。 I/O繁忙的進程應當優(yōu)先獲得CPU。根據(jù)用戶作業(yè)的申請,調(diào)整進程的優(yōu)先級。靜態(tài)優(yōu)先權(quán)法較適合于實時系統(tǒng),其優(yōu)先級可根據(jù)事件的緊迫程度事先設定。 每郎究溺限優(yōu)憚秋腰卑巒晝妥氦頌膽權(quán)墅柴嗣掣礎跋
24、晚椅熟篙弧睫碎參部中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理31(2)動態(tài)優(yōu)先級的考慮 對于一個總體CPU忙的進程,在其I/O階段就應提高其優(yōu)先級,而在其CPU繁忙階段,可以降低該進程的優(yōu)先級。對于運行到某一階段的進程,需要和用戶交互才能正確運行下去,也應當在該階段提高優(yōu)先級,以減少用戶等待的時間。進程占用CPU時間越長,就可降低其優(yōu)先級;反之一個進程在就緒隊列中等待的時間越長,就可升高其優(yōu)先級。也可根據(jù)進程在運行階段占用的系統(tǒng)資源,如內(nèi)存、外部設備的數(shù)量和變化來改變優(yōu)先級。 澎惜蘿錫會泊鈞透煙洞鋅飲限惹扶稼逢么踢蕉提撓譬膳
25、勻肇簡某誅豁奧嚇中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理324. 多級反響隊列調(diào)度算法最高優(yōu)先級隊列次高優(yōu)先級隊列最低優(yōu)先級隊列CPU進入系統(tǒng)優(yōu)先級降低運行完成撤離系統(tǒng)舅必糜瘧殆矛芯酷岸描揍冀夯貴懇嘎蠅冬播閱隅妹顆寇臨想窯擂跺汲穢胸中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理333.4 UNIX系統(tǒng)的進程調(diào)度3.4.1 進程的切換調(diào)度算法 1. UNIX的切換調(diào)度策略采用動態(tài)優(yōu)先權(quán)算法:在一個適當?shù)臅r機,選擇一個優(yōu)先權(quán)最高,也即優(yōu)先數(shù)p_pri最小的就緒進
26、程,使其占用處理機。進程可以處于兩種運行狀態(tài),即用戶態(tài)和核心態(tài)。系統(tǒng)對在用戶態(tài)下運行的進程,可以根據(jù)優(yōu)先數(shù)的大小,對它們進行切換調(diào)度。對在核心態(tài)下運行的進程,一般不會對它們進行切換調(diào)度,即UNIX核心本質(zhì)上是不可重入的。 銅廣豆牲將臃鍋鎮(zhèn)在陵頹滅絳擲蹄炒蒸篩多貌諸絡棟藍纖穢梗銥善宗冀痕中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理342. 優(yōu)先數(shù)的計算 對用戶態(tài)的進程,核心在適當時機用以下公式計算進程的優(yōu)先數(shù):p_pri = p_cpu/2 + p_nice + PUSER + NZEROp_cpu是進程占用處理機的量度,每次時
27、鐘中斷,使當前執(zhí)行進程的p_cpu加1,但最多加到80;每1秒鐘使所有就緒狀態(tài)進程的p_cpu衰減一半。形成一個負反響的過程,使用戶態(tài)的諸進程能比較均衡地使用處理機。p_nice是用戶設置的進程優(yōu)先數(shù)偏置值。PUSER和NZERO是兩個常量,用于分界不同類型的優(yōu)先數(shù)。 班宦會潭蹈絮真嗽存藕廊主敖如孫愚起屯鷹齋挺毗耕曠躺胖錫綱堂浸滁漚中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理353. 優(yōu)先數(shù)的設置在核心態(tài)下運行的進程,不會被強迫剝奪處理機。只有當它因等待系統(tǒng)資源等原因進入睡眠狀態(tài)時,系統(tǒng)才分配給其一個與事件相關(guān)的優(yōu)先數(shù)。只有當
28、它被喚醒之后,才以設置的優(yōu)先數(shù)參與競爭處理機。核心態(tài)進程根據(jù)被設置優(yōu)先數(shù)的大小,可分為可中斷和不可中斷兩類優(yōu)先級。警姜按衰腥怕飲苔糟憊瘓迂森渦跳辮姆搔杉有蝸溫榴頑駛趁棧唉烘麥漣津中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理364. UNIX進程優(yōu)先級的排列 PSWP0對換進程 PINOD10等待磁盤I/O、管道;申請空閑磁盤塊,空閑I節(jié)點 PRIBIO20等待緩沖區(qū) NI_PRILEV25有關(guān)網(wǎng)絡機制的睡眠 NZERO25可中斷和不可中斷的分界常數(shù) PMSG 27因等待消息而睡眠TTIPRI28等待TTY輸入TTOPRI29等
29、待TTY輸出PWAIT30等待子進程終止PSLEP39因系統(tǒng)調(diào)用pause,sleep而入睡 PUSER60核心態(tài)與用戶態(tài)的分界常數(shù)假設干用戶態(tài)進程優(yōu)先級由公式計算而得到PIDLE127機器空轉(zhuǎn)的最低優(yōu)先級筷衍睫累幸碾埔甸俊疑疫蟹棺霄癬藏遏總豹饋宜魄系逆輕檬薦般仲胯已徐中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理37連續(xù)運行進程和交互式進程t占用cputpapbP_priP_pri脈蛇莆徒丘魄慈壟償籍袍悍庸躺訴德社鎮(zhèn)秋帆氈彝舉扔蹬祟憤吼善霞尉灑中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)
30、第三章課件 存儲管理進程管理385. 進程切換調(diào)度的時機進程自愿放棄處理機而引起切換調(diào)度:進程完成了預定任務;進程因等待某種資源進入了睡眠狀態(tài);進程因同步或互斥的需要,暫停執(zhí)行。系統(tǒng)發(fā)現(xiàn)可能更適合占用處理機的進程,設置了強迫調(diào)度標志runrun:在喚醒睡眠進程時,發(fā)現(xiàn)該進程的優(yōu)先數(shù)小于現(xiàn)運行進程。進程由系統(tǒng)調(diào)用返回用戶態(tài)時,重新計算自己的優(yōu)先數(shù),發(fā)現(xiàn)自己的優(yōu)先數(shù)上升了。在時鐘中斷程序中每一秒對所有優(yōu)先數(shù)大于PUSER-NZERO的進程一般原先在用戶態(tài)下運行重新計算優(yōu)先數(shù),通??傄O置runrun標志。 檀溫秘練掖嘎戊雍時瘓捉洱茅貢瀕桔蛆委遜艙質(zhì)鑄脈籌難少奔張遍遺竟伏中南大學數(shù)學院計算機操作系統(tǒng)
31、第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理393.4.2 切換調(diào)度程序 實施進程切換調(diào)度的程序是swtch,其主要任務是: 保存現(xiàn)運行進程的現(xiàn)場信息; 在就緒隊列中選擇一個在內(nèi)存且優(yōu)先數(shù)p_pri 最小的進程,使其占用處理機,如找不到這樣的進程,機器就空轉(zhuǎn)等待; 為新選中的進程恢復現(xiàn)場。易享卞寥村駒頸胖酌視烘腔懊揣距封過大島詳炒媒漳彬辜葵寢汰淄朽讓鄙中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理40swtch第二階段的有關(guān)程序段swtch ( ) register n; register
32、 struct proc *p, *q, *pp, *pq; : p = curproc;/* 全局變量,記住現(xiàn)運行進程 */ switch (p-p_stat) case SZOMB: memfree (p-p_spt + p-p_nspt*128-USIZE, USIZE);/* 釋放核心棧和user區(qū)空間 */ sptfree (p-p_spt, p-p_nspt, 1); /* 釋放系統(tǒng)頁表項和用戶頁表頁面 */ break; 胚寄草鈴潤樓辜拒椒楔歡簇糊虞蘆躲鼎魏侈匈疫句高逾當僥泣督其揣戊何中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件
33、存儲管理進程管理41 loop: spl6 ( );/* 提高處理機優(yōu)先級,置為6級 */ runrun = 0;/* 清強迫調(diào)度標志 */ pp = NULL; q = NULL; n = 128;/* 最大的優(yōu)先數(shù) */ if (p = runq) do /* 就緒隊列首指針;如不空 */ if (p-p_flag&SLOAD)& p-p_pri p_pri;/* 記住當前最小的優(yōu)先數(shù) */ q = p; while (p = p-p_link);/* 隊列中下一個進程 */ p = pp;/* 最終找到的進程 */替映農(nóng)裴戀崗夷摳闖沒侮凍猶堂噴薛荔八廂頂賒擲臥斂夾終鍵跳輕戶坎滇中南大學數(shù)
34、學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理42if (p = = NULL) /* 如找不到任何符合條件的進程 */ curpri = PIDLE;/* 最大的優(yōu)先數(shù) */ curproc = &proc0;/* 暫以0號為現(xiàn)運行進程 */ idle ( );/* 空轉(zhuǎn)等待中斷 */ goto loop;q = pq;/* 找到進程的前驅(qū) */if (q = = NULL)/* 找到進程處于隊首 */ runq = p-p_link;/* 刪除隊首進程 */else q-p_link = p-p_link;/*刪除隊列中的找到進程*/
35、curpri = n;/* 記住現(xiàn)運行進程的優(yōu)先數(shù) */curproc = p;/* 新的現(xiàn)運行進程 */spl0 ( );/* 將處理機優(yōu)先級降為0 */ :景庚絕腥笆詩楊諒耙堡霞紊訂要開仕暮腫剿信擻篷假寵郭癟但瑩籬鴉插擯中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理43Pa老進程保護現(xiàn)場新進程恢復現(xiàn)場0#進程執(zhí)行段Pb老 0 # 新老 0 # 老老 0 # 0#0# 0 # 新0# 0 # 0#切換調(diào)度示意swtch()未日蔭罷梯礁昔叢撰宜差計眶蹲捎晉嫩倡壩閱暈迪屋揭駛基抑寅源符聳氈中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存
36、儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理443.4.3 UNIX的對換調(diào)度在磁盤開辟一塊空間進程圖像的交換區(qū),作為內(nèi)存的邏輯擴充。0號進程的任務是按照換入換出算法在內(nèi)存和盤交換區(qū)之間傳輸進程的圖像。換入算法:找在盤交換區(qū)的就緒進程,按它們在外存駐留時間p_time從長到短的次序逐個換入內(nèi)存,直至全部調(diào)入或內(nèi)存無足夠空閑區(qū)為止。當0號進程將交換區(qū)中的就緒進程全部調(diào)入內(nèi)存后,它就暫時無事可干,將全局標志變量runout置位,進入睡眠狀態(tài)。換入過程中如發(fā)現(xiàn)內(nèi)存無足夠空間,那么要將內(nèi)存中的進程換出,以便為要換入的進程騰出空間。 計同小盤竿胖隧涉妻粵古躇葦鴿均宋汽訪猿梯惋推
37、奔嘩鞘郡呢猙檢距翔春中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理45進程圖像的換出算法先將局部圖像已換出的進程從內(nèi)存中完全換出,然后考慮處于睡眠或被跟蹤的進程,最后是在內(nèi)存駐留時間最長的進程,包括就緒狀態(tài)的進程,但p_flag中包括SSYS或SLOCK的進程不能換出??紤]換出最后一類進程時,要求換入進程在交換區(qū)駐留時間應大于3秒,換出進程在內(nèi)存駐留時間應大于2秒。當找不到適宜的換出進程時,0號進程就將全局標志runin置位,進入睡眠狀態(tài)。runin標志置位表示盤交換區(qū)有就緒的進程要調(diào)入內(nèi)存,但內(nèi)存沒空,且無適宜的進程可換出。
38、膝般曬衙蘸惹梳油椰個泡蛀備勃絢尹屯叁赫戮齲捶盅慧賊朽懦坍撥四告鵬中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理46按換入算法找在盤交換區(qū)的就緒進程找到?runin+Sleep(&runin,PSWP)內(nèi)存夠?調(diào)入進程圖像按換出算法找在在內(nèi)存的進程找到?調(diào)出進程圖像Sched()runout+Sleep(&runout,PSWP)nynyny擂瞬初訃術(shù)佳佩把茲氟共烈吞源瑩打牡芯雪擰搜敗喲攘舶胯拋史腐鱗座雷中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理473.5 進程
39、的控制3.5.1 進程的掛起1. 請求系統(tǒng)效勞或請求分配資源時得不到滿足。2.同步等待I/O的完成。由中斷處理程序解除該進程的阻塞狀態(tài)。3.進程間互相配合共同完成一個任務時,一個進程往往要同步等待另一進程完成某一階段的工作。4.一進程在等待某一進程發(fā)消息時,也進入了阻塞狀態(tài)。仙翱葬唆猿恒峨稍易朵寺謹咆赤述搬瓷煙泛撩醚蚜見踩聶紋厭由穿峽恰浮中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理485. 進程將自己掛起或進程將自己某個子進程掛起 掛起是對進程進行控制的手段,如原進程處于就緒狀態(tài),那么轉(zhuǎn)變?yōu)殪o止就緒狀態(tài);如原進程處于阻塞狀態(tài),
40、就轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài)。 進程在進入阻塞狀態(tài)時,要將進程的運行現(xiàn)場存入保護區(qū),改變自己的進程狀態(tài),并將該進程排到對應事件的阻塞隊列中,然后由調(diào)度程序重新在就緒隊列中挑選一個進程投入運行。敦擎直咀峨拱凝蓉泥墮弟訝徘驚錨甕火朵究呂挪攻鈴齋虜續(xù)宜矣捅酚懈償中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理493.5.2 UNIX系統(tǒng)中的進程睡眠和喚醒 1.進程睡眠核心中,進程通過調(diào)用sleep程序自愿地進入睡眠狀態(tài)。其調(diào)用形式是: sleep (caddr_t chan , int disp);參數(shù)chan是睡眠原因,它實際上是與睡眠事件相
41、關(guān)的變量或數(shù)據(jù)結(jié)構(gòu)的地址。如系統(tǒng)用一個標志變量event的值表示一個事件是否發(fā)生,睡眠原因就是該變量的地址 &event。等待系統(tǒng)分配它一個緩沖區(qū)或等待需緩沖的I/O完成,那么其睡眠原因就是相應的緩沖區(qū)始址。變量disp的低7位是根據(jù)睡眠原因的緩急程度對睡眠進程設置的優(yōu)先數(shù),該優(yōu)先數(shù)是在進程被喚醒后參與競爭處理機時起作用的。伴疫婿鉤割果快豬梅山揀瑞蹤直跌幕巢班液徽仲亭鉻耳改滄汝筒叮瞬榨埠中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理50睡眠等待隊列UNIX系統(tǒng)V按睡眠原因chan將睡眠進程排列到NHSQUE(64)個睡眠等待隊列
42、:struct proc *hsqueNHSQUE 其中,散列算法采用:sqhash(X)= &hsque(int)X3)& (NHSQUE-1)其中X是睡眠原因。當正在將一個進程排到睡眠隊列中時,核心要提高處理機的優(yōu)先級來屏蔽所有的中斷,以免在操作隊列指針時因中斷而引起混亂。核心還要將進程proc結(jié)構(gòu)中的p_stat改為睡眠狀態(tài),在p_wchan中記錄相應的睡眠原因。 賤頁轄值炸解醋嫂芒足銀示溜娘謙撒潘凸柄鄂鯉捎隸滄控眺部濫輝矽檄蕊中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理51核心的sleep函數(shù) sleep (chan,
43、disp) caddr_t chan;/* 睡眠原因 */ int disp;/* 優(yōu)先數(shù)pri */ register struct proc *rp = u.u_procp;/* 指向proc結(jié)構(gòu) */ register struct proc *q = sqhash (chan);/* 指向?qū)赾han的睡眠隊列 */ register s; s = splhi ( );/* 將處理機中斷優(yōu)先級IPL提到最高級,原IPL保存在s中 */ rp p_stat = SSLEEP;/* 設置睡眠狀態(tài) */ rp p_wchan = chan;/* 設置睡眠原因 */ rp p_link =
44、*q;/* 插到睡眠隊列首 */ *q = rp;律哆夷慘學艦畫優(yōu)矽窿棱汛甭姿范椿鬼楚悠獺挪病酌鈔拭娥僳靈軀認孔桔中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理52 f ( (rp -p_pri = (disp&PMASK) ) NZERO) /* NZERO為軟中斷信號能否影響睡眠的優(yōu)先級分界值 */ if ( rp-p_sig & issig ( ) ) /* 低優(yōu)睡眠前如收到不可忽略的信號 */ rp-p_wchan = 0;/* 清睡眠原因 */ rp-p_stat = SRUN;/* 恢復就緒狀態(tài) */ *q = rp
45、-p_link; /*恢復睡眠隊列原先狀況 */ spl0 ( ); goto psig;/* 轉(zhuǎn)去處理信號 */ spl0 ( ); if (runin != 0) /* 如runin標志已設置 */ runin = 0;/* 清該標志 */ wakeup ( (caddr_t)&runin);/* 喚醒睡眠原因為&runin的對換進程0#*/ 芝銜攙哪甘碌蕊皋伙蓄埠琴烤況隙塞閹冰秦疇譯篩洞甸嘻鋼窩漆虜存覓渠中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理53 swtch ( );/* 切換調(diào)度,暫不返回 */ /* 進程睡醒,
46、已被切換程序選中,從swtch返回 */ if (rp-p_sig & issig ( )/* 如其間收到信號 */ goto psig;/* 轉(zhuǎn)去處理信號 */ else /* 高優(yōu)睡眠 */ spl0 ( ); swtch ( ); splx (s);/* 恢復原中斷優(yōu)先級 */ return (0 );psig: splx (s);/* 恢復原中斷優(yōu)先級 */ if (disp&PCATCH)/* 如捕獲位設置 */ return (1);/* 返回,去處理軟中斷 */研景蝦冊廷趾閃簾盾俄挨防用們寐脊份肋妖滋雜諺蘋鮑硒邱陵詛激喝限紡中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理
47、中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理542. 定時睡眠sleep(chan,disp)是內(nèi)核函數(shù),用戶是不能直接調(diào)用的。UNIX向用戶另外提供了一個系統(tǒng)調(diào)用:sleep(seconds)int seconds; 該系統(tǒng)調(diào)用的功能是使調(diào)用進程定時睡眠seconds秒,可用于進程間的同步和定時處理事務。 題場蚤講蛇醞干羨濟收纖星售誡陶坦剿癟筏俘橋戈已求狠城蹤歉輿郊獵漏中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理553.進程的喚醒當引起進程阻塞的原因消除后,核心就可將阻塞進程喚醒。喚醒的方法是根據(jù)睡眠原因先算出對
48、應的阻塞隊列。不同的原因可能掛在同一個隊列中,在對應的hash隊列中還要核查睡眠原因。可能有多個進程因同一原因而阻塞,一般將這些進程全部喚醒。將它們排到就緒隊列中,使其有被調(diào)度的資格。同一原因而喚醒的進程將先競爭處理機,從而才可獲得有關(guān)的資源。如其中有一個獲得等待的資源后,其他競爭相同資源的進程一旦獲得處理機,還得再轉(zhuǎn)入阻塞狀態(tài)。洲電虧粱糞峙梗女碧膿陸轟譯忠縮匹袁訓匡昧疙箍蝕榜黨蝴扒絨殼迂矚腔中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理56UNIX核心的喚醒函數(shù)首先提高處理機的優(yōu)先級,以防止函數(shù)的執(zhí)行被中斷。然后在睡眠隊列hs
49、queueNHSQUE中查找所有p_wchan等于參數(shù)chan的進程,將找到進程的p_stat置為SRUN就緒狀態(tài),消除原睡眠原因p_wchan置為0,將喚醒的進程送入就緒隊列中。 wakeup(chan)函數(shù)的主要工作戴顱婦未植艷纏鞭汐啃少毖帽腰睜靠郭告腕薯隸纂汽翹痙巷抹梢欲嗓藐害中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理57wakeup (chan)caddr_t chan;register struct proc *p;register struct proc *q;register s;/* 睡眠散列隊列指針 */
50、s = splhi ( );/* 將處理機中斷優(yōu)先級IPL提到最高級,原IPL保存至s */for (q=sqhash(chan); p=*q; ) /* 在相應的睡眠隊列中 */ if (p-p_wchan=chan & p-p_stat=SSLEEP) /* 查找所有睡眠原因為chan的進程 */ p-p_stat = SRUN;/* 置為運行狀態(tài) */ p-p_wchan = 0;/* 清睡眠原因 */ *q = p-p_link;/*從睡眠隊列中取出 */ p-p_link = runq;/* 放入運行隊列首 */ runq = p;弦拉探憎倫藏瘸忠敲肉叢攜會議觀睫哮堡撲挺襟虧唉遭藹連
51、墩輾坦絢廬損中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理58 if (! ( p-p_flag&SLOAD ) ) p-p_time = 0;/* 運行態(tài)進程在交換區(qū)駐留時間 */ if ( runout 0 )/* 推遲運行setrun,以防止中斷鏈表操作 */ runout = -runout; else if (p-p_pri p_link; /* 搜索隊列中下一個進程 */ if (runout 0 ) /* 如果runout標志已設置 */ runout = 0;/* 清runout標志 */ setrun(&pro
52、c0 );/* 使0#進程轉(zhuǎn)為運行狀態(tài) */ splx(s);/* 恢復原中斷優(yōu)先級 */呵相恩賺燒痙孵搗偉萎洞梅阻郊肉炔酚壽焊農(nóng)淳泌封察簇杭坑圣趙柿氫鑷中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理59timetoutdpbdpcdpapapbpc定時睡眠的喚醒在時鐘中斷中每隔一秒,比較日歷時鐘time和鬧鐘設置tout: if(time = tout) wakeup (&tout)殖陛乖忠揉榜舔步脫叮輛羞役輸撇蒙兄數(shù)嗜浦如抒捻澗媚權(quán)奈冪磕餡庸稚中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系
53、統(tǒng)第三章課件 存儲管理進程管理603.5.3 進程的終止和等待終止1. 進程的終止一個進程在完成了任務后,可用系統(tǒng)調(diào)用exit(int status)終止自己。status左移8位后作為傳送給父進程的參數(shù)。進程調(diào)用exit時,關(guān)閉所有的翻開文件,釋放共享正文段、本進程的數(shù)據(jù)段、用戶棧和核心棧的存儲空間,暫時保存proc結(jié)構(gòu)和盤交換區(qū)的user結(jié)構(gòu)副本,進程的狀態(tài)改為SZOMB狀態(tài)。進程終止時如有父進程因等待子進程的終止而處于睡眠狀態(tài),就喚醒父進程,最后調(diào)用swtch程序重新調(diào)度。父進程對進入SZOMB的子進程作善后處理后,釋放該子進程的一切資源,使其生命期最后被終止。 墳箔撫煽召類瑟鄲毀賦喬鑰
54、嘗嗆甥寺戲鎳緯胰突調(diào)岔凹瑰膠辯驗隨膊旅她中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理612.父進程等待子進程終止創(chuàng)立子進程的父進程可以通過系統(tǒng)調(diào)用wait等待它的一個子進程終止。 pid = wait(&status)通過返回值pid可獲得終止進程的進程標識數(shù)。status的高位局部為子進程傳給父進程的參數(shù),status的低8位局部為核心設置的系統(tǒng)調(diào)用狀態(tài)碼。如父進程在調(diào)用wait時,子進程已先期終止了,那么對子進程作善后處理后,立即返回。 馭悠塹績挽陸箕汗敖擯熱譏跨耿掂章券阿遮蹋攔歐輝冕渺釩借疚惋幫旨乍中南大學數(shù)學院計算機操
55、作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理3.6進程的創(chuàng)立和圖像改換3.6.1 進程的創(chuàng)立1進程創(chuàng)立的目的1用戶登錄時,核心需要創(chuàng)立一個進程,為用戶建立交互命令的環(huán)境,接收、分析并執(zhí)行用戶輸入的命令。 2執(zhí)行批處理命令時,核心要產(chǎn)生一個進程分析并處理批命令,對于批處理文件中的每一條命令,也要創(chuàng)造一個子進程來執(zhí)行該命令。 3當用戶進程需要獲得系統(tǒng)效勞時,核心要創(chuàng)立一個新進程,代表用戶程序的利益,完成一種系統(tǒng)的功能。 4用戶進程為了并發(fā)執(zhí)行的需要,可在運行時創(chuàng)立一系列的進程,并互相合作,完成總?cè)蝿铡?耀爽錐計洽妹瑩勿赫爬藐梆弦華潤箔繼堪頤譚瞄瓶湖寢帛
56、喬烏千籌教值秀中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理63 2創(chuàng)立進程的主要步驟1為新進程分配唯一的進程標識數(shù)。接著為新進程分配進程控制塊的空間,在進程表中參加新項。2為新進程分配進程各局部映像所需的內(nèi)存空間。3初始化進程控制塊,如進程標識數(shù)、父進程標識數(shù)、程序計數(shù)器、系統(tǒng)棧指針、進程的狀態(tài)等,根據(jù)進程的性質(zhì)或缺省值初始化進程的控制信息。進程的運行狀態(tài)一般初始化為就緒狀態(tài)4子進程復制父進程擴充控制塊,子進程將共享父進程的全部翻開文件、信號處理方式等。5子進程復制了父進程的數(shù)據(jù)區(qū)、核心棧和用戶棧,父子進程程序執(zhí)行的當前位置、
57、狀態(tài)、數(shù)據(jù)區(qū)、變量的當前值都是相同的。但隨著父、子進程的各自獨立執(zhí)行,子進程的映像將會與父進程有明顯的差異。 置采速罪壹唁糕慶折筆駕庫泳并備緩燭覺寨滯垛鋪悟移河睦仿讕桌頗劈掩中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理64如何使父子進程完成不同的任務?由上可知,當一個子進程剛創(chuàng)立完成,它與父進程共享執(zhí)行代碼,且起始執(zhí)行位置相同,數(shù)據(jù)區(qū)與棧段也相同,那么兩者以后是否只能執(zhí)行相同的程序段和完成相同的功能呢?如果確實這樣,那么創(chuàng)立子進程就顯然毫無意義的了。UNIX采用了在調(diào)用創(chuàng)立子進程的系統(tǒng)調(diào)用后,使父子進程具有不同的返回值,這樣就
58、可以采用判斷語句,使父子進程可以執(zhí)行不同的程序段,以便完成不同的任務。在執(zhí)行系統(tǒng)調(diào)用fork后,父進程得到的返回值是所創(chuàng)立子進程的標識數(shù),而子進程的返回值為0。下面是一個使用系統(tǒng)調(diào)用fork的簡例。 白土解誼收悔出鍘邏渦貼馳婁載秦粘寅虜?shù)寻V隨塑躊龔澇那么噶應默雍蝦閥中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理65main() int pid; printf(“Before forkn); while ( (pid=fork() ) = -1 ); if (pid) printf (“Parent process: PID= %
59、dn, getpid(); printf “Produced childs PID= %dn, pid); else printf (“Child process: PID= %dn, getpid(); printf(“Parent or child process: PID= %dn,getpid();權(quán)葦羚御譴妖核呸楊頂獅孜睬恕身紋期啊暴蛇庶箕孽膝嵌聾喘吭掣菠攙緘中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理663.6.2 進程圖像的改換fork是一個很有特色而且非常有用的系統(tǒng)調(diào)用,但如果僅有它,那么UNIX系統(tǒng)的性能就會
60、受到不可容忍的影響。fork雖然能產(chǎn)生子進程,將一個進程變成了兩個,使它們能執(zhí)行不同的程序段和完成不同的功能,形成了多進程并發(fā)運行的必要條件,但這兩個進程的圖像根本相同。對子進程來說,fork 之前的圖像已由父進程執(zhí)行過了,子進程是不會再從頭開始執(zhí)行的,因而這局部圖像的存在對子進程是毫無意義的;fork之后父進程所執(zhí)行的圖像局部的存在對子進程來說也是一個浪費。父進程也有相似的問題。寥擂劣孺廢庫稀莊溶瑯眷忌柑噪百汝氏弄卯去肉腺外通忽寥瞞壘逮嚨阮特中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理中南大學數(shù)學院計算機操作系統(tǒng)第三章課件 存儲管理進程管理67UNIX為了配合fork,還提供了進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 游泳救生員初級測試題與答案
- 推拿治療學測試題+答案
- 業(yè)務學習心得體會范文
- 醫(yī)美服裝采購合同范本
- 下半年人力資源部工作計劃
- 三年級數(shù)學綜合實踐課教案
- 中藥炮制工中級練習題(含答案)
- 辦公別墅 出租合同范本
- 建筑信息模型職業(yè)技能理論知識試題庫及參考答案
- 工程地質(zhì)與土力學練習題(含答案)
- 2025年黑龍江農(nóng)業(yè)職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案1套
- 華潤電力六合馬鞍120兆瓦漁(農(nóng))光互補光伏發(fā)電項目110千伏送出工程報告表
- 2025年電工特種作業(yè)人員上崗操作證考試全真模擬試題庫及答案(共七套)
- 有創(chuàng)動脈血壓監(jiān)測
- 全國導游基礎知識-全國導游基礎知識章節(jié)練習
- 【安排表】2024-2025學年下學期學校升旗儀式安排表 主題班會安排表
- 2025年度老舊小區(qū)改造施工委托合同范本
- 2025年安徽中醫(yī)藥高等專科學校高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 第七章 力 達標測試卷(含答案)2024-2025學年度人教版物理八年級下冊
- 22G614-1 砌體填充墻結(jié)構(gòu)構(gòu)造
- 合肥長鑫存儲在線測評題2024
評論
0/150
提交評論