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

正文內(nèi)容

第三章進程管理-1-資料下載頁

2025-10-02 21:52本頁面

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

  

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