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

正文內(nèi)容

第二章進程及作業(yè)管理-文庫吧資料

2024-10-06 14:02本頁面
  

【正文】 理 1.臨界區(qū)的互斥 利用信號量可方便地實現(xiàn)臨界區(qū)的互斥執(zhí)行。 ≤0表示該類資源已不能供分配,因此請求資源的進程將被阻塞在等待隊列 ,此時 程數(shù)。0表示某類資源的當前可用數(shù)。 var s:psem。 begin :=。于是 P、 V操作可分別描述為: 第二章 進程及作業(yè)管理 procedure p ( s ) 。 qucue: pointer to WQ。 第二章 進程及作業(yè)管理 (2)讓權等待方式的 P、 V操作。 當一進程在值不大于 0的信號量 s上執(zhí)行 P操作時,將在循環(huán)語句 while上陷入忙等待,直到其他進程在該信號量 s上執(zhí)行 V操作后,解除它的等待。 P(s) :while s≤ 0 do skip。另外,在具體實現(xiàn)時通常要對 Dijkstra的原定義進行改進。在單機系統(tǒng)中普遍采用讓權等待方式。在忙等待方式下,被阻塞進程在不主動放棄處理機的情況下忙碌等待著其他進程來喚醒它,顯然這不利于處理機的有效利用。 第二章 進程及作業(yè)管理 信號量和 P、 V操作原語可構成“阻塞 喚醒”同步機構:當一個進程對值為 0的信號量執(zhí)行 P操作時便被阻塞以等待某個事件的出現(xiàn);在另一進程檢測到該事件發(fā)生時,通過執(zhí)行 V操作喚醒被阻塞的進程。把信號量 s上的 P操作 P(s)定義為:若 s0,則 s值減 1,否則執(zhí)行進程等待,直到其他進程對 s進行 V操作。 … end 第二章 進程及作業(yè)管理 2.信號量和 P、 V操作 荷蘭的著名計算機科學家 Dijkstra把互斥的關鍵含義抽象成信號量 (semaphore)概念,并引入在信號量上的 P、 V操作作為同步原語 (P和 V分別是荷蘭文的“等待”和“發(fā)信號”兩詞的首字母 )。 CS。 (1 ′ CS (臨界區(qū) ) lock:=false。 begin … key:=true。 其方法是為每個臨界資源設置一個布爾變量 lock(鎖 ),其初值為 falsc,當 lock值為 false表示鎖打開,臨界資源未被使用,進程可進入臨界區(qū);反之則表示鎖關閉,進程不能進入。 begin TS:=b。 a:=b。 var temp:boolean。許多計算機中都提供了這種指令,在 IBM 370中稱 TS指令,在 Z 8000中稱 TSET指令,在 Intel 8086/8088中稱 XCHG指令。 第二章 進程及作業(yè)管理 系統(tǒng)的同步機構對解決臨界區(qū)互斥問題應遵循下述準則: (1)當無一進程處于臨界區(qū)內(nèi)時,若有一進程要求進入臨界區(qū),應讓其立即進入 (2)當已有進程在臨界區(qū)內(nèi)時,其他欲進入臨界區(qū)的進程必須等待 (3)當無一進程處于臨界區(qū),而同時有多個進程要求進入臨界區(qū),且僅讓其中之一進入,其他則等待 (4)任一進程進入臨界區(qū)的要求應在有限時間滿足 有限等 (5)處于等待進入臨界區(qū)的進程應放棄占用 CPU讓權等待。例如,進程 A和 B共享一個公共變量 count,都要對 count執(zhí)行“ count:=count+1”操作,但是在許多計算機上完成這一 LD R1, count INC R1 LD count, R1 第二章 進程及作業(yè)管理 由于進程 A和 B異步前進,故 A、 B中相同的這個指令串 A:LD R1,count A:INC R1 B:LD R1,count A:LD count,R1 B:INC R1 B:LD count,R1 count經(jīng) A、 B訪問后,只加了 1,而不是所希望的 2。 第二章 進程及作業(yè)管理 許多物理設備都屬于臨界資源,如輸入機、打印機、磁帶機等。換言之,若有一進程正在使用某臨界資源,那么其他欲使用該資源的進程必須等待,只有當占有者釋放后,其他進程才能使用。故在廣義上,互斥是一種特殊的同步。因此,可把它們歸結為:并發(fā)進程在執(zhí)行時序上的相互制約關系。 第二章 進程及作業(yè)管理 167。 insert(RQ,i)。 :=if = ′waited ′ then ′ready ′ else ′readys ′。 end procedure wakeup(q)。 EXE:=NIL。 :=q。 begin save(EXE)。 當現(xiàn)行進程需要等待某個事件時, 可調(diào)用 block原語使自己加入到該事件的等待隊列中,調(diào)用參數(shù)為等待隊列指針。 end。 :=if = ′readys ′then ′ready ′ else ′waited ′。 end。 end。 if add=NIL then begin memrelease(,)。 filestate(,add,size)。 swapin(,add)。 begin memallocate(,add)。進程實體中的執(zhí)行程序并未被復制到交換區(qū),因為執(zhí)行程序文件尚在外存并未被撤銷,但仍要回收它所占用的內(nèi)存空間 (若它未被其它進程共享 ),這樣做的好處是減少了交換時間。 end。 close(,t)。 :=add。 begin :=if = ′ready ′then ′readys ′ else ′waiteds ′。本原語可遞歸調(diào)用, 第二章 進程及作業(yè)管理 掛起與激活 掛起原語 suspend和激活原語 activate的調(diào)用參數(shù)均為進程內(nèi)部號。 end。 resrelease(i)。 close(,t)。 end。 findchild(i,child)。 begin if ′ stop′ then remove(,i)。 end。 EXE:=NIL。pleted39。stop39。停止原語 halt的大致描述如下: procedure halt。如果建立失敗,則返回 NIL。EXE是執(zhí)行態(tài)進程的 PCB指針,本原語由執(zhí)行態(tài)進程調(diào)用,故執(zhí)行態(tài)進程就是新進程的父進程。過程 insert(RQ,i)將新進程插入就緒隊列 RQ。過程 filestate檢查指定文件的存貯狀態(tài),若該文件駐在內(nèi)存,則返回其內(nèi)存區(qū)地址 add及長度 size,同時將該文件的共享計數(shù)加 1,這表明新進程將與其它進程共享一個純代碼程序;否則打開該文件,返回文件長度 size,add=NIL。過程 memrelease和 pcbrelease分別釋放指定內(nèi)存區(qū)和 PCB。 第二章 進程及作業(yè)管理 調(diào)用參數(shù)說明如下: pn為新進程的外部名; res為新進程的初始資源,如終端、父進程的打開文件表等; pri為新進程的初始優(yōu)先數(shù); fn為新進程的執(zhí)行程序文本之文件名; args是 fn 第二章 進程及作業(yè)管理 過程 getfreepcb從 PCB集中獲取一個空閑 PCB,返回值 i為PCB號。 return(i)。 insert(RQ,i)。ready39。 :=+1。 :=0。 :=fn。
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1