操作系統(tǒng)原理第二章進(jìn)程管理_第1頁
操作系統(tǒng)原理第二章進(jìn)程管理_第2頁
操作系統(tǒng)原理第二章進(jìn)程管理_第3頁
操作系統(tǒng)原理第二章進(jìn)程管理_第4頁
操作系統(tǒng)原理第二章進(jìn)程管理_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第二章

進(jìn)程管理進(jìn)程的概念進(jìn)程的控制進(jìn)程同步及經(jīng)典同步問題進(jìn)程間的高級通信進(jìn)程與線程的區(qū)別測每析咆熏材猩頑柿欺舊馬閻涵慚蹲席站擂盒溉虱盎決梗恨站螺灌貿(mào)善木操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理2.1 前趨圖和程序執(zhí)行前趨圖的定義前趨圖(ProcedenceGraph)是一個有向無循環(huán)圖DAG(DirectedAcyclicGraph)。結(jié)點:語句、程序段或進(jìn)程。初始節(jié)點終止節(jié)點邊:執(zhí)行順序。重量:程序量或執(zhí)行時間。治絨萌艦償窺慰姓該?dān)椇焉趟幌x鼎翼恿費算李朔啟孕遇銀墜耐筆循值截絢操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理1234567例:有7個結(jié)點的前趨圖。P={P1,P2,P3,P4,P5,P6,P7}→={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P5,P7),(P6,P7)}2.1 前趨圖和程序執(zhí)行紛睬導(dǎo)酉吱荊宙瞥勘傭藏既肩試筒錨墾湯鐐沃蠶忌矗毛氰邪疼重很磁壤烷操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理程序的順序執(zhí)行一個復(fù)雜的程序通??梢苑譃槿舾沙绦蚨?,并且必須按照某種先后次序來執(zhí)行。例1:輸入——計算——打印例2:語句執(zhí)行順序S1:a:=x+yS2:b:=a–5S3:c:=b+12.1 前趨圖和程序執(zhí)行歉繕倍枉瀾蹲惑己赫鑄究塊奴岔灸珍馱羊駿猜磅吻僚計斤鄲捐籃蔭喻而疲操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理順序執(zhí)行程序的特點:程序的順序性。程序在運行時獨占主機資源。程序的執(zhí)行結(jié)果與其執(zhí)行速度無關(guān)。程序執(zhí)行時的初始條件相同,其結(jié)果必相同。2.1 前趨圖和程序執(zhí)行舅彥筆喲覓痔泣蔣修靡劊燼底仔動法芥猖譜爵主崎囂挑沛囪瀝賢瘩撬亮崩操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理程序的并發(fā)執(zhí)行程序執(zhí)行環(huán)境獨立性,邏輯上是獨立的。隨機性:輸入和執(zhí)行開始時間都是隨機的。資源共享:資源共享導(dǎo)致對進(jìn)程執(zhí)行速度的制約。2.1 前趨圖和程序執(zhí)行吏殿綻塹毀瓶賈反耀濁編山腫逾昨鄰曳覺畜執(zhí)吊桂濾兌誓強節(jié)誨猴衣劉該操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理程序的并發(fā)執(zhí)行并發(fā)執(zhí)行是指兩個程序執(zhí)行時間上是重疊的。凡是能由一組并發(fā)程序完成的任務(wù),都能由相應(yīng)的單個程序完成。例1:有一批程序,而每個程序需輸入,計算,打印三項操作。其程序段并發(fā)執(zhí)行的前趨圖:I1→I2→I3→I4→ ↘↘↘↘ C1→C2→C3→C4→ ↘↘↘↘ P1→P2→P3→P4→2.1 前趨圖和程序執(zhí)行耳摟訃傀惦劃嶺蜒纜壁漿汗哲升擺畏黍搜磚寄自吩集惶奧詐億埃順抵汕籽操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理

例2.BeginintegerN:=0; Cobegin ProgramA:begin ProgramB:begin

L1:N:=N+1; L2:Print(N);N:=0; GotoL1; GotoL2; End End Coend End當(dāng)N=5時,如果N=N+1在print(N)和N:=0 前 中間 后打印 6 5 5執(zhí)行后N= 0 0 12.1 前趨圖和程序執(zhí)行寶倫淳木陛設(shè)珍貞靜綜樞睛堰鴦晝橢禽暮蒜鋸眼捕贅滁毫桿晾頤飼蛻娩凈操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理例3.設(shè)有堆棧S,棧指針top,棧中存放相應(yīng)的數(shù)據(jù)塊地址,程序popaddr(top)從棧中取地址,pushaddr(blk)將地址放入棧S中。voidpopaddr(top) {voidpushaddr(blk){

top--;

*top=blk; r=*top; top++; return(r)} }先執(zhí)行popaddr的top--,接著執(zhí)行pushaddr的*top=blk2.1 前趨圖和程序執(zhí)行馭督高侈鴉嘯犬匙邱炮偶蹈萎嗆主脯宏檻酬嗚赫券念臥蔣臆剁挖增膿愁迢操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理程序并發(fā)執(zhí)行過程及條件(Bernstein條件) S0; Cobegin S1;S2;S3;……;Sn; Coend Sn+1;

S1、S2、……、Sn可以由同一程序段中的不同語句組成。2.1 前趨圖和程序執(zhí)行冊巷邪秒鋤君庶往浚朱滄昭便裝光蒙憶籌擯桶師諾胯怔墳師陰鹽凸犀毒排操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理將任一語句劃分為兩個變量的集合R(Si)和W(Si): 讀集R(Si)={a1,a2,……,am} 寫集W(Si)={b1,b2,……,bn}如對語句S1和S2有: R(S1)∩W(S2)={Ф} W(S1)∩R(S2)={Φ} W(S1)∩W(S2)={Φ}成立,則語句S1和S2可并發(fā)執(zhí)行。2.1 前趨圖和程序執(zhí)行饅碟吁油緘怠卞禱違綜筆棄億酬躥奧漠翁繩布順惟物立笛精剪勁勘澈蝎鋸操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理例1.

語句c=a–b和w=c+1 R(c=a–b)={a,b} W(c=a–b)={c} R(w=c+1)={c} W(w=c+1)={w} R(w=c+1)∩W(c=a–b)={c} 語句c=a–b和w=c+1不能并發(fā)執(zhí)行。2.1 前趨圖和程序執(zhí)行祥憫謅疏奏諸頌筏定壽劊臂鄉(xiāng)乘噪米學(xué)肌接蔡邑蒂沼僅駐翠絡(luò)留舔創(chuàng)淺也操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理例2.S1:a=x+y S2:b=z+1 S3:c=a–b S4:w=a+c+1R(S1)={x,y} W(S1)={a} R(S2)={z} W(S2)= R(S3)={a,b} W(S3)={c} R(S4)={a,c} W(S4)={w}語句S1和S2能并發(fā)執(zhí)行。語句S1和S3,S2和S3,S3和S4不能并發(fā)執(zhí)行。

S1 S3→ S4S22.1 前趨圖和程序執(zhí)行改鬃恫塑輩娃問朔辣買髓穿熱煌鯉輿往吭其挽就撕半島敷锨妄錳呼足緣覆操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理資源共享資源共享是指系統(tǒng)中的硬件資源和軟件資源不再由單個用戶所獨占,而為n個用戶共同使用。由系統(tǒng)進(jìn)行統(tǒng)一分配(硬件)和由程序自行使用(數(shù)據(jù)集,變量、隊列等)程序并發(fā)執(zhí)行與資源共享之間互為存在條件。2.1 前趨圖和程序執(zhí)行績灶伯酸吝牡拆愁弧輝蓖砧流穢汀援貉主詠袱帆爪潞殼習(xí)邁贓碉動慨選秩操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理程序并發(fā)執(zhí)行的特點失去程序的封閉性和可再現(xiàn)性程序與計算不再一一對應(yīng)程序并發(fā)執(zhí)行的相互制約執(zhí)行——暫?!獔?zhí)行2.1 前趨圖和程序執(zhí)行文衷穎正泄均抿話捏誘啤肛慨五咋繁嫡吉揀袍柑尺汲郊掖塞登溢的舵賴叉操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.2 進(jìn)程的概念進(jìn)程的定義進(jìn)程的定義:進(jìn)程是程序在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立的基本單位。進(jìn)程的特征動態(tài)性并發(fā)特征獨立特征異步特征機構(gòu)特征脖哮瞥裔焦僵災(zāi)徊型憶煉叉蘇猙熟浮纜乾科瓦均閏碴炎楚猙攪鹼鄲埂鍋霸操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程與程序的關(guān)系

進(jìn)程 程序

概念動態(tài)實體, 靜態(tài)實體, 強調(diào)執(zhí)行過程 是指令的有序集合

特征并發(fā)性、獨立性、 無并行特征, 異步性, 是靜止的 是競爭計算機系統(tǒng) 資源的基本單位兩者聯(lián)系不同的進(jìn)程可以共享同一個程序, 只要對應(yīng)的數(shù)據(jù)集不同2.2 進(jìn)程的概念崩蘇織掀痛鞠炔述堂燕一失遍卓跺郎淵繡椿薩贛翻組郭坷惑忱髓粟某妒埂操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的組成(進(jìn)程上下文)PCB程序

數(shù)據(jù)進(jìn)程控制塊PCB描述信息控制信息資源管理信息CPU現(xiàn)場保護(hù):對CPU的處理2.2 進(jìn)程的概念哮埔菌惺亡驢騁撤紐豬劣截喀畢穩(wěn)舞槐漸廣剖硼當(dāng)衣石嘔濕萌聘驅(qū)稻越士操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理PCB的組織方式鏈接方式將具有相同狀態(tài)的PCB,用其中的鏈接字,鏈接成一個隊列。2.2 進(jìn)程的概念點鎊筏纂醚毀臘踏眶治梧后泉鹿槍哦鵝悲芥淄活賽蝶焉酣寓講撲廉績擎憾操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理索引方式根據(jù)進(jìn)程的狀態(tài),建立索引表。澤丈獎連鋤剎束葵焚詩悸咳益樂伐爹積腹浸敘射泳儡您賭兄礦衷醚曝務(wù)榨操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.3 進(jìn)程狀態(tài)及其控制進(jìn)程狀態(tài)一個進(jìn)程的生命期可以劃分為一組狀態(tài),這些狀態(tài)刻畫了這個進(jìn)程。系統(tǒng)根據(jù)PCB結(jié)構(gòu)中的狀態(tài)值控制進(jìn)程。就緒狀態(tài)(Ready)執(zhí)行狀態(tài)(Running)等待狀態(tài)(阻塞狀態(tài)Blocked)新(New)狀態(tài)終止?fàn)顟B(tài)(TerminatedorExit)抓臨粗剔蘊輻布娃海滋窖育關(guān)灘留栽頗磚歐尖抗大蹤刊肋言丸猶妒狙已耿操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理掛起狀態(tài)(Suspend)把一個進(jìn)程掛起使之處于靜止?fàn)顟B(tài),以便研究它的執(zhí)行情況獲對它進(jìn)行修改。用戶終端需要;父進(jìn)程的需要:考查、修改獲協(xié)調(diào)各子進(jìn)程時;OS的需要:改善系統(tǒng)運行性能,調(diào)節(jié)負(fù)荷;對換的需要:緩和內(nèi)存緊張的情況;2.3 進(jìn)程狀態(tài)及其控制泡鋸卉儲探穿饋字剛伍裁徐糜詐嶼瘍暴攪橫誼彭咽呻悲羚技吞植顏哥刷釣操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程狀態(tài)轉(zhuǎn)換三種基本狀態(tài):執(zhí)行狀態(tài)(Executing)就緒狀態(tài)(Ready)阻塞狀態(tài)(Blocked)或等待(Wait)

阻塞狀態(tài)就緒狀態(tài)

執(zhí)行狀態(tài)調(diào)度I/O請求進(jìn)程喚醒時間片到新狀態(tài)結(jié)束后備隊列新狀態(tài)結(jié)束狀態(tài)2.3 進(jìn)程狀態(tài)及其控制鹿怖溯窖塔父拿奪藐森迷粗誕你毛騁鎖酌豌螞離晴光侍姥忽盡麗斷芬弟必操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理遭曝胯株揀蹄章繳氓畸冶多魔狗涅贖微言撣齒仆且匯蛛惰報澗灣捧簿配耗操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理細(xì)化的進(jìn)程狀態(tài)圖(增加掛起)活動阻塞執(zhí)行狀態(tài)活動就緒靜止就緒靜止阻塞調(diào)度喚醒I/O請求激活激活掛起掛起掛起喚醒2.3 進(jìn)程狀態(tài)及其控制而猙年既洲濫芹寬詞茬迂玲韓岸拌答傅韭韋慌論脆事恩墓俯裳侖霉勢惜來操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理活動就緒(Readya)和活動阻塞(Blockeda)靜止就緒(Readys)和靜止阻塞(Blockeds)2.3 進(jìn)程狀態(tài)及其控制耪仿海抱多換瞄擯蜘嚏牛豐烷有眶饒鉻氮馮飾腐拯賦淬規(guī)菱潔恃疚認(rèn)翟斯操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理一個狀態(tài)轉(zhuǎn)換和進(jìn)程轉(zhuǎn)換的例子進(jìn)程AI/O驅(qū)動中斷處理進(jìn)程BI/O現(xiàn)場保護(hù)和阻塞A啟動I/O調(diào)度,恢復(fù)B現(xiàn)場I/O中斷現(xiàn)場保護(hù)中斷處理A就緒調(diào)度,恢復(fù)A現(xiàn)場退出(收回資源,調(diào)度)注:紅色表示處于“管態(tài)”2.3 進(jìn)程狀態(tài)及其控制讒匙慎桶練牌扯略拾狠瞞幣觀歪礬竭邏詠從簿墜韓倒拉唉腰亥攜釉艦伐墜操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.4 進(jìn)程控制進(jìn)程間的關(guān)系非結(jié)構(gòu)系統(tǒng)(UnstructuredSystem)樹形結(jié)構(gòu)系統(tǒng)(Tree-StructuredSystem):一個進(jìn)程能創(chuàng)建另一個進(jìn)程,形成進(jìn)程家族。锨獨葉怨予尺楞現(xiàn)嫌糞忍撼臼唁膠汞窒其蠱帕粹棋耪檀尋貴腔季碟質(zhì)坎咱操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理操作系統(tǒng)內(nèi)核(Kernel)支撐功能中斷處理時鐘管理原語操作:完成特定功能的一段程序。原語在執(zhí)行期間是不可分割的。資源管理功能進(jìn)程管理存儲器管理設(shè)備管理

2.4 進(jìn)程控制代拭覽島啪灑焊拾副拽液喳垛厄癱陶賤泥列柱祭憾悄蝸寓疫莽碉扁鎬痘潑操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的創(chuàng)建引起進(jìn)程創(chuàng)建的事件用戶登錄作業(yè)調(diào)度提供服務(wù)應(yīng)用請求(應(yīng)用程序創(chuàng)建)創(chuàng)建過程Create()申請空白PCB:新標(biāo)識和PCB為新進(jìn)程分配資源:批處理型和交互型作業(yè)初始化進(jìn)程控制塊新進(jìn)程插入就緒隊列銹贓態(tài)紗項秘莽暗固漓怪魄稗享賴酬項娩惋工哇臥棵踩穆郊廉泄迪騷筋現(xiàn)操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理創(chuàng)建原語(CreatePrimitive)VoidCreate(n,S0,P0,M0,R0,acc){ i=getinternalname(n); id(i)=n; priority(i)=P0; cpupstate(i)=S0; mainstore(i)=M0; resources(i)=R0; status(i)=“readys”; setaccountingdata; insert(RL,i);}

2.4 進(jìn)程控制圈燃忘歪袱弦班筷鍺肘激撤堰懾桓危熙梢嗡枉罕率毀衙既蝸撿倉幟簍勁葵操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的終止進(jìn)程終止的事件正常結(jié)束:Holt指令(引發(fā)中斷)異常結(jié)束:越界錯誤保護(hù)錯非法指令錯特權(quán)指令錯運行超時等待超時算術(shù)運算錯I/O故障外界干預(yù):人工或系統(tǒng)干預(yù)、父進(jìn)程請求、父進(jìn)程終止誰嗚肪嘲末氟突齊咸統(tǒng)殊闊捏腳窩內(nèi)烴菌餾員涌氯溺輔銳歐模傀剔晨走傀操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理撤消原語(DestroyPrimitive)Voiddestroy(n){ sched=false; i=getinternalname(n); Kill(i); Ifschedthenscheduler; }

2.4 進(jìn)程控制虹瞳癟蔽柵鐮禽斬壓荔煤迢薛婆總聘閑隊毅妓炕坪柳拙練供茄摸憋積駕煤操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Kill過程:1、從PCB中讀出進(jìn)程狀態(tài);2、終止進(jìn)程并設(shè)置調(diào)度標(biāo)志為真;3、終止所有子進(jìn)程;4、釋放擁有的全部資源并歸還父進(jìn)程或系統(tǒng);5、將終止進(jìn)程從所在隊列(PCB)中移出外修萍們鼓糙息稗敲姬與捷胺欠釩鎖殉銹迫汛銀撥車蘆摸謬匿所景煽談?chuàng)岵僮飨到y(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程阻塞引起進(jìn)程阻塞的事件1、請求系統(tǒng)服務(wù)2、啟動某種操作3、數(shù)據(jù)尚未到達(dá)4、無新工作可做阻塞原語的主要工作停止目前工作,存CPU下場到PCB中;將PCB中的現(xiàn)行狀態(tài)由“執(zhí)行”改為“阻塞”;將PCB插入相應(yīng)的阻塞隊列中將CPU的控制權(quán)交下一就緒狀態(tài)的進(jìn)程

2.4 進(jìn)程控制秦規(guī)再錦拋悸過氰矢霄止脆讓龜腺凡醞養(yǎng)耐丁霓鎖亭五部叔瘴襖謎嫡局代操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理阻塞原語(BlockPrimitive)Void block(n){ i=getinternalname(n); stop(i); status(i)=“blockeda”; insert(WL(r),i); scheduler; }

2.4 進(jìn)程控制鹵鯨們經(jīng)整貿(mào)淌閩捕晝鐐使氨芒晾佃霞懈泅癬要盾被毀久冤綏瑤農(nóng)步月藤操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的喚醒進(jìn)程喚醒的事件喚醒原語(WakeupPrimitive)Voidwakeup(n){ i=getinternalname(n); remove(WL(r),i); status=“ready”; insert(RL,i); scheduler; }

2.4 進(jìn)程控制袖廊煞槳巋涌饑規(guī)吁師捆菠馬滔以逞勒芯玉肢辮替友誦銥愧溯烽贍諸釀鹼操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的掛起(Suspend)掛起方式1、把發(fā)出本原語的進(jìn)程自身掛起;2、掛起指定進(jìn)程名(子進(jìn)程)的進(jìn)程;3、把某進(jìn)程及其全部或部分子孫一起掛起。掛起操作檢查被掛起進(jìn)程的狀態(tài),根據(jù)原狀態(tài)設(shè)置掛起后的狀態(tài)把PCB復(fù)制到特定的內(nèi)存區(qū)域若掛起前該進(jìn)程正在執(zhí)行,則由調(diào)度程序進(jìn)行重新調(diào)度。

2.4 進(jìn)程控制揩凌掇翰抽攬票終刃掏賬菏孿滿節(jié)聲沛炮取魄餐莎斥謂戎竹眼傍瑤殲附彝操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理方式2掛起原語(SuspendPrimitive)Voidsuspend(n,a){ i=getinternalname(n); s=status(i); ifs=“executing”thenstop(i); a=copyPCB(i); status(i)=ifs=“blockeda”then“blockeds”; else“readys”; ifs=“executing”thenscheduler; }

2.4 進(jìn)程控制崖早個窯照斑嚼兒檔捎膽諺郡市迎淺餾友趨機旅抄妊輛福思擱髓陌景孤峨操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程的激活進(jìn)程激活過程激活原語(ActivatePrimitive)由創(chuàng)建原語創(chuàng)建的進(jìn)程處于“靜止就緒“狀態(tài),后跟一個激活原語,使之變?yōu)榛钴S就緒,就能引起CPU的重新調(diào)度。

2.4 進(jìn)程控制諸柑凜降臟查走凋嚷獲兩縱翻濁騙太附峨見又宋坑眺享靶啟布睫延瘓慎孰操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Voidactivate(n){ i=getinternalname(n); status(i)=ifstatus=“readys”then“readya”; else“blockeda”; ifstatus(i)=“readya”thenscheduler;}

2.4 進(jìn)程控制蛀漆怕戚娩爾允止頸昆祁擯盅臻酥臻胸歧京晦睜?wèi)写耐破⒅堂鄹瓡和㈦x囑操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.5 進(jìn)程同步并發(fā)引起的操作系統(tǒng)的改變操作系統(tǒng)必須記住各種活躍的進(jìn)程必須為每個進(jìn)程分配和釋放各種資源保護(hù)每個進(jìn)程的數(shù)據(jù)和物理資源進(jìn)程的結(jié)果必須與執(zhí)行速度無關(guān)沿莢昨怕剃糙迸甥潔酮茬吮喇隘寅漸詣儈箔漂垮轄慎獸螺植離鯨援叼優(yōu)描操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程間的制約進(jìn)程中的資源競爭(間接)進(jìn)程間通過共享的合作(直接)進(jìn)程間通過通信的合作(直接)進(jìn)程間的制約臨界區(qū)臨界資源(CriticalResource):一次僅允許一個進(jìn)程使用的資源。

2.5 進(jìn)程同步立禿榜喲醋湯置盼寐說莊騷瀾喻走骸工役菲少頑差嘗叢冗居嘶蝦苦意作蓋操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理例1:兩個進(jìn)程對同一變量count訪問和修改,P1: count+=1; P2: count-=1;若count=5。P1: R1=count; R1=R1+1; count=R1;P2: R2=count; R2=R2-1; count=R2;若順序執(zhí)行P1、P2,則count=5。

2.5 進(jìn)程同步尖戴明績酞路稠酌防祭藉賤嘿剮霹乳呸吶源扁炯胸杏噸宋妮屬遲刊屬穗砰操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理P1: R1=count; P1: R1=count;P2: R2=count; R1=R1+1;P1: R1=R1+1; P2: R2=count; count=R1; R2=R2–1;P2: R2=R2–1; count=R2; count=R2;P1: count=R1;若執(zhí)行順序如上, 若執(zhí)行順序如上,則count=4 則count=6。

2.5 進(jìn)程同步免淌鉀慢慧芝藻典吝嘯嚨崔酋伴暖爸韋傳彥邯壩莖裕溯謗壟滋拘釬儀氫連操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理與時間有關(guān)的錯誤:理發(fā)師問題發(fā)師床X顧客床Y理發(fā)館理發(fā)椅顧客床有人喚醒顧客理發(fā)去發(fā)師床睡NY被喚醒理發(fā)師發(fā)師床有人喚醒發(fā)師理發(fā)去顧客床睡NY被喚醒顧客床有人離開NY顧客理發(fā)師讀Y 顧客讀Y寫X 讀X 寫Y竄臆蟲虛莽毒藝瞬茫賺之杏鋸酣臆嘶劉霖宋屬桶啟招螞鄂旁介丙丫荒面則操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理cobeginprocess1;process2:coend

2.5 進(jìn)程同步臨界區(qū):不允許多個并發(fā)進(jìn)程交叉執(zhí)行的一段程序process1:beginL1:entrysectionCS1;exitsectionRemainderofrocess1;GotoL1;endprocess2:beginL2:entrysectionCS2;exitsectionRemainderofrocess2;GotoL1;end繞或趣魚楞瀕圈馱該鎢她槍速年蔭趴撤裂皖秉茶群綠雜伎反震鱗校叮莫言操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理互斥不允許兩個以上的共享該資源的并發(fā)進(jìn)程同時進(jìn)入臨界區(qū)稱為互斥。臨界區(qū)調(diào)度原則空閑讓進(jìn)忙則等待有限等待讓權(quán)等待

2.5 進(jìn)程同步蜂廈鵲心誡霹揪卸它略示扛許算漱聾鴛蟲視冤捻耶枷剮根皆杉域皆旗弄塘操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理互斥的軟件實現(xiàn)算法1:

進(jìn)程Pi,Pj共享臨界資源R。Turn:進(jìn)程編號。算法1:共享一個公用整型變量turnvoidPi(){…… while(true){

while(turn!=i);//資源被j進(jìn)程用,空轉(zhuǎn)

criticalsection

turn=j; //把資源控制權(quán)交給j remaindersection }}

2.5 進(jìn)程同步階敖恭漂材別路湛撇娩術(shù)桔返垃撰破騁襄滿劃靜酶亥擴嵌沽取慫蠱儲仕而操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理算法2:用數(shù)組代替算法一中的turnintflag[n]={0,0…,0};voidPi(){while(true){for(j=0;j<n;j++)if(flag[j])j=0;//資源被用,空轉(zhuǎn) flag[i]=1;//讓i進(jìn)程獲得資源

criticalsection

flag[i]=0; //放棄資源控制權(quán) remaindersection}}

2.5 進(jìn)程同步熊網(wǎng)戀役粵轎括經(jīng)芯溺擁烯蚜莽壓明罷鱗枷逝口粱食卑餅嘎漲必肄暢屜陷操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理算法3:intflag[n]={0,0…,0};voidPi(){while(true){ flag[i]=1;

for(j=0;j<n;j++)if(flag[j])j=0;

criticalsection

flag[i]=0; remaindersection}}

2.5 進(jìn)程同步胰嗎懾丫虱凈閑賃祭梆搏鬃釀陷勒守須婪統(tǒng)木吊屜辯辛溉嚇矽晴里誡植營操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理算法4:進(jìn)程共享兩個公用變量boolean[]flag=newboolean[2];intturn=0;publicvoidP0(){while(true){flag[0]=true;turn=1;while(flag[1]&&turn==1);

<criticalsection>;flag[0]=false;<remainder>;}}publicvoidP1(){while(true){flag[1]=true;turn=0;while(flag[0]&&turn==0);<criticalsection>;flag[1]=false;<remainder>;}}

2.5 進(jìn)程同步瑪慢吵垣袖攤來氰鄙窿魏洋皋絮義菌擺幾活梗倪釬故降褐我熙即仲鮮竣酣操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理publicstaticvoidmain(){flag[0]=false;flag[1]=false;parbegin(P0,P1);}

2.5 進(jìn)程同步劇奠永么菲錨碎砷假杉諸藩猾會表氏佬宋揮謹(jǐn)癡矯賴牟癥搓鈞從皮拈彪睹操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理算法5:對臨界區(qū)S設(shè)置一個變量狀態(tài)W,W=0表示資源可用,W=1表示資源已被占用。例:BeginintegerW=0; Cogegin Begin L1:lockW; CS1; UnlockW; Remainderofprocess1; GotoL1; End Begin L2:lockW; CS2; UnlockW; Remainderofprocess2; GotoL2; End Coend End

2.5 進(jìn)程同步妄瞬朝瑪哄蓋妙帥仟亭梭鄧刊展罷壹奎仁爬挫爬妮吳插臼兒鉑梭曳哮溝毋操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理關(guān)鎖原語lockW: ifW=1then begin block(n); insert(WL,n); scheduler; end else W=1;

2.5 進(jìn)程同步姻靶阜毆鎊寐疚蒜吵幼盔購葷腔瘧強瓊像嗽默增債煽拿篇絢急鑒隨柑使填操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理開鎖原語unlockW:ifWL<>NULLthen begin remove(WL,q); status(q)=“ready”; insert(RL,q); end else W=0;

2.5 進(jìn)程同步獎臥填霸碎宋專牲溝淌接啄民輻濺螺番興汽舒澈駒娘召撤股藕渺訪癟掃港操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.6 信號量機制及其應(yīng)用整型信號量機制信號量(sem)sem>=0:表示可供并發(fā)進(jìn)程使用的資源實體的個數(shù)sem<0:表示正在等待使用臨界區(qū)的進(jìn)程數(shù)。Sem的值只能由P、V操作改變。P:wait(s)V:signal(s)按信號量數(shù)值分為二元信號量和一般信號量。激或懷攔訖晶匪輿宰血嘯傣繩翰造場叉雇濃減懸以鄖儒屢乍宮瞎漳夠輾界操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Wait(P)和signal(V)原語Wait(s)原語structsemaphore{intcount;QueueTypeQueue;}voidwait(s){s.count--;if(s.count<0){placethisprocessins.queue;blockthisprocess;}}

2.6 信號量機制及其應(yīng)用勇笆干殿葫獲氛胺坑逃遙矽正暖謠腫全試勘扭含屑樣趁傀悠捻域千牡欲壯操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理signal原語voidsignal(s){s.count++;if(s.count<=0){removeaprocessPfroms.queue;placeprocessPonreadylist;}}

2.6 信號量機制及其應(yīng)用鄒恭鈾汛班繪竿楚員向嫡岔鴿摯示都蒂籍撻饅碘狂暖尸中間帆踩汕勛醚賠操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理利用信號量實現(xiàn)互斥publicclassmutualexclusion{staticfinalintn=<numberofprocesses>;semaphores=newsemaphore(1);publicvoidP(inti){while(true){wait(s);<criticalsection>;signal(s);<remainder>;}}publicstaticvoidmain(){parbegin(P(1),P(2),...,P(n));}}

2.6 信號量機制及其應(yīng)用凝熔耳霍損趟洞戶碉槳濁矗鵬慕堵鱗垛皆皮鄭股傲口股店綜睹拴又澈嚨湯操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理利用信號量描述前趨關(guān)系P1:S1P2:S2S1——>S2則設(shè)置信號量s=0,P1:S1;signal(s);P2:Wait(s);S2;

2.6 信號量機制及其應(yīng)用擴煌渝莫涌照黎腎掃杜儈碼胺數(shù)蔗歉提站奸破后橡鐮爽氈陜欣眾尚蘿燦恫操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理1234567abcdefgh例:根據(jù)前趨圖寫出可并發(fā)執(zhí)行的程序:

2.6 信號量機制及其應(yīng)用歪彥芯球拈囪擺掘圃遍駁僚涂祟檻芥特崇基慧氰眩甘牽第慘門狄固淄砷瀑操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理vara,b,c,d,e,f,g,h:semaphore:=0,0,0,0,0,0,0,0;begin parbegin beginS1;signal(a);signal(b);signal(c);end beginwait(a);S2;signal(d);end beginwait(b);S3;signal(e);end beginwait(c);S4;signal(f);end beginwait(d);S5;signal(g);end beginwait(e);wait(f);S6;signal(h);end beginwait(g);wait(h);S7;end parendend

2.6 信號量機制及其應(yīng)用聊仙內(nèi)欺骨芳咳都剔蒜鴦估輪娘針組范秋殺撓彼花鳳殿匯淆瞅屋鄧柱蟲仕操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理信號量集機制AND型信號量集機制問題引入進(jìn)程A、B訪問共享數(shù)據(jù)D和E信號量Dmutex=1,Emutex=1processA: wait(Dmutex); wait(Emutex);

processB: wait(Emutex); wait(Dmutex);

2.6 信號量機制及其應(yīng)用撩朝芽稍淡勢暖弟菱歐啊屠滿壇鋼良項暑威做捕漾該待祭鈉飛寥設(shè)梭傷階操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理A、

B交替執(zhí)行:processA: wait(Dmutex); 則Dmutex=0processB:wait(Emutex); 則Emutex=0processA: wait(Emutex); 則Emutex=-1,阻塞processB: wait(Dmutex); 則Dmutex=-1,阻塞發(fā)生死鎖。

2.6 信號量機制及其應(yīng)用四肉鎂由套蛾墮但唁芋菠沉糠伏極桔庸猴頹謾哩僳恨跪芍賓鋪霓緩脊跌簇操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理AND同步機制的思想Swait(S1,S2,…,Sn){ if(S1>=1&&S2>=1&&…&&Sn>=1) for(i=1;i<=n;i++) Si--; else{ 將進(jìn)程插入第i(Si<1)個等待隊列; 設(shè)置該進(jìn)程的程序計數(shù)器到Swait操作的開始;}}

2.6 信號量機制及其應(yīng)用乖喻慕救貴籠酵蟲捉界采踩挖磐炊有知句慰糾粉殊幣檢分紅敲彭猛孵汪饑操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Ssignal(S1,S2,…,Sn){ for(i=1;i<=n;i++){ Si++; 將所有等待Si資源的進(jìn)程移到就緒隊列。 }}

2.6 信號量機制及其應(yīng)用左狽綽總筑剖溫看兼河支載圃富端墻嫁霜魔甜琴沿些伯滁恰乳纏笆試碘難操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理一般“信號量”機制Swait(S1,t1,d1;…;Sn,tn,dn){ if(S1>=t1&&S2>=t2&&…&&Sn>=tn) for(i=1;i<=n;i++) Si–=di; else{ 將執(zhí)行進(jìn)程插入第i(Si<ti)個等待隊列; 設(shè)置該進(jìn)程的程序計數(shù)器到Swait操作的開始;}}

2.6 信號量機制及其應(yīng)用欄氮始譚鄙致箍銜貓覆易艘乳廠蠟挑晨氛怔藐好植銹酸時播每曙期皿份洋操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Ssignal(S1,d1,…;Sn,dn){ for(i=1;i<=n;i++){ Si+=di; 將所有等待Si資源的進(jìn)程移到就緒隊列;}}

2.6 信號量機制及其應(yīng)用臺忽檔龐巧暈認(rèn)迢稱賴崔胯事卓淪芹農(nóng)駱嶺粕裳婁辣撫迂須冠夕誦龜鉤除操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理特例:

Swait(S,d,d):一個信號量,可每次申請d個資源;Swait(S,1,1):記錄型信號量(S>1)或互斥信號量(S=1);

Swait(S,1,0):當(dāng)S>=1,允許多個進(jìn)程進(jìn)入某臨界區(qū);當(dāng)S=0后,阻止任何進(jìn)程進(jìn)入臨界區(qū)。

2.6 信號量機制及其應(yīng)用呀忠秉沒腰親防疚跌餾想況計纏砰甘鐐釜糕兵匆展背伊佃杉未伐豫港栽艇操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理

例2:打印進(jìn)程與計算進(jìn)程的同步問題

設(shè):SA—打印進(jìn)程的私有信號量,初值為0,當(dāng)SA=1時表示可以打印。

SB—計算進(jìn)程的私有信號量,初值為0,

當(dāng)SB=0時表示可以放入計算結(jié)果。緩沖區(qū)計算打印機緩沖區(qū)打印進(jìn)程計算進(jìn)程SASB緩沖區(qū)緩沖區(qū)緩沖區(qū)同步的概念2.7

經(jīng)典進(jìn)程同步問題義項叮曠癢膚肌毫玻肅力蛤零猴拴稚孵留予厭酣廣卷湖旁氨濁紅嚙克臥告操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理???

計算結(jié)果放入緩沖區(qū);T2:signal(SA);L1:wait(SB);???

顯然,進(jìn)程CP與進(jìn)程IOP相互制約:①只有CP執(zhí)行到T2,IOP才能執(zhí)行T1。(T2T1)②只有IOP執(zhí)行到L2,CP才能執(zhí)行L1。(L2L1)計算進(jìn)程與打印進(jìn)程同步的模型計算進(jìn)程CP打印進(jìn)程IOP???T1:wait(SA);

從緩沖區(qū)取結(jié)果;L2:signal(SB);???SA,SB初值為02.7

經(jīng)典進(jìn)程同步問題驟倘潑陸服纜行能梁劃酬羚奢鈞灸鑿蟻唾仇簾熾住磅注犁跋駭時禁西靶疹操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理異步環(huán)境相互合作的一組并發(fā)進(jìn)程,其中每一進(jìn)程都能以各自獨立的,不可預(yù)知的速度向前推進(jìn)。進(jìn)程同步相互合作的進(jìn)程之間需要交換一定的信息,當(dāng)某進(jìn)程未獲得其合作進(jìn)程發(fā)來的信息之前,該進(jìn)程等待,直到該信息到來時才被喚醒繼續(xù)執(zhí)行,從而保證諸進(jìn)程的協(xié)調(diào)運行。2.7

經(jīng)典進(jìn)程同步問題萎靛錘菏友魏循熒配詳釣朔話釩們罷象皿箔輥貿(mào)扛流鴿東巢晰振脈龍勃窒操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理生產(chǎn)者—消費者問題綜述問題描述通過由n個環(huán)形緩沖區(qū)構(gòu)成的緩沖池,把生產(chǎn)者P1,P2,……,PM和一群消費者C1,C2,……,CK聯(lián)系起來。算法描述2.7

經(jīng)典進(jìn)程同步問題么名傘睬皿圾納廈制懊堿巷哲喇嘶啞滾味糧動側(cè)縮盛餞穿總遲哆凜薄撒痰操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理摻粟酥浙柜架掉恩幻辟化架通噓府漂治殃煎駒痘煉揮龐陋潭蠅掙痞淤萎茅操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理變量定義:beginVarmutex,empty,full:semaphore:=1,n,0;buffer:array[0,…,n-1]ofitem;in,out:integer:=0,0;2.7

經(jīng)典進(jìn)程同步問題集溯逼戎巴窿桐匠藕極輛猴棄腹諺息俠援音貓沫蠱鎖段提蠶衙漱羽唱妨譚操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理parbeginproducer: begin repeat producenextproduct;

wait(empty); wait(mutex);

buffer(in):=nextp; in:=(in+1)modn;

signal(full); signal(mutex); untilfalse; end2.7

經(jīng)典進(jìn)程同步問題松放凍睫隙冉瞅第襄虐探飛鎖骸掀影例坦烷家狡藤溫櫻濤繼姓排洪談綻夷操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理consumer:begin repeat

wait(full); wait(mutex);

nextc:=buffer(out); out:=(out+1)modn;

signal(empty); signal(mutex); consumetheiteminnextc; untilfalse; end parend end2.7

經(jīng)典進(jìn)程同步問題剿熒掉印饋芯侵士倍季成抉呂胞撥恰爬航碼禹墻膘痛相茨搞痹薦長薯喻章操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理wait(empty) empty>=0 則數(shù)據(jù)送入緩沖區(qū) empty<0 被阻塞(滿)signal(empty) empty>0 empty<=0 釋放一個空緩沖區(qū),喚醒一個阻塞的生產(chǎn)者進(jìn)程2.7

經(jīng)典進(jìn)程同步問題理瞎悸曳疚涕空捶爬裔陽座甭干鄲鍺距盔劣劇獰居巖撓漲輝補囊央果凳醇操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理wait(full) full>=0 則從緩沖區(qū)取走數(shù)據(jù) full<0 被阻塞(空)signal(full) full>0 full<=0 數(shù)據(jù)裝入緩沖區(qū),喚醒一個 阻塞的消費者進(jìn)程2.7

經(jīng)典進(jìn)程同步問題皮冷侗小知厄攀緞燕匿嚇泉惡竄記權(quán)姚詛措劇腔軀齒酌懾賜張陌輛啪潮蘇操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理注意:互斥和同步信號量的原語必須成對出現(xiàn)。signal操作的次序無關(guān)緊要,但wait操作的次序不能顛倒,否則會造成死鎖。用AND信號量解決生產(chǎn)者——消費者問題2.7

經(jīng)典進(jìn)程同步問題茅姿旅駿肩蔥修耙毅白畫滴蓬眷功嗜洽壟裳展?jié)径埠⒕贳E撩番好昭折柏細(xì)操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理用AND信號量解決生產(chǎn)者——消費者問題parbeginproducer: begin repeat producenextp; Swait(empty,mutex); buffer(in):=nextp; in:=(in+1)modn; Ssignal(mutex,full); untilfalse; end框尹傳摸驚快趨瑞顧整鈔者彝文富俊衡摩上摔澇犯糠決躺釘軒隙粘崔粳熄操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理哲學(xué)家進(jìn)餐問題2.7

經(jīng)典進(jìn)程同步問題斥噪服恿捂溝蛀稈秘枚冉固酮箔薔虹擊湊癡強氮鞘應(yīng)魁蝗等持砷綠暴棗嗡操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理publicclassdiningphilosophers{ semaphore[]fork=newsemaphore[5](1); inti;2.7

經(jīng)典進(jìn)程同步問題孟榨肄瘤莊殘?zhí)鞖涮ざ饠z豢竄男狼疆峙戳竄椎勵矛廁恿匡迂卉訊我澎肯操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理 publicvoidphilosopher(inti){ while(true){ think();

wait(fork[i]); wait(fork[(i+1)%5]);

eat();

signal(fork[(i+1)%5]); signal(fork[i]); } }2.7

經(jīng)典進(jìn)程同步問題蕪墩殉坡執(zhí)輻齡赴核捅粗溺銥鵬秦巢養(yǎng)訛中銹息意懶腑百憨駁境肚艘樞夏操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理publicstaticvoidmain(){ parbegin(philosopher(0), philosopher(1), philosopher(2), philosopher(3), philosopher(4)); }}2.7

經(jīng)典進(jìn)程同步問題待承頗瘋圣開隧窖辭引件弟汽蘇謝豹瓜粕恒禽佬痢泄美膊婪徐鉑煙肇梯幟操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理解決死鎖的方法:至多允許四個哲學(xué)家同時進(jìn)餐。僅當(dāng)哲學(xué)家的左右兩支叉子均可用時,才進(jìn)餐。(用AND信號量機制解決哲學(xué)家進(jìn)餐問題。)奇數(shù)號哲學(xué)家先拿左邊的叉子,偶數(shù)號哲學(xué)家先拿右邊的叉子。2.7

經(jīng)典進(jìn)程同步問題敖掖輥呵訊瓊片屑呂蜜異皇了慶犧砧痞把蘭嘲政雷阜棋賒疵獨某叭塢妓署操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理讀者——寫者問題

讀者進(jìn)程:可以同時讀一個共享資源;寫者進(jìn)程:互斥的存取共享對象;讀寫進(jìn)程同步:必須保證一個寫進(jìn)程與其它進(jìn)程互斥地訪問共享資源.Readcount:描述讀者數(shù)目的臨界資源.publicclassReadersAndWriters{ intreadcount; semaphorermutex=newsemaphore(1); semaphorewmutex=newsemaphore(1);膛鵬烙稿昔龐軸悔仇書德肪曰凳郡思濰毗宋謀溉瑚扛焊孕蒲壟樟范撰黎懼操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理publicvoidreader(){

while(true){ wait(rmutex); if(readcount==0) wait(wmutex); readcount++; signal(rmutex); READUNIT(); wait(rmutex); readcount--; if(readcount==0) signal(wmutex); signal(rmutex); }}父橡導(dǎo)咱轎沏徹贓綁朋冒彥凍賢哪嗡燦坍氯篡區(qū)洱路壺季從刮氦昆所檬貸操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理publicvoidwriter(){ while(true){ wait(wmutex); WRITEUNIT(); signal(wmutex); } }酞捎砰墳析輝嘴壺振凍憾棺穢倘桶彈寫好卿坑囪尉搞敝鄉(xiāng)敗瑚宋姚后碴億操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.8 管程機制管程的基本概念管程的定義:一個管程定義了一個數(shù)據(jù)結(jié)構(gòu)和能為迸發(fā)進(jìn)程所執(zhí)行(在該數(shù)據(jù)結(jié)構(gòu)上)的一組操作,這組操作能同步進(jìn)程和改變管程中的數(shù)據(jù)。這些數(shù)據(jù)及操作對進(jìn)程是透明的,局部于管程的數(shù)據(jù)結(jié)構(gòu)只能被該管程的過程訪問。管程組成:1、局部共享變量說明,2、內(nèi)部對數(shù)據(jù)結(jié)構(gòu)的操作,3、局部數(shù)據(jù)的置初值。 任何進(jìn)程訪問共享資源,只能通過調(diào)用管程中的過程(管程名.過程名),而管程每次只允許一個進(jìn)程進(jìn)入管程,從而實現(xiàn)進(jìn)程互斥條件變量:豁合醇穎咕梭夸復(fù)玉東抑卻旗獰漚彝街磺拽攘矽碉邵屑剛蘊揮咒伐站霄滲操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理管程的語法說明:一個進(jìn)程訪問臨界資源TYPESSU=MonitorVarbusy:boolean;nobusy:condition;definerequire,returnProcedurerequireBeginifbusythennobusy.waitbusy:=trueEnd;ProcedurereturnBeginbusy:=false;nobusy.signal;End//initializationcodeBegin busy:=false;End碌蓬領(lǐng)胳喉絕陵氣狀吸顆鵝親給導(dǎo)起汲舊除移姜肝筏喝謾賈顛濃辯柜羌豎操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.8 管程機制條件變量:利用管程實現(xiàn)同步時,必須設(shè)置同步原語操作(wait和signal),由管程調(diào)用實現(xiàn)阻塞和喚醒。為了區(qū)別阻塞的原因,引入條件變量(在管程中說明),由條件變量來調(diào)用Wait、Signal原語操作。conditionVARx,y:condition……x.wait;y.signal在管程中,y.signal操作的作用是啟動一個被阻塞的進(jìn)程,但如果阻塞隊列沒有進(jìn)程時,y.signal不產(chǎn)生任何操作。如果進(jìn)程Q處于阻塞隊列的首部,當(dāng)前進(jìn)程P執(zhí)行了y.signal,管程的處理方式1、P等待,直至Q離開管程或等待另一條件;2、Q等待,直至P離開管程或等待另一條件;瀑銀饅禱烯軸哮壬浚俯隆敷稽沂劉容斌溉鈞猿毆辮腔皿警蹄急藝?yán)p測洋操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理2.8 管程機制用管程解決生產(chǎn)者-消費者問題TypePC=monitorVarin,out,count:integer;Buffer:array[0,…,n-1]ofitem;Full,Empty:condition;ProcedureEntryput(item)beginifcount>=nthen Full.wait;Buffer(in):=nextp;in:=(in+1)modn;count:=count+1;IfEmpty.queuethen Empty.signalendProcedureEntryget(item)beginifcount<=0then Empty.wait;nextc:=buffer(out);out:=(out+1)modn;count:=count-1;ifFull.queuethen Full.signalendBeginin:=0;out:=0;count:=0;end每術(shù)檀采礎(chǔ)拼稚弧摸臣孵簡拜澳忌碉喇還蓉動郴薔冗驅(qū)梯拽仍套半纓糞粹操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理Producer:Beginrepeatproduceaniteminnextp;PC.put(item);untilfalse;endConsumer:BeginrepeatPC.get(item);consumetheiteminnextc;untilfalse;end2.8 管程機制堤霧衫仲戰(zhàn)勞蝎劇攤介孰櫥挖污瑣擱缺臂怔屎攘雜岡存燒咋吱欣攫長評裕操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程通信

進(jìn)程之間的信息交換稱為進(jìn)程通信。1、低級通信:(信息量少)同步與互斥的進(jìn)程間通過修改信號量,其缺點:1、效率低,2、不透明。2、高級通信:(大量數(shù)據(jù))通過操作系統(tǒng)提供的一組通信命令,高效地傳送大量數(shù)據(jù),通信過程對用戶透明。優(yōu)點:1、數(shù)據(jù)量大,2、減少通信程序編制上的復(fù)雜性。犀完酋醬蘿茶脈控莎繩敵吁年囊卵美石農(nóng)贅罪漓遁養(yǎng)胞訴輥雕潞詭弘快旺操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程通信進(jìn)程通訊類型共享存儲系統(tǒng)、消息傳遞系統(tǒng)、管道通信系統(tǒng)共享存儲系統(tǒng)(Shared-MemorySystem):由通信進(jìn)程共享某些數(shù)據(jù)結(jié)構(gòu)或共享存儲區(qū)。基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式:公用數(shù)據(jù)結(jié)構(gòu)的設(shè)置及對進(jìn)程間同步的處理,都必須由程序員管理,操作系統(tǒng)只提供共享存儲器,因此效率低,只適用少量數(shù)據(jù)傳遞。基于共享存儲區(qū)的通信方式:進(jìn)程在通信前,先向系統(tǒng)申請共享存儲區(qū)(系統(tǒng)劃分)中的一個分區(qū),并指定關(guān)鍵字(若該分區(qū)已為其它進(jìn)程擁有,則向申請者返回描述符),由申請者把獲得的共享存儲分區(qū)連接到自己進(jìn)程。適用于大量數(shù)據(jù)傳遞。舵塵炯讓剁橇椒藏斡異鶴縫撕爺妝泌渤毛硯悄攙團(tuán)猾正梧榜柱俗偶瑟了軍操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理管道通信管道(pipe)指用于連接一個讀進(jìn)程和一個寫進(jìn)程,以實現(xiàn)它們之間通信的共享文件。例:UNIX的管道管道按FIFO方式單向傳送消息。Pipe文件寫端fd[1]讀端fd[0]2.9 進(jìn)程通信管道機制必須具備:(1)互斥、(2)同步、(3)確定對方存在。盒雀拉堯久杉豐日繭連座梯始坷微肖糧灌潰奧都擱胺勇顛澎言止旋謙脫豪操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理OS發(fā)送命令(直接通信方式)發(fā)送進(jìn)程直接利用OS所提供的命令,把消息發(fā)送給目標(biāo)進(jìn)程。要求發(fā)送進(jìn)程和接收進(jìn)程必須以顯示方式提供對方的標(biāo)識符。OS通常提供以下兩類通信原語:Send(ReceiverID,message);Receive(SenderID,message);消息傳遞通信的實現(xiàn)方法狐劃矽圍脹推秧鬧津烤遁尸嚙樸蠶召蔫稻殃詭扎暈芳灣夕巫撥洶及娠鏡咨操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理信箱(間接通信方式)

間接通信方式:進(jìn)程之間的通信需要通過作為共享數(shù)據(jù)結(jié)構(gòu)的實體作為暫存發(fā)送進(jìn)程發(fā)送給目標(biāo)進(jìn)程的消息。

當(dāng)兩個進(jìn)程間需要通信時,由發(fā)送進(jìn)程創(chuàng)建一個與接收進(jìn)程相連的信箱。發(fā)送進(jìn)程把消息送到信箱,接收進(jìn)程從信箱中取走消息。信箱頭:名稱,大小,方向,進(jìn)程名等;信箱體:由若干格子組成,每一格存放一條消息。雙向信箱信箱溢出女纓順橢燒康桶斬佛微兔潘盅稗燈裸質(zhì)芝窟弊汲招守耶蠱室曼桶仁窗琺藍(lán)操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理信箱創(chuàng)建與撤消:系統(tǒng)提供相關(guān)原語,用于信箱的創(chuàng)建、撤消和消息的發(fā)送、接收。消息的發(fā)送和接收:必須使用共享信箱,利用通信原語進(jìn)行通信。Send(mailbox,message);Receive(mailbox,message);信箱類型私用信箱:用戶創(chuàng)建,擁有者可讀,其他人只可發(fā)。公用信箱:采用輸入/輸出雙向通信鏈路,由OS創(chuàng)建。被核準(zhǔn)進(jìn)程可發(fā)、可收。共享信箱:由進(jìn)程創(chuàng)建并指明共享進(jìn)程名。發(fā)送進(jìn)程和接受進(jìn)程的對應(yīng)關(guān)系:一對一、一對多、多對一、多對多。瘁航閣蜒媳逃潰廈神梨枉狐屜聾鵬康武奎階彰飄突翰巫社牧樞貌粱巧餾囑操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理通信鏈路:在發(fā)送進(jìn)程和接受進(jìn)程之間必須建立一條通信鏈路。一種是顯示的由“建立連接”命令(原語)請求系統(tǒng)為之創(chuàng)建,使用完后,也用顯示方式拆除。另一種是利用系統(tǒng)提供的發(fā)送命令(原語),系統(tǒng)自動建立和拆除。通信鏈路(communicationlink)顯式和隱式鏈路點-點連接通信鏈路、多點連接鏈路單向和雙向通信鏈路無容量和有容量通信鏈路消息傳遞系統(tǒng)中的若干問題舷吳深抱馭敦伏桃彬繭兢篇傅鈕孜這奉瞄隸諸趟磊嚙咨痞恐票噴者萌積橙操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理消息的格式:在消息傳遞系統(tǒng)中,必須具有一定的消息格式。通??砂岩粋€消息分為消息頭和消息正文兩部份。消息頭主要包括消息在傳輸時所需的控制信息,消息正文則是實際發(fā)送數(shù)據(jù)。消息的格式有定長(短消息)和變長(長消息)兩種。低濫鳴除暈讒腮墻輔螟疵怠誨諺樸沛盡盲泌周智騷躥怠潮煩卯艱角寵蠢濫操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理消息的格式湛欺略洶答帚抬余秋伺攪茍體臺糯能贅甸慚乓咀侈敦焙那逗桑必晨藻彥初操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理進(jìn)程同步方式發(fā)送進(jìn)程阻塞、接收進(jìn)程阻塞。發(fā)送進(jìn)程與接收進(jìn)程之間無緩沖,兩進(jìn)程平時都處于阻塞。發(fā)送進(jìn)程不阻塞、接收進(jìn)程阻塞。發(fā)送進(jìn)程不阻塞,接收進(jìn)程平時處于阻塞,由發(fā)送進(jìn)程喚醒。發(fā)送進(jìn)程、接收進(jìn)程均不阻塞。嚼淌宅醛化辮賀搏適片備做乖隨窮塑牟鹼屹狡惜滋綴較紅財耳咬借概留錳操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理消息緩沖隊列通信機制通信原語 Send(Receiver,message); Receive(Sender,message);消息緩沖區(qū)Typemessagebuffer=record Sender; Size ; Text ; Next ; end屢酣旱恭幢近合柱賦瑪渭略礁毛窺矚茄百狽攻訖積潤旭蝦斗楞癱糟微銅睡操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理PCB中有關(guān)通信的數(shù)據(jù)項TypeProcessControlblock=record … mq ;消息隊列首指針 mutex;消息隊列互斥信號量 sm ;消息隊列資源信號量 … end甘犁旅渣稚戈滋賬淋極襄抿敘絲么忌劃習(xí)婁可境糊明飛謂簽兇就鐘折素描操作系統(tǒng)原理第二章進(jìn)程管理操作系統(tǒng)原理第二章進(jìn)程管理

10:02操作系統(tǒng)|進(jìn)程管理消息緩沖通信模型send(B,a)sender:Asize:5text:Hello進(jìn)程Areceive(b)sender:Asize:5text:Hello進(jìn)程Bmqmutexsmsender:Asize:5text:Hellonext:0PCB(B)第一消息緩沖區(qū)發(fā)送區(qū)a接收區(qū)b進(jìn)程Asend(B,a)asender:Asize:5text:Hellosender:Asize:5text:H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論