freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第三章進(jìn)程管理-1-資料下載頁(yè)

2025-10-02 21:52本頁(yè)面

【導(dǎo)讀】機(jī)上的執(zhí)行過(guò)程和分配資源的基本單位.PCB,感知該進(jìn)程的存在,故亦稱(chēng)PCB是進(jìn)程存在的標(biāo)志.組,存放在系統(tǒng)的數(shù)據(jù)區(qū)中.一個(gè)進(jìn)程的PCB機(jī)構(gòu)全部或部分常駐內(nèi)存.在單CPU情況下,處于該狀態(tài)的進(jìn)程數(shù)只有一個(gè).OS所需的用于描述進(jìn)程及控制進(jìn)程全部信息.統(tǒng)堆棧,用戶(hù)堆棧)構(gòu)成的。;數(shù)據(jù)段以及各種堆棧的值和PCB塊)。在一個(gè)系統(tǒng)中,通常可以擁有數(shù)十個(gè)以及若干個(gè)PCB,把具有相同狀態(tài)的PCB,用其中的鏈接字鏈接成一個(gè)隊(duì)列.訪(fǎng)問(wèn)指定的寄存器和存儲(chǔ)區(qū).

  

【正文】 讀者同時(shí)執(zhí)行讀操作 不允許讀者、寫(xiě)著同時(shí)操作(讀、寫(xiě)互斥) 不允許多個(gè)寫(xiě)者同時(shí)操作(只能一個(gè)寫(xiě)) 第一類(lèi):讀者優(yōu)先策略 如果讀者來(lái) ? 無(wú)讀者、寫(xiě)者,新讀者可以讀 ? 有寫(xiě)者等,但有其他讀者正在讀,則新讀者也可以讀。 ? 有寫(xiě)者寫(xiě),新讀者等。 如果寫(xiě)者來(lái) ? 無(wú)讀者,新寫(xiě)者可以寫(xiě)。 ? 有讀者,新寫(xiě)者等待。 ? 有其他寫(xiě)者,新寫(xiě)者等待。 第三章 進(jìn) 程 管 理 2020/11/17 81 寫(xiě)進(jìn)程 ... P(Wrt)。 寫(xiě); V(Wrt)。 讀進(jìn)程 ... P(Wrt); 讀; V(Wrt)。 Wrt =1 第三章 進(jìn) 程 管 理 2020/11/17 82 讀者 While (true) { P(mutex)。 readcount++。 if (readcount== 1) P(w)。 V(mutex)。 讀; P(mutex)。 readcount 。 if (readcount= =0) V(w)。 V(mutex)。 } 寫(xiě)者 While (true) { P(w)。 寫(xiě); V(w)。 } 第三章 進(jìn) 程 管 理 2020/11/17 83 : 有五個(gè)哲學(xué)家,圍坐在一圓桌旁,桌中央有一盤(pán)通心粉,每人面前有一只空盤(pán)子,每?jī)扇酥g放一只筷子。每個(gè)哲學(xué)家的行為是思考,感到饑餓,然后吃通心粉。為了吃通心粉,每個(gè)哲學(xué)家必須拿到兩只筷子,并且每個(gè)人只能直接從自己的左邊或右邊取筷子。 為防止死鎖發(fā)生可采取的措施: ? 最多允許 4個(gè)哲學(xué)家同時(shí)坐在桌子周?chē)? ? 僅當(dāng)一個(gè)哲學(xué)家左右兩邊的筷子都可用時(shí),才允許他拿筷子。 ? 給所有哲學(xué)家編號(hào),奇數(shù)號(hào)的必須先拿左邊,偶數(shù)號(hào)的必須先拿右邊的。 為了避免死鎖,把哲學(xué)家分成三種狀態(tài):思考、饑餓、進(jìn) 食。并且一次拿到兩只筷子,否則不拿。 第三章 進(jìn) 程 管 理 2020/11/17 84 哲學(xué)家就餐問(wèn)題解法 define N 5 define THINKING 0 define HUNGRY 1 define EATING 2 typedef int semaphore Int state[N]。 Semaphore mutex=1。 Semaphpre S[N]。 Void test(int i) { if ((state[i]= = HUNGRY)amp。amp。(STATE[(i1)%5]!=EATING amp。amp。 (state[(i+1)%5]!=EATING { state[i]=EATING。 v(amp。s[i])。 } } 第三章 進(jìn) 程 管 理 2020/11/17 85 Void philosopher(int i) { while(true) { 思考; p(amp。mutex)。 state[i]=HUNGRY。 test[i]。 v(amp。mutex)。 p(amp。s[i])。 拿左叉子; 拿右叉子; 吃飯; 放左叉子; 放右叉子; P(amp。mutex)。 state[i]=THINKING。 test([i1]%5)。 test([i+1]%5)。 v(amp。mutex)。 } state[i]=THINKING。 s[i]=0。 } 第三章 進(jìn) 程 管 理 2020/11/17 86 IPC 經(jīng)典問(wèn)題 :有兩組并發(fā)進(jìn)程:讀者和寫(xiě)著共享一組數(shù)據(jù)區(qū)。 要求:允許多個(gè)讀者同時(shí)執(zhí)行讀操作 不允許讀者、寫(xiě)著同時(shí)操作(讀、寫(xiě)互斥) 不允許多個(gè)寫(xiě)者同時(shí)操作(只能一個(gè)寫(xiě)) 第二類(lèi):寫(xiě)者優(yōu)先策略 ? 多個(gè)讀者可以同時(shí)進(jìn)行讀。 ? 寫(xiě)者必須互斥(只允許一個(gè)寫(xiě)者寫(xiě),也并不允許讀者寫(xiě)者同 時(shí)進(jìn)行。 ? 讀、寫(xiě)者優(yōu)先于讀者(一旦有寫(xiě)者,則后續(xù)讀者必須等待, 喚醒時(shí)優(yōu)先考慮寫(xiě)者。 第三章 進(jìn) 程 管 理 2020/11/17 87 進(jìn)程的同步機(jī)制--管程 管程的提出 采用 ,對(duì)于共享變量及信號(hào)量變量的 操作將被分散在各個(gè)進(jìn)程中。 : 1. 易讀性差。由于信號(hào)量的操作是分散的,而要了解對(duì)于一組共享變量及信號(hào)量的操作是否正確,者必須通讀整個(gè)系統(tǒng)或者并發(fā)程序。 2. 不利于修改和維護(hù)。因?yàn)槌绦虻木植啃圆?,所以一組變量或一段代碼的修改都可能影響全局。 3. 正確性難以保證。因?yàn)?OS或并發(fā)程序通常很大,要保證這樣一個(gè)復(fù)雜的系統(tǒng)沒(méi)有邏輯錯(cuò)誤是很難的。 第三章 進(jìn) 程 管 理 2020/11/17 88 管程的定義:指關(guān)于共享資源的數(shù)據(jù)及在其上操作的一組過(guò)程或共享數(shù) 據(jù)結(jié)構(gòu)及其規(guī)定的所有操作。 系統(tǒng)按資源管理的觀(guān)點(diǎn)分解成若干模塊,用數(shù)據(jù)表示抽象系統(tǒng)資源, 同時(shí)分析了共享資源和專(zhuān)用資源在管理上的差別,按不同的管 理方 式定義模塊的類(lèi)型和結(jié)構(gòu),使同步操作相對(duì)集中,從而增加了模塊 的相對(duì)獨(dú)立性。 管程是相應(yīng)語(yǔ)言中的一個(gè)成分。 管程的形式 ? Type monitor_name=MONITOR。 ? 共享變量說(shuō)明; ? define 本管程內(nèi)所定義、本管程外可調(diào)用的過(guò)程(函數(shù))名字表。 ? Use 本管程外所定義、本管程內(nèi)可調(diào)用的過(guò)程(函數(shù))名字表。 第三章 進(jìn) 程 管 理 2020/11/17 89 Procedure 過(guò)程名(形參表); 過(guò)程局部變量說(shuō)明; BEGIN 語(yǔ)句序列; END。 FUNCTION 函數(shù)名(形參表):值類(lèi)型 函數(shù)局部變量說(shuō)明; BEGIN 語(yǔ)句序列; END。 BEGIN 共享變量初始化語(yǔ)句序列; END。 第三章 進(jìn) 程 管 理 2020/11/17 90 管程的 4個(gè)組成部分 ① 名稱(chēng) ② 數(shù)據(jù)結(jié)構(gòu)說(shuō)明 ③ 對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過(guò)程 /函數(shù) ④ 初始化語(yǔ)句 管程的 3個(gè)主要特征 ① 模塊化,一個(gè)管程是一個(gè)基本程序執(zhí)行單位,可以單獨(dú)編譯。 ② 抽象數(shù)據(jù)類(lèi)型,管程是一種特殊的數(shù)據(jù)類(lèi)型,其中不僅有數(shù)據(jù),而且還有對(duì)數(shù)據(jù)進(jìn)行操作的代碼。 ③ 信息掩蔽,管程是半透明的,管程中的外部過(guò)程(函數(shù))實(shí)現(xiàn)了某些功能,管程中的內(nèi)部過(guò)程(函數(shù))實(shí)現(xiàn)了某些功能,至于這些功能是怎樣實(shí)現(xiàn)的,在其外部是不可見(jiàn)的。 第三章 進(jìn) 程 管 理 2020/11/17 91 管程的 3個(gè)要素 ① 管程中的共享變量在管程外部是不可見(jiàn)的,外部只能通過(guò)調(diào)用管程中所說(shuō)的外部過(guò)程(函數(shù))來(lái)間接地訪(fǎng)問(wèn)管程中的共享變量。 ② 為了保證管程共享變量的數(shù)據(jù)完整性,規(guī)定管程互斥進(jìn)入。 ③ 管程通常是用來(lái)管理資源的,因而在管程中應(yīng)當(dāng)設(shè)有進(jìn)程等待隊(duì)列以及相應(yīng)的等待和喚醒操作。 問(wèn)題:多個(gè)進(jìn)程出現(xiàn)在管程中 當(dāng)一個(gè)進(jìn)入管程的進(jìn)程執(zhí)行等待操作時(shí),它應(yīng)當(dāng)釋放管程的互斥 權(quán);當(dāng)一個(gè)進(jìn)入管程的進(jìn)程執(zhí)行喚醒操作時(shí),管程中便存在兩個(gè)同 時(shí)處于活動(dòng)狀態(tài)的進(jìn)程。 第三章 進(jìn) 程 管 理 2020/11/17 92 處理方法有三種: ① P等待, Q繼續(xù),直到 Q退出或等待 ② Q等待, P繼續(xù),直到 P等待或退出 ③ 規(guī)定喚醒為管程中最后一個(gè)可執(zhí)行的操作 由于管程是互斥進(jìn)入的,所以當(dāng)一個(gè)進(jìn)程試圖進(jìn)入一個(gè)已被占用的管程時(shí),它應(yīng)當(dāng)在管程的入口處等待,因而在管程的入口處應(yīng)當(dāng)有一個(gè)進(jìn)程等待隊(duì)列,稱(chēng)為入口等待隊(duì)列。 如果進(jìn)程 P喚醒進(jìn)程 Q,則 P等待 Q繼續(xù)。如果進(jìn)程 Q在執(zhí)行時(shí)又喚醒進(jìn)程R,則 Q等待 R執(zhí)行 ...,如此,在管程內(nèi)部,由于執(zhí)行喚醒操作,可能會(huì)出現(xiàn)多個(gè)等待進(jìn)程,因而還需要有一個(gè)進(jìn)程等待隊(duì)列,這個(gè)等待隊(duì)列被稱(chēng)為緊急等待隊(duì)列。它的優(yōu)先級(jí)應(yīng)該高于入口等待隊(duì)列的優(yōu)先級(jí)。 第三章 進(jìn) 程 管 理 2020/11/17 93 由于管程通常是用于管理資源的,因而在管程內(nèi)部,應(yīng)當(dāng)存在某種 等待機(jī)制。當(dāng)進(jìn)入管程的進(jìn)程因資源被占用等原因不能繼續(xù)運(yùn)行時(shí) 使其等待。為此在管程內(nèi)部可以說(shuō)明和使用一種特殊類(lèi)型的變量, 稱(chēng)作條件變量。 對(duì)于條件型變量,可以執(zhí)行 wait和 signal操作。 ① Wait( c):如果緊急等待隊(duì)列非空,則喚醒第一個(gè)等待者。否則釋放管程的互斥權(quán),執(zhí)行此操作的進(jìn)程的 PCB入 C鏈尾部。 ② Signal(c):如果 C鏈為空,則相當(dāng)于空操作,執(zhí)行此操作的進(jìn)程繼續(xù);否則喚醒第一個(gè)等待者,執(zhí)行此操作的進(jìn)程的 PCB入緊急等待隊(duì)列的尾部。 第三章 進(jìn) 程 管 理 2020/11/17 94 例 : 用 管程的實(shí)現(xiàn) ? 直接構(gòu)造(效率高) ? 間接構(gòu)造,即用某種已經(jīng)實(shí)現(xiàn)的同步機(jī)制來(lái)構(gòu)造 Type one_instance=RECORD mutex:semaphore(初值為 1) urgent:semaphore(初值為 0) urgent_count:int (初值為 0) Type monitor_elements=MODULE。 define enter,leave,wait,signal。 第三章 進(jìn) 程 管 理 2020/11/17 95 Procedure enter(VAR instance:one_instance)。 BEGIN P()。 END。 第三章 進(jìn) 程 管 理 2020/11/17 96 Procedure leave(VAR instance:one_instance)。 BEGIN if (0) then BEGIN 。 V()。 END else V()。 END。 第三章 進(jìn) 程 管 理 2020/11/17 97 Procedure wait(VAR instance:one_instance。VAR s: semaphore。VAR count:integer)。 BEGIN count ++。 if (0) then BEGIN 。 V()。 END else V()。 P(s)。 END。 第三章 進(jìn) 程 管 理 2020/11/17 98 Procedure signal(VAR instance:one_instance。VAR s: semaphore。VAR count:integer)。 BEGIN if (count0) then BEGIN count 。 ++。 V(s)。 P()。 END END。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1