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

正文內容

操作系統(tǒng)chapter(4)(編輯修改稿)

2025-01-30 02:55 本頁面
 

【文章內容簡介】 程撤消的系統(tǒng)調用是: kill 2 進程終止過程 ? 1 根據被終止進程的 標識符 ,從 PCB集合中 檢索出該進程的 PCB,從中 讀出 該 進程的狀態(tài) ? 2 若被終止進程處于 執(zhí)行態(tài) ,應立即 終止該進程的執(zhí)行 ,并設置 調度標志為真 ,然后 再選擇一個進程,分配處理機 給它。 ? 3 如果該進程 還有子孫進程 ,還應將它的 所有子孫進程終止 ,以防它們成為不可控的。 ? 4 將該進程所擁有的 全部資源 ,或者 歸還 給它的 父進程 ,或者歸還給 系統(tǒng) 。 ? 5 將 被終止進程( PCB)從所在隊列中 移出 。 入口 返回 查進程鏈表或進程家族 有此 PCB嗎? 該 PCB有子進程嗎? 釋放該進程所占有的資源 釋放該 PCB結構本身 出錯處理 有 無 有 無 進程的阻塞 1. 引起進程阻塞和喚醒的事件 ? 1) 請求系統(tǒng)服務 :正在執(zhí)行的程序 請求操作系統(tǒng)服務 ,但是由于某種原因操作系統(tǒng)沒有立即滿足 該進程的要求,該進程只能轉變?yōu)樽枞麪顟B(tài) 來等待。 ? 2) 啟動某操作 :當進程啟動某種操作后,如果該進程必須在該操作完成之后才能繼續(xù)執(zhí)行,則 必須先 使 進程阻塞 。 1. 引起進程阻塞和喚醒的事件 ? 3) 新數據尚未到達: ? 對于相互 合作的進程 ,如果其中一個進程需要先獲得另一 (合作 )進程提供的數據后才能對數據進行處理,則只要其所需 數據尚未到達 ,該進程只有阻塞。 ? 4) 無新工作可做 :系統(tǒng)往往設置一些 具有某特定功能 的系統(tǒng)進程,每當這種進程完成任務以后 便把自己阻塞 起來等待新任務的到來。(發(fā)送進程) 2.進程阻塞過程 ? 進程通過 調用阻塞原語把自己阻塞 起來。進程的阻塞是進程自身的一種 主動行為 。進入阻塞過程后,由于此時該進程還處于執(zhí)行狀態(tài),所以應先立即 停止執(zhí)行 ,把進程控制塊中的現行狀態(tài)由 “ 執(zhí)行 ”改為 “ 阻塞 ” ,并將它 插入到阻塞隊列 。然后,轉調度程序進行重新調度,將處理機分配給另一就緒進程,并進行切換。 入口 將現行進程的 CPU信息送 該進程的 PCB現場保護區(qū) 置該進程狀態(tài)為“等待” 把該進程插入相應的等待隊列 轉進程調度 阻塞原語執(zhí)行過程 3.進程喚醒過程 ? 進程 所等待的事件發(fā)生 時,則調用喚醒原語wakeup( ),將等待該事件的 進程喚醒 。一個處于阻塞狀態(tài)的進程不可能自己喚醒自己。喚醒一個進程有兩種方法: ? ( 1)由系統(tǒng)進程喚醒。系統(tǒng)進程統(tǒng)一控制事件的發(fā)生并將 “ 事件發(fā)生 ” 這一消息通知等待進程。 ? ( 2)由事件發(fā)生進程喚醒。事件發(fā)生進程和被喚醒進程之間是合作關系。 3.進程喚醒過程 ? 喚醒原語執(zhí)行的過程是 :首先把 被阻塞進程 從等待該事件的 阻塞隊列 中 移出 ,將其 PCB中的 阻塞狀態(tài) 改為 就緒狀態(tài) ,然后把該進程 插入 到 就緒隊列 中。然后喚醒原語既可以返回原調用程序,也可以轉向進程調度。 3.進程喚醒過程 ? 阻塞原語 和 喚醒原語 是一對作用剛好相反的原語。因此,如果在某進程中調用了阻塞原語,則必須在與之相合作的另一進程或其它相關進程中,調用喚醒原語來喚醒阻塞進程,否則,該阻塞進程將會因不能被喚醒而長久地處于阻塞狀態(tài),從而再無機會運行。 入口 將被喚醒進程從相 應的等待隊列中移出 將被喚醒進程置為就緒狀態(tài) 將被喚醒進程送入就緒隊列 轉進程調度 喚醒原語執(zhí)行過程 進程的掛起與激活 ? ? 當出現了 引起進程掛起的事件 時, 用戶請求 將自己掛起,或者 父進程 請求掛起自己的子進程,應該利用掛起原語 suspend( ) ? 掛起的實現方式有多種: ? ( 1)把發(fā)出掛起原語的進程自身掛起。 ? ( 2)掛起具有指定標識名的進程。 ? ( 3)把某進程及其全部或部分(例如具有指定優(yōu)先數的)子孫進程掛起。 ? 掛起原語的主要操作過程: ? 以被掛起的進程標識名為索引,到 PCB集合中查找該進程的 PCB,并檢查該進程的狀態(tài): ? ( 1)若狀態(tài)為 執(zhí)行 ,則中斷處理機,把狀態(tài)改為 掛起就緒 。 ? ( 2)若狀態(tài)為 阻塞 ,則改為 掛起阻塞 ; ? ( 3)若狀態(tài)為 就緒 ,則改為 掛起就緒 ; ? 注意:被掛起進程 PCB的非常駐部分要交換到磁盤交換區(qū) 2.進程的激活過程 ? 進程的激活過程 :當發(fā)生激活事件后,系統(tǒng)利用激活原語 Active( )將指定進程激活。激活原語先將進程 從外存 調入 內存 ,然后 檢查進程的狀態(tài) 。 ? 靜止就緒 活動就緒 ? 靜止阻塞 活動阻塞 進程的同步 ? 在多道程序系統(tǒng)中,由于資源共享或進程合作,使進程間形成間接相互制約和直接相互制約關系,這需要用進程互斥與同步機制來協(xié)調兩種制約關系。 ? 進程同步的主要任務是使并發(fā)執(zhí)行的進程間有效的共享資源和相互合作 . ? 進程的同步機制 ── 信號量及 (解決進程同步互斥問題) 直接作用 (相互合作): 指系統(tǒng)中多個進程中發(fā)生的事件存在某種時序關系,需要相互合作,共同完成一項任務,直接作用只發(fā)生在相交進程間 間接作用 (資源共享): 由于各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源, ,是無意識安排的,可發(fā)生在相交進程之間,也可發(fā)生在無關進程之間 1.兩種形式的制約關系 與時間有關的錯誤 進程執(zhí)行的速度不能由自己來控制,對于有交往的并發(fā)進程來說 ,可能有若干并發(fā)進程同時使用 共享資源 ,即一個進程使用未結束 ,另一個進程已開始使用 ,形成交替使用共享資源的現象 . 如果對這種情況不加控制 ,就可能出現與時間有關的錯誤 ,在共享資源 (變量 )時就會出錯 ,就會得到不正確的結果 . 與時間有關的錯誤 ? 例 1 飛機售票問題 ? 假設一個飛機訂票系統(tǒng)有兩個終端 ,分別運行進程 T1和 據區(qū)中的一些單元 Aj(j=1,2,… .)分別存放某月某日某次航班的余票數 ,而 X1和X2表示進程 T1和 T2執(zhí)行時所用的工作單元 . 飛機售票程序如下 : procedure Ti(i=1,2,… .) Xi:integer。 begin {按旅客訂票要求找到 Aj] Xi:=Aj。 if Xi=1 then begin Xi:=Xi1。 Ai:=Xi。 [輸出一張票 ]。 end。 else[輸出信息 “ 票已售完 ” ] end。 由于 T1和 T2是兩個可同時執(zhí)行的并發(fā)進程 ,它們在同一個計算機系統(tǒng)中運行 ,共享同一批票源數據 ,因此 ,可能出現如下所示的運行情況(Aj=m). T1: X1:=Aj。 即 X1=m(m0) T2: X2:=Aj。 即 X2=m T2: X2:=X21。Aj:=X2。[輸出一張票 ]。即 Aj=m1 T1: X1:=X11。Aj:=X1。[輸出一張票 ]。即 Aj=m1 此時出現了把同一張票賣給了兩位旅客的情況 ,兩位旅客都買到一張同天同次航班的機票 ,可是 Aj的值實際上只減去了 1,造成余票數的不正確 . 例 2 主存管理問題 假定有兩個并發(fā)進程 borrow和 return分別負責申請和歸還主存資源 ,算法描述中 ,X表示現有空閑主存總量 ,B表示申請或歸還的主存量 .并發(fā)進程算法描述如下 : X:integer。 X:=1000。 cobegin procedure borrow(B:integer) begin if BX then[申請進程進入等待隊列等待主存資源 ] X:=XB。 [修改主存分配表 ,申請進程獲得主存資源 ] 例 2 主存管理問題 end。 procedure return(B:integer) begin X:=X+B。 [修改主存分配表 ]。 [釋放等主存資源的進程 ]。 end。 coend。 總結 :由于并發(fā)進程執(zhí)行的隨機性 ,一個進程對另一個進程的影響是不可預測的 .由于它們共享了資源 (變量 ),因此當在不同時刻交替訪問資源 (變量 )時可能造成結果的不正確 . 2. 臨界資源 系統(tǒng)中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源或共享變量 ? 硬臨界資源 :打印機、輸入機、磁帶機等 ? 軟臨界資源 :多個進程共享的變量、數據、表格、隊列等 程序 段 1 程序 段 2 程序 段 n共 享 變量? 臨界區(qū) (互斥區(qū) ): ? 每個進程中訪問臨界資源的那段程序段稱為臨界區(qū)(critical section)。 3.臨界區(qū) 3.臨界區(qū) ? 為保證對臨界資源的互斥使用,在使用臨界資源之前應先申請、判斷。 ? 一個訪問臨界資源的循環(huán)進程應為如下結構 ? While (1) ? { entry section。 //進入區(qū) ? critical section。 //臨界區(qū) ? exit section。 //退出區(qū) ? remainder section。 //剩余區(qū) ? }。 互斥 ? 互斥 –––多個進程需要訪問一個不可共享資源時 , 任何時候只能允許一個訪問這個資源。即不允許兩個以上的共享某資源的并發(fā)進程同時進入臨界區(qū)。 ? 互斥關系是一種間接制約關系, “ 間接 ”表示并發(fā)進程之間受共享資源的制約,而不是進程間直接制約的意思?;コ膺M程的執(zhí)行順序可以是任意的。 同步 ? 與 “ 間接制約 ” 不同,計算進程與打印進程之間的關系是一種 “ 直接制約 ” 關系。 ? 同步 –––指兩個事件的發(fā)生有著某種時序上的關系 (先,后 )。 ? 同步關系 是一種 直接制約關系 ,具有同步關系的一組并發(fā)進程的執(zhí)行順序不是任意的。稱為合作進程。 4.同步機制應遵循的規(guī)則 ? 空閑讓進: 當無進程在互斥區(qū)時,任何有權使用互斥區(qū)的進程可進入 ? 忙則等待: 不允許兩個以上的進程同時進入互斥區(qū) ? 有限等待: 任何進入互斥區(qū)的要求應在有限的時間內得到滿足 ? 讓權等待: 處于等待狀態(tài)的進程應放棄占用 CPU,以使其他進程有機會得到 CPU的使用權 鎖和上鎖、開鎖操作 ? 解決進程互斥的最簡單的辦法是加鎖 。 ? 在系統(tǒng)中為 每個臨界資源設置一個鎖位 , ? 0 表示資源可用 , ? 1 表示資源已被占用 ( 不可用 ) 。 ? 這樣當一個進程使用臨界資源之前必須完成下列操作: ? 考察鎖位的值; ? 若原來的值為 “ 0‖, 將鎖位置為 “ 1‖ ; ? 若原來值是為 “ 1‖ , 則轉到 1。 ? 當進程使用完資源后 , 將鎖位置為 “ 0―, 稱為開鎖操作 。 用上鎖原語和開鎖原語實現互斥 ? 假設有兩個進程共享打 ? 印機,兩個進程中使用 ? 打印機的程序段為臨界 ? 區(qū)。 ? 為保證打印的正確,設 ? 置打印機的鎖位 print, ? 其初值為 “ 0‖,表示 ? 打印機可。 信號量機制 ? 我們看到了解決互斥問題的方法,但這些方法都不夠靈活,也不方便,效率低,存在不公平現象。于是人們從交叉路口的交通管理中使用的信號燈上得到啟發(fā),通過信號燈的狀態(tài) (或顏色 )實現交通管理。 ? 操作系統(tǒng)中引進信號燈 (通常人們叫信號量 )的概念既可用來解決同步問題,也可解決互斥問題。 信號量機制 ? 信號量機制是 1965年,由荷蘭計算機科學家 Dijkstra提出的同步方法。 ? 信號量: 除初始化外 ,僅能由同步原語對其進行操作的整型變量。 ? 同步原語: P/wait操作; ? V/signal操作; ? 信號量機制目前已經發(fā)展成多種類型,主要有:整型、記錄型、 AND型和信號量集機制。 1.整型信號量 ? 整型信號量定義為一個用于表示資源數目的整型量 S,它與一般整型量不同,除初始化外,僅能通過兩個標準的原子操作wait(S)和 signal(S)來訪問。 ? Wait(S)和 signal(S)操作可描述為: ? wait(S): while S=0 do noop; ? S:=S1; ? signal(S): S:=S+1; 信號量的物理意義 ? wai
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1