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

正文內(nèi)容

湯第02章進(jìn)程管理(更新版)

2025-03-02 00:07上一頁面

下一頁面
  

【正文】 源。所有同步機(jī)制都應(yīng)遵循下述 4條準(zhǔn)則:( 1)空閑讓進(jìn)section。v因此,必須在臨界區(qū)前面增加一段用于進(jìn)行上述檢查的代碼,把這段代碼稱為進(jìn)入?yún)^(qū)。 //計數(shù) }consumer: while(true){ … while (counter==0)( 空) do noop。為了預(yù)防這種錯誤,關(guān)鍵是把變量 counter作為臨界資源處理,就是令生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程互斥地訪問變量 counter。(countero 問題就在于這 2個進(jìn)程共享變量 counter,生產(chǎn)者對它做加 1操作,消費(fèi)者對它做減 1操作,這 2個操作在用類 機(jī)器語言 實(shí)現(xiàn)時,描述形式為:register1=counter。? Noop是一條空操作指令。 in=(in+1) % n。buffer[n]。 初值 =0167。n167。216。( 1)若干同學(xué)去圖書館借書是間接制約,其中書是臨界資源。( 1)間接相互制約關(guān)系( 2)直接相互制約關(guān)系100( 1)間接相互制約關(guān)系? 同處于一個系統(tǒng)中的進(jìn)程,通常都共享著某種系統(tǒng)資源,如共享 CPU、共享 I/O設(shè)備等。? 一個進(jìn)程可以執(zhí)行一個或幾個程序,一個程序也可以構(gòu)成多個進(jìn)程。這時,系統(tǒng)將利用 Active()原語將指定進(jìn)程激活。921.902. 進(jìn)程阻塞過程? 正在執(zhí)行的進(jìn)程,當(dāng)發(fā)現(xiàn)上述某事件時,由于無法繼續(xù)執(zhí)行,于是進(jìn)程便通過調(diào)用 阻塞原語 Block()把自己阻塞。872)啟動某種操作? 當(dāng)進(jìn)程啟動某種操作后,如果該進(jìn)程必須在該操作完成之后才能繼續(xù)執(zhí)行,則必須先使該進(jìn)程阻塞,以等待該操作完成。832. 進(jìn)程的終止過程( 3)若該進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子進(jìn)程予以終止,以防它們成為不可控的進(jìn)程。由于某種原因,例如,發(fā)生了死鎖,由操作員或 OS終止該進(jìn)程。– 等待超時。– 非法指令。當(dāng)程序運(yùn)行到 Holt指令時,將產(chǎn)生一個 中斷 ,去 通知OS本進(jìn)程已經(jīng)完成。若是應(yīng)用進(jìn)程創(chuàng)建子進(jìn)程,也應(yīng)是在該進(jìn)程提出創(chuàng)建進(jìn)程的請求中給出所需內(nèi)存的大小。702. 引起創(chuàng)建進(jìn)程的事件( 4)應(yīng)用請求(由應(yīng)用進(jìn)程自己創(chuàng)建)– 前面三種情況都是由系統(tǒng)內(nèi)核為它創(chuàng)建一個新進(jìn)程;此處則是基于應(yīng)用進(jìn)程的需求,由它自己創(chuàng)建 一個 新進(jìn)程,以便使新進(jìn)程以并發(fā)運(yùn)行方式完成特定任務(wù)。引起創(chuàng)建進(jìn)程的事件3.它是一個不可分割的基本單位,因此在執(zhí)行過程中不允許被中斷。6PCB7 9PCB– 根據(jù)阻塞原因把處于阻塞狀態(tài)的進(jìn)程的PCB排成等待 I/O操作完成的隊列和等待分配內(nèi)存的隊列等。處理機(jī)在運(yùn)行時,許多信息都放在寄存器中。– Windows用執(zhí)行體進(jìn)程塊 (EPROCESS)來表示進(jìn)程對象的基本屬性。? PCB的作用:使一個在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個能獨(dú)立運(yùn)行的基本單位,一個能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程。41? 當(dāng)進(jìn)程已經(jīng)正常結(jié)束或異常結(jié)束, OS已將它從就緒隊列中移出,但尚未將它撤消時的狀態(tài)。處于該狀態(tài)的進(jìn)程在其所期待的事件出現(xiàn)后,將從靜止阻塞變?yōu)殪o止就緒。( 2)父進(jìn)程請求:父進(jìn)程希望掛起自己的某個子進(jìn)程,以便考查和修改該子進(jìn)程,或者協(xié)調(diào)各子進(jìn)程間的活動。?狀態(tài)轉(zhuǎn)換 3可能立即引發(fā)狀態(tài)轉(zhuǎn)換 1:狀態(tài)轉(zhuǎn)換 3發(fā)生后,若就緒隊列非空,則進(jìn)程調(diào)度程序?qū)⑦x出一個就緒進(jìn)程投入執(zhí)行。此外,在可剝奪的 OS中,當(dāng)有更高優(yōu)先級的進(jìn)程就緒時,調(diào)度程序?qū)⒄龍?zhí)行的進(jìn)程轉(zhuǎn)換為就緒狀態(tài),讓更高優(yōu)先級的進(jìn)程執(zhí)行。? 進(jìn)程正在等待某一事件而暫停運(yùn)行,如等待某資源為可用(不包括 CPU)或等待 I/O完成。5)異步性– 進(jìn)程各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn),或說進(jìn)程實(shí)體按異步方式運(yùn)行。Block);而由程序段、相關(guān)的數(shù)據(jù)段和 PCB三部分便構(gòu)成了進(jìn)程實(shí)體。1) N++在 printf(N)和 N=0之前,此時得到的 N值分別為 n+1,n+1,02) N++在 printf(N)和 N=0之后,此時得到的 N值分別為 n, 0 , 13) N++在 printf(N)和 N=0之間,此時得到的 N值分別為 n,n+1,0– 結(jié)論:失去了可再現(xiàn)性11 進(jìn)程的特征與狀態(tài)1.b=y+4S3:?Pi P={P1,P2,P3,P4,P5,P6,P7,P8,P9}167。Pi的 直接后繼v初始結(jié)點(diǎn) Initial?beforeRelation) ”?”v?={(Pi,4 進(jìn)程的基本概念? 封閉性– 程序是在封閉的環(huán)境下執(zhí)行的,即程序運(yùn)行時 獨(dú)占 全機(jī) 資源– 資源的狀態(tài)(除初始狀態(tài)外)只有本程序才能改變它– 程序一旦開始執(zhí)行,其執(zhí)行結(jié)果不受外界因素影響? 可再現(xiàn)性– 只要程序執(zhí)行時的環(huán)境和初始條件相同,當(dāng)程序多次重復(fù)執(zhí)行時,不論它是從頭到尾不停頓地執(zhí)行,還是 “停停走走 ”地執(zhí)行,都將獲得相同的結(jié)果 。Order)或前趨關(guān)系(Precedenceplete?,可寫成 PiPj是 P1?P2,P1?P3,P1?P4,P2?P5,P3?P5,P4?P6,P4?P7, P5?P8, P6?P8,P7?P9,P8?P9v 或表示為:167。Cia=x+2S2:這樣,可能出現(xiàn)下述三種情況(假定某時刻變量 N的值為 n)。Control凡未建立 PCB的程序都不能作為一個獨(dú)立的單位參與運(yùn)行。20阻塞( Blocked)狀態(tài)? 又稱等待狀態(tài)、封鎖狀態(tài)。? 運(yùn)行狀態(tài) ?就緒狀態(tài)(時間片完)– 正在執(zhí)行的進(jìn)程也稱為當(dāng)前進(jìn)程,如果因分配給它的時間片已完而暫停執(zhí)行時,該進(jìn)程便由執(zhí)行狀態(tài)又回復(fù)到就緒狀態(tài)。?狀態(tài)轉(zhuǎn)換 2必然立即引發(fā)狀態(tài)轉(zhuǎn)換 1:狀態(tài)轉(zhuǎn)換 2發(fā)生后,進(jìn)程調(diào)度程序必然要選出一個新的就緒進(jìn)程投入運(yùn)行,該新進(jìn)程可能是其他進(jìn)程,也可能是剛從執(zhí)行狀態(tài)轉(zhuǎn)換成就緒狀態(tài)的那個進(jìn)程。– 若此時用戶進(jìn)程正處于就緒狀態(tài)而未執(zhí)行,則該進(jìn)程暫不接受調(diào)度,以便用戶研究其執(zhí)行情況或?qū)Τ绦蜻M(jìn)行修改。–靜止阻塞狀態(tài) Blockeds:當(dāng)用Suspend原語將處于活動阻塞狀態(tài)的進(jìn)程掛起后,進(jìn)程便轉(zhuǎn)換為靜止阻塞狀態(tài)。? 對于處于創(chuàng)建狀態(tài)的進(jìn)程,獲得了其所必需的資源,以及對其 PCB初始化工作完成后,進(jìn)程狀態(tài)便可由創(chuàng)建狀態(tài)轉(zhuǎn)入就緒狀態(tài)。? PCB中記錄了 OS所需的、用于描述 進(jìn)程的當(dāng)前情況 及 控制進(jìn)程運(yùn)行 所需的全部信息。– Linux用 task_struct數(shù)據(jù)結(jié)構(gòu)來描述每個進(jìn)程的 PCB。53處理機(jī)狀態(tài)? 處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。– 對就緒隊列常按進(jìn)程優(yōu)先級的高低排列,把優(yōu)先級高的進(jìn)程的 PCB排在隊列前面。6 7PCB5PCB所謂原子操作,是指一個操作中所有動作要么全做,要么全不做。進(jìn)程圖2.– 例如,用戶程序要求進(jìn)行文件打印, OS將為它創(chuàng)建一個打印進(jìn)程,這樣,不僅可使打印進(jìn)程與該用戶進(jìn)程并發(fā)執(zhí)行,而且還便于計算出為完成打印任務(wù)所花費(fèi)的時間。– 對于批處理作業(yè),其大小可在用戶提出創(chuàng)建進(jìn)程要求時提供。– 在 批處理系統(tǒng) 中,通常在程序的最后安排一條 Holt指令或終止的 系統(tǒng)調(diào)用 。這是指進(jìn)程試圖去訪問一個不允許訪問的資源或文件,或者以不適當(dāng)?shù)姆绞竭M(jìn)行訪問,例如,進(jìn)程試圖去寫一個只讀文件。這是指進(jìn)程的執(zhí)行時間超過了指定的最大值。– 操作員或 OS干預(yù)。( 2)若被終止進(jìn)程正處于 執(zhí)行狀態(tài) ,應(yīng)立即終止該進(jìn)程的執(zhí)行,并設(shè)置調(diào)度標(biāo)志為真,用于指示該進(jìn)程被終止后應(yīng)重新進(jìn)行調(diào)度。? 例如, 請求進(jìn)程 請求使用某資源(如打印機(jī)),由于系統(tǒng)已將打印機(jī)分配給其他進(jìn)程而不能分配給 請求進(jìn)程 ,這時 請求進(jìn)程只能被阻塞,僅在其他進(jìn)程在釋放出打印機(jī)的同時,才將 請求進(jìn)程 喚醒。? 例如,系統(tǒng)中的發(fā)送進(jìn)程,其主要工作是發(fā)送數(shù)據(jù),若已有的數(shù)據(jù)已全部發(fā)送完成而又無新的發(fā)送請求,這時(發(fā)送)進(jìn)程將使自己進(jìn)入阻塞狀態(tài);僅當(dāng)又有進(jìn)程提出新的發(fā)送請求時,才將發(fā)送進(jìn)程喚醒。? 如果在某進(jìn)程中調(diào)用了阻塞原語,則必須在與之相合作的另一進(jìn)程中或其他相關(guān)的進(jìn)程中,安排喚醒原語,以能喚醒阻塞進(jìn)程;否則,被阻塞進(jìn)程將會因不能被喚醒而長久地處于阻塞狀態(tài),從而再無機(jī)會繼續(xù)運(yùn)行。進(jìn)程的激活過程? 當(dāng)發(fā)生激活進(jìn)程的事件時,例如,父進(jìn)程或用戶進(jìn)程請求激活指定進(jìn)程,若該進(jìn)程駐留在外存而內(nèi)存中已有足夠的空間時,則可將在外存上處于靜止就緒狀態(tài)的該進(jìn)程 換入內(nèi)存。? 進(jìn)程是程序的一次執(zhí)行過程,它是動態(tài)地創(chuàng)建和消亡的,具有一定的生命期,是暫時存在的;而程序則是一組代碼的集合,它是永久存在的,可長期保存。98 進(jìn)程同步的基本概念兩種形式的制約關(guān)系臨界資源臨界區(qū)同步機(jī)制應(yīng)遵循的規(guī)則99兩種形式的制約關(guān)系在多道程序環(huán)境下,當(dāng)程序并發(fā)執(zhí)行時,由于 資源共享 和 進(jìn)程合作 ,使同處于一個系統(tǒng)中的諸進(jìn)程之間可能存在著以下兩種形式的制約關(guān)系。答:進(jìn)程之間存在著直接制約和間接制約兩種制約關(guān)系,其中直接制約(同步)是由于進(jìn)程間的相互合作而引起的,而間接制約(互斥)則是由于進(jìn)程間共享臨界資源而引起的。有 一群 生產(chǎn)者進(jìn)程 在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給 一群 消費(fèi)者進(jìn)程 去消費(fèi)。 輸入指針加 1: in=(in+1)%in==out生產(chǎn)者 — 消費(fèi)者問題的實(shí)現(xiàn)106u整型變量 counter167。item //空操作,重復(fù)測試 buffer[in]=nextp。 }108? 指針 in和 out初始化為 1。生產(chǎn)者 — 消費(fèi)者問題的實(shí)現(xiàn)109o 生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程在分別看時都是正確的;o 它們在順序執(zhí)行時的結(jié)果也是沒有問題的;o 并發(fā)執(zhí)行時就會出現(xiàn)差錯。(register1=5)//其實(shí)一個例子足以說明問題!register1++。 counter++。v如果此刻該臨界資源未被訪問,進(jìn)程便可進(jìn)入臨界區(qū)對該資源進(jìn)行訪問,并設(shè)置它正被訪問的標(biāo)志;v如果此刻該臨界資源正被某進(jìn)程訪問,則本進(jìn)程不能進(jìn)入臨界區(qū)。如何保證諸進(jìn)程互斥地訪問臨界資源?114v一個訪問臨界資源的循環(huán)進(jìn)程的描述while(true){entry} 臨界區(qū) (critical section)115v 為實(shí)現(xiàn)進(jìn)程互斥地進(jìn)入自己的臨界區(qū),可用 軟件方法 ,更多的是在系統(tǒng)中 設(shè)置專門的同步機(jī)構(gòu) 來協(xié)調(diào)各進(jìn)程間的運(yùn)行。( 4)讓權(quán)等待118 信號量機(jī)制v 1965年,荷蘭學(xué)者 Dijkstra(戴克斯特拉)提出的信號量機(jī)制是一種卓有成效的進(jìn)程同步工具。– 指在任何條件下都不使之中斷或處于不完整狀態(tài)的操作。noop。V操作(原語), signal(s):即,當(dāng)一個進(jìn)程在修改某信號量時,沒有其他進(jìn)程可同時對該信號量進(jìn)行修改。s1:{while(true){while(true){ofs。++。wakeup(s,L)。wait(Emutex)。A:wait(Emutex)://Emutex=1amp。elsethefoundthisSsignal(s1,s2,…,sn)for(i=1。inready…amp。processsitoi++){thesi一般 “信號量集 ”的幾種特殊情況129利用信號量實(shí)現(xiàn)進(jìn)程互斥利用信號量來描述前趨關(guān)系 信號量的應(yīng)用130semaphorewait(mutex)。remaindera,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0。signal(b)。{S4。}。{cobeginwait(a)。signal(f)。wait(d)。}。wait(j)。? 在解決上述問題的過程中,便產(chǎn)生了一種新的進(jìn)程同步工具 —— 管程 (Monitors)。管程被請求和釋放資源的進(jìn)程所調(diào)用。end。end。end 141說明u 局部于管程的數(shù)據(jù)結(jié)構(gòu),僅能被局部于管程的過程所訪問,任何管程外的過程都不能訪問它;u 局部于管程的過程也僅能訪問管程內(nèi)的數(shù)據(jù)結(jié)構(gòu);u 管程被請求和釋放資源的進(jìn)程所調(diào)用;u 管程把共享變量和對它進(jìn)行的若干過程圍了起來,所有進(jìn)程要訪問臨界資源時,都必須經(jīng)過管程才能進(jìn)入,而管程每次只準(zhǔn)許一個進(jìn)程進(jìn)入,從而既便于系統(tǒng)管理共享資源,又能保證進(jìn)程互斥。( 3)管程是為解決進(jìn)程共享資源的互斥而建立的,而進(jìn)程是為占有系統(tǒng)資源和實(shí)現(xiàn)系統(tǒng)并發(fā)性而引入的。x,y:condition。167。mutex=1,empty=n,full=0。producer: …… out=(out+1)%n
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1