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

正文內容

進程管理經典培訓講義-免費閱讀

2025-07-06 09:57 上一頁面

下一頁面
  

【正文】 if (writecount ==1) P(rsem)。 V(rsem); V(wr)。 寫者優(yōu)先 : int readcount, writecount。 注意:如果一個寫者已進入臨界區(qū)且有 n 個讀者要求訪問該數據對象,則只有一個讀者進入 wsem 等待隊列,其余 n1 個讀者則進入 mutex等待隊列。 readcount。解決這類同步問題的基本思想是:任一寫者必須與其它寫者或讀者互斥訪問可共享的數據對象,而若干讀者可同時訪問共享的數據對象。 } } void consumer( ) { while⑴ { PC. get(item)。 if 。 生產者消費者問題之管程解決: monitor PC。 semaphore mutex=1, empty=n, full=0; int i=j=0; item buffer [n]。生產者與消費者可以通過一個環(huán)形緩沖池(見圖 11)聯(lián)系起來,環(huán)形緩沖池由幾個大小相等的緩沖塊組成,每個緩沖塊容納一個產品。 此外,當一進程進入管程執(zhí)行管程的某個過程時,如果因某種原因而被阻塞,應立即退出該管程,進入等待狀態(tài),否則就會因阻擋其它進程進入該管程,而它本身又無法執(zhí)行造成死鎖。管程的基本思想是:把分散在各進程中的控制和管理臨界資源的臨界區(qū)集中起來統(tǒng)一管理。 如果 P2進程先執(zhí)行,則由于 S2的初值是 0,表示緩沖區(qū)中無數據可取,執(zhí)行 P(S2)操作時,使 P2進程被阻塞掛到等待隊列上,等待緩沖區(qū)中數據的到達。用信號量和 P/V操作實現(xiàn)進程互斥與同步的代碼結構為: P( S); 臨界區(qū); V( S); 例如,有兩個進程 A和 B, A進程向隊列加入一項, B 進程從該隊列中移出一項。并且這兩個操作均屬于原子操作,不可被中斷。 通過以上分析,可以給出關鎖和開鎖原語的描述: 關鎖原語 lock(X) { L: if x==1 go to L else x=1。實際上,進程互斥可以看作是進程同步的一種特例。amp。 while( flag[1]amp。 flag[1] = false。 flag[0]= false。因此,它會進入忙等待循環(huán)。 ? 可用于支持多個臨界區(qū)。 while (keyi != 0) exchange (keyi, bolt)。 temp=memory。由于整個 testset函數自動整體執(zhí)行,就是說它不服從于任何中斷,故可實現(xiàn)進程互斥。 ② 專用的機器指令 CPU 的設計者提供了一些硬件指令,用于保證幾個動作的原子性。 由于對臨界資源的使用必須互斥進行,所以進程在進入臨界區(qū)時,首先判斷是否有其它進程在使用該臨界資源,如果有,則該進程必須等待,如果沒有,該進程才能進入臨界區(qū),執(zhí)行臨界區(qū)代碼,同時,關閉臨界區(qū),以防其它進程進入。 臨界資源與臨界區(qū) 系統(tǒng)中同時存在有許多進程,它們共享各種資源,然而有許多資源在某一時刻只能允許一個進程使用。喚醒原語的基本功能是:把除了 CPU之外的一切資源都得到滿足的進程置成就緒狀態(tài)。 撤銷進程原語 進程完成了其“歷史使命”之后,應當退出系統(tǒng)而消亡,系統(tǒng)及時收回它占有的全部資源以便其它進程使用,這是通過撤銷原語完成的。所以,這些操作可以用原語來實現(xiàn)。無論是系統(tǒng)進程還是用戶進程,對核心層來說它們都是基本的活動單位。進程是操作系統(tǒng)進行調度和分配資源的獨立單 位。而程序是一組有序靜態(tài)指令和數據的集合,用來指示 CPU 的操作,本身并不具有運動含義,是一種靜態(tài)概念。 ② 鏈接表方式:系統(tǒng)按照進程的狀態(tài)將進程的 PCB 鏈接成隊列,從而形成就緒隊列、阻塞隊列、運行隊列等。 ⑦ 隊列指針或鏈接字。 ④ 進程的優(yōu)先級。為了標識系統(tǒng)中的各個進程,每個進程必須有惟一的標識名或標識數。 ④ 靜止阻塞→活動阻塞。另外當有終端用戶請求、父進程請求、負荷調節(jié)需要等情況時,也要用到掛起狀態(tài)。僅當進程調度程序把 CPU 再次分配給它時,才可恢復曾被中斷的現(xiàn)場繼續(xù)運行。進程調度程序根據調度算法把 CPU 分配給某個就緒進程,建立該進程運行狀態(tài)標記,并把控制轉到該進程,把它由就緒狀態(tài)變?yōu)檫\行狀態(tài),這樣進程就投入運行。 ③ 就緒狀態(tài)。由于進程執(zhí)行時的間斷性,決定了進程可能具 有多種狀態(tài)。但是,迄今為止,對這一概念尚無一個非常確切的、令人滿意的、統(tǒng)一的定義,不同的人,站在不同的角度,對進程進行了不同的描述,下面列舉幾個操作系統(tǒng)的權威人士對“ 進程”所下的定義: ① 行為的一個規(guī)則叫做程序,程序在 CPU上執(zhí)行時所發(fā)生的活動稱為進程( Dijkstra)。因此,必須從變化的角度,動態(tài)地分析研究這些可以并發(fā)執(zhí)行的程序段,真實地反映出系統(tǒng)的獨立性、并發(fā) 性、動態(tài)性和相互制約性。程序之間的 制約關系有兩種:直接制約關系和間接制約關系。通常把計算機執(zhí)行程序的活動,稱為“計算”,顯 然,“計算”是一個動態(tài)的概念。 int n=0。這說明有些操作必須在其它操作之后執(zhí)行,另外有些操作卻可以并行地執(zhí)行。這給程序的調試帶來了很大的方便。程序在執(zhí)行過程中,獨占全部資源,除了初始狀態(tài)外,只有程序本身規(guī)定的動作才能改變這些資源的狀態(tài)。 假設系統(tǒng)中有 2個程序,而每個程序都由三個程序段 I、C、 P 組成,其中, I 表示從輸入機上讀入程序的信息, C 表示執(zhí)行程序的計算過程, P 表示在打印機上打印出程序的計算結果。因此,邏輯上的并行稱為“并發(fā)”。 1 進程的概念 程序的并發(fā)執(zhí)行 現(xiàn)在所有的計算機都能同時做幾件事情。在我們使用計算機運行程序的時候,時常會一邊聽著光盤上的音樂,一邊從網上下載著軟件,一邊還編輯著文本文件。 程序的并發(fā)執(zhí)行是在多道程序環(huán)境下完成的,而在單道程序工作環(huán)境中,程序是順序執(zhí)行的。在單道環(huán)境下,每一程序的這三個程序只能是一個接一個地順序執(zhí)行,也就是輸入、計算和打印三者串行工作,并且前一個程序結束后,才能執(zhí)行下一個程序。 ③ 結果無關性。 程序的并發(fā)執(zhí)行及其特性 現(xiàn)代計算機在 物理 設 計和邏輯設計中采用并行操作技術,使多種硬件設備能并行工作。此外從圖中可以看出: I2 與 Cl、 I3 與 C2 與 P I4 與 C3 與 中國最大的管理資源中心 30 P2是重疊的。 void observer(void) { while (1) { ? n=n+1; remainder of observer; } } void reporter(void) { while(TRUE) { ? print(n); n=0; remainder of reporter; } } void main( ) 中國最大的管理資源中心 31 { parbegin(observer( ),reporter( ))。如前所述,程序在順序執(zhí)行時,程序和“計算”之間保持一一對應的關系,但在并發(fā)執(zhí)行時,一個并發(fā)程序可為多個用戶作業(yè)調用,而使該程序處于多個“執(zhí)行”過程中,從而形成了多個“計算”,這就是說,多個“計算’可能是在不同數據集上執(zhí)行同一程序,所以程序和“計算”不再一一對應。 ① 直接制約關系通常是在彼此之間有邏輯關系的兩個并發(fā)執(zhí)行的程序之間發(fā)生的,一般是由于各個程序段要求共享信息引起的。為了準確地描述程序的執(zhí)行過程,設計出高質量的操作系統(tǒng),就不能再用靜態(tài)的觀點,而應該用動態(tài)的觀點來刻畫程序。 中國最大的管理資源中心 33 ② 一個進程是一系列逐一執(zhí)行的操作,而操作的確切含義則有賴于我們以何種詳盡程度來描述進程( )。運行中的進程具有三種基本狀態(tài):運行、阻塞、就緒,這三種狀態(tài)構成了最簡單的進程生命周期模型,進程在其生命周期內處于這三種狀態(tài)之一,其狀態(tài)將隨著自身的推進和外界環(huán)境的變化而變化,由一種狀態(tài)變遷到另一種狀態(tài)。等待 CPU 的狀態(tài)。即就緒狀態(tài)的進程,一旦被調度進程選中,獲 得 CPU,便發(fā)生此 狀態(tài) 變遷。即阻塞進程的 I/O請求完成時,發(fā)生此狀態(tài)變遷。 引入掛起狀態(tài)后,又將增加從掛起狀態(tài)(又稱為靜止狀態(tài))到非掛起狀態(tài)(又稱為活動狀態(tài))的轉換:或者相反。處于靜止阻塞狀態(tài)的進程,若用激活原語激活后,該進程將轉變?yōu)榛顒幼枞麪顟B(tài)。進程標識名,通常用字母和數字組成的“串”表示,進程標識數則是在一定數值范圍內的進程編號。一般根據進程的輕重緩急程度為進程指定一個優(yōu)先級,優(yōu)先級用優(yōu)先數表示。它用于將處于同一狀態(tài)的進程鏈接成一個隊列,在該單元中存放下一進程 PCB首址。按鏈接方式組織 PCB的情況如圖 6。 ② 進程具有并發(fā)性。 ⑤ 進程具有異步性(不確定性)。 2 進程控制 進程有由創(chuàng)建而產生,由調度而執(zhí)行,由撤銷而消亡的生命周期,因此操作系統(tǒng)要有對進程生命周期的各個環(huán)節(jié)進行控制的功能,這就是進程控制。 原語是操作系統(tǒng)核心(不是由進程而是由一組程序模塊所組成)的一個組成部分,并且常駐內存,通常在管態(tài)下執(zhí)行。撤銷原語的實現(xiàn)過程是:根據提供的欲被撤銷進程的名字,在 PCB 鏈中查找對應的 PCB,若找不到要撤銷的進程的名字或該進程尚未停止,則轉入異常終止處理程序,否則從 PCB 鏈中撤銷該進程及其所有子孫進程 (因為僅撤銷該進程 可能導致其子進程與進程家族隔離開來,而成為難以控制的進程 );檢查此進程是否有等待讀取的消息,有則釋放所有緩沖區(qū),最后釋放該進程的工作空間和 PCB 空間,以及其它資源。執(zhí)行時,首先找到被喚醒進程的 內部標識 ,讓該進程脫離阻塞隊列,將現(xiàn)行狀態(tài)改變?yōu)榫途w狀態(tài),然后插入就緒隊列等待調度運行。例如打印機、磁帶機等硬件設備和變量、隊列等數據結構,如果有多個進程同時去使用這類資源就會造成混亂。當進程用完臨界資源時,要開放臨界區(qū),以便其它進程進入。這幾個動作在一個指令周期中執(zhí)行,不會受到其它指令的干擾。 用 testset指令實現(xiàn)互斥舉例: const int n = / * 進程數 * / int bolt。 memory=register。 臨界區(qū) exchange (keyi, bolt)。 ② 缺點: ? 使用了忙等待。但是,由于 P1比 P2的優(yōu)先級低,它將永遠不會被調度執(zhí)行。 其余部分 } } void P1( ) { while (true) { flag [1]= true。 parbegin(P0( ) , P1( ))。amp。 turn==0) /*什么也不做 */。 這里介紹三種同步機制:鎖、信號量和管程。 } 開鎖原語 unlock(X): { X=0; } 值得注意的是,在檢查 X 的值和置 X 為 1(關鎖 )這兩步之間, X 值不能被其它進程所改變。 P 操作原語定義如下: P( S) { S。為了不使隊列指針指向錯誤位置,需要嚴格限制一次只能有一個進程存取該隊列元素。只有當 P1進程執(zhí)行了 V (S2)后,才能喚醒 P2 進程。這樣既便于系統(tǒng)管理共享資源,又能保證互斥訪問。為此,引入了條件 (condition)變量及其操作的概念。每個生產者可不斷地每次往緩沖池中送一個生產的產品,而每個消費者則可不斷地每次從緩沖池中取出一個產品。 void producer( ) /*生產者進程 */ { while⑴ { produce next product; P(empty); P(mutex); buffer[i]=product; i=(i+1) % n; 中國最大的管理資源中心 51 V(mutex)。 { int in= 0,out=0,count=0 。 中國最大的管理資源中心 52 } void get(item) . { if (count= 0) 。 consume the item in nexte。下面給出讀者進程與寫者進程的解法: 讀者優(yōu)先 : int readcount=0; semaphore mutex = 1, wsem=1。
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1