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

正文內(nèi)容

湯第02章進(jìn)程管理(編輯修改稿)

2025-02-18 00:07 本頁面
 

【文章內(nèi)容簡介】 822. 進(jìn)程的終止過程? 如果系統(tǒng)中發(fā)生了上述要求終止進(jìn)程的某事件, OS便調(diào)用 進(jìn)程終止原語 ,按下述過程去終止指定的進(jìn)程。( 1)根據(jù)被終止進(jìn)程的標(biāo)識(shí)符,從 PCB集合中檢索出該進(jìn)程的 PCB,從中讀出該進(jìn)程的 狀態(tài) 。( 2)若被終止進(jìn)程正處于 執(zhí)行狀態(tài) ,應(yīng)立即終止該進(jìn)程的執(zhí)行,并設(shè)置調(diào)度標(biāo)志為真,用于指示該進(jìn)程被終止后應(yīng)重新進(jìn)行調(diào)度。832. 進(jìn)程的終止過程( 3)若該進(jìn)程還有子孫進(jìn)程,還應(yīng)將其所有子進(jìn)程予以終止,以防它們成為不可控的進(jìn)程。( 4)將被終止進(jìn)程所擁有的全部資源,或者歸還給其父進(jìn)程,或者歸還給系統(tǒng)。( 5)將被終止進(jìn)程( PCB)從所在隊(duì)列(鏈表)中移出,等待其他程序來搜集信息。84 進(jìn)程的阻塞與喚醒1.引起進(jìn)程阻塞和喚醒的事件2.進(jìn)程阻塞過程3.進(jìn)程喚醒過程851. 引起進(jìn)程阻塞和喚醒的事件1)請(qǐng)求系統(tǒng)服務(wù)2)啟動(dòng)某種操作3)新數(shù)據(jù)尚未到達(dá)4)無新工作可做861)請(qǐng)求系統(tǒng)服務(wù)? 當(dāng)正在執(zhí)行的進(jìn)程請(qǐng)求 OS提供服務(wù)時(shí),由于某種原因, OS并不立即滿足該進(jìn)程的要求時(shí),該進(jìn)程只能轉(zhuǎn)變?yōu)樽枞麪顟B(tài)來等待。? 例如, 請(qǐng)求進(jìn)程 請(qǐng)求使用某資源(如打印機(jī)),由于系統(tǒng)已將打印機(jī)分配給其他進(jìn)程而不能分配給 請(qǐng)求進(jìn)程 ,這時(shí) 請(qǐng)求進(jìn)程只能被阻塞,僅在其他進(jìn)程在釋放出打印機(jī)的同時(shí),才將 請(qǐng)求進(jìn)程 喚醒。872)啟動(dòng)某種操作? 當(dāng)進(jìn)程啟動(dòng)某種操作后,如果該進(jìn)程必須在該操作完成之后才能繼續(xù)執(zhí)行,則必須先使該進(jìn)程阻塞,以等待該操作完成。? 例如,進(jìn)程啟動(dòng)了某 I/O設(shè)備,如果只有在I/O設(shè)備完成了指定的 I/O操作任務(wù)后進(jìn)程才能繼續(xù)執(zhí)行,則該進(jìn)程在啟動(dòng)了 I/O操作后,便自動(dòng)進(jìn)入阻塞狀態(tài)去等待。在 I/O操作完成后,再由 中斷處理程序 或 中斷進(jìn)程將該進(jìn)程 喚醒 。883)新數(shù)據(jù)尚未到達(dá)? 對(duì)于 相互合作的進(jìn)程 ,如果其中一個(gè)進(jìn)程需要先獲得另一(合作)進(jìn)程提供的數(shù)據(jù)后才能對(duì)數(shù)據(jù)進(jìn)行處理,則只要其所需數(shù)據(jù)尚未到達(dá),該進(jìn)程只有(等待)阻塞。? 例如,有兩個(gè)進(jìn)程,進(jìn)程 A用于輸入數(shù)據(jù),進(jìn)程 B對(duì)輸入數(shù)據(jù)進(jìn)行加工。假如 A尚未將數(shù)據(jù)輸入完畢,則進(jìn)程 B將因沒有所需的處理數(shù)據(jù)而阻塞;一旦進(jìn)程 A把數(shù)據(jù)輸入完畢,便可去喚醒進(jìn)程 B。894)無新工作可做? 系統(tǒng)往往設(shè)置一些具有某特定功能的 系統(tǒng)進(jìn)程 ,每當(dāng)這種進(jìn)程完成任務(wù)后,便把自己阻塞起來以等待新任務(wù)到來。? 例如,系統(tǒng)中的發(fā)送進(jìn)程,其主要工作是發(fā)送數(shù)據(jù),若已有的數(shù)據(jù)已全部發(fā)送完成而又無新的發(fā)送請(qǐng)求,這時(shí)(發(fā)送)進(jìn)程將使自己進(jìn)入阻塞狀態(tài);僅當(dāng)又有進(jìn)程提出新的發(fā)送請(qǐng)求時(shí),才將發(fā)送進(jìn)程喚醒。902. 進(jìn)程阻塞過程? 正在執(zhí)行的進(jìn)程,當(dāng)發(fā)現(xiàn)上述某事件時(shí),由于無法繼續(xù)執(zhí)行,于是進(jìn)程便通過調(diào)用 阻塞原語 Block()把自己阻塞??梢姡?進(jìn)程的阻塞是進(jìn)程自身的一種主動(dòng)行為 。? 進(jìn)入 block過程后,由于此時(shí)該進(jìn)程還處于執(zhí)行狀態(tài),所以應(yīng)先立即停止執(zhí)行,把 PCB中的現(xiàn)行狀態(tài)由 “執(zhí)行 ”改為 “阻塞 ”,并將 PCB插入阻塞隊(duì)列。如果系統(tǒng)中設(shè)置了因不同事件而阻塞的多個(gè)阻塞隊(duì)列,則應(yīng)將本進(jìn)程插入到具有相同事件的阻塞(等待)隊(duì)列。? 最后,轉(zhuǎn)調(diào)度程序進(jìn)行重新調(diào)度,將處理機(jī)分配給另一就緒進(jìn)程并進(jìn)行切換,亦即,保留被阻塞進(jìn)程的處理機(jī)狀態(tài),再按 新進(jìn)程的 PCB中的處理機(jī)狀態(tài) 設(shè)置 CPU環(huán)境 。913. 進(jìn)程喚醒過程? 當(dāng)被阻塞進(jìn)程所期待的事件出現(xiàn)時(shí),如 I/O完成或其所期待的數(shù)據(jù)已經(jīng)到達(dá),則由有關(guān)進(jìn)程(如用完并釋放了該 I/O設(shè)備的進(jìn)程)調(diào)用喚醒原語Wakeup(),將等待事件的進(jìn)程喚醒。喚醒原語執(zhí)行的過程:首先把被阻塞的進(jìn)程從等待該事件的阻塞隊(duì)列中移出,將其 PCB中的現(xiàn)行狀態(tài)由阻塞改為就緒,然后再將該 PCB插入到就緒隊(duì)列中。? 如果在某進(jìn)程中調(diào)用了阻塞原語,則必須在與之相合作的另一進(jìn)程中或其他相關(guān)的進(jìn)程中,安排喚醒原語,以能喚醒阻塞進(jìn)程;否則,被阻塞進(jìn)程將會(huì)因不能被喚醒而長久地處于阻塞狀態(tài),從而再無機(jī)會(huì)繼續(xù)運(yùn)行。921.進(jìn)程的掛起2.進(jìn)程的激活過程931. 進(jìn)程的掛起? 當(dāng)出現(xiàn)了引起進(jìn)程掛起的事件時(shí),比如,用戶進(jìn)程請(qǐng)求將自己掛起,或父進(jìn)程請(qǐng)求將利用掛起原語 Suspend()將指定進(jìn)程或處于阻塞狀態(tài)的進(jìn)程掛起。? 掛起原語的執(zhí)行過程:首先檢查被掛起進(jìn)程的狀態(tài),若處于活動(dòng)就緒狀態(tài),便將其改為靜止就緒;對(duì)于活動(dòng)阻塞狀態(tài)的進(jìn)程,則將之改為靜止阻塞。為了方便用戶或父進(jìn)程考查該進(jìn)程的運(yùn)行情況而 把該進(jìn)程的 PCB復(fù)制到某指定的內(nèi)存區(qū)域 。最后,若被掛起的進(jìn)程正在執(zhí)行,則轉(zhuǎn)向調(diào)度程序重新調(diào)度。 942.進(jìn)程的激活過程? 當(dāng)發(fā)生激活進(jìn)程的事件時(shí),例如,父進(jìn)程或用戶進(jìn)程請(qǐng)求激活指定進(jìn)程,若該進(jìn)程駐留在外存而內(nèi)存中已有足夠的空間時(shí),則可將在外存上處于靜止就緒狀態(tài)的該進(jìn)程 換入內(nèi)存。這時(shí),系統(tǒng)將利用 Active()原語將指定進(jìn)程激活。? 激活原語先將進(jìn)程從外存調(diào)入內(nèi)存,檢查該進(jìn)程的現(xiàn)行狀態(tài),若是靜止就緒,便將之改為活動(dòng)就緒;若為靜止阻塞,便將之改為活動(dòng)阻塞。? 假如采用的是 搶占調(diào)度 策略,則每當(dāng)有新進(jìn)程進(jìn)入就緒隊(duì)列時(shí),應(yīng)檢查是否要進(jìn)行重新調(diào)度,即由調(diào)度程序?qū)⒈患せ钸M(jìn)程與當(dāng)前進(jìn)程進(jìn)行優(yōu)先級(jí)的比較,如果被激活進(jìn)程的優(yōu)先級(jí)更低,就不必重新調(diào)度;否則,立即剝奪當(dāng)前進(jìn)程的運(yùn)行,把處理機(jī)分配給剛被激活的進(jìn)程。95進(jìn)程與程序的區(qū)別? 進(jìn)程是程序及其數(shù)據(jù)在計(jì)算機(jī)上的一次運(yùn)行活動(dòng),是一個(gè)動(dòng)態(tài)的概念。進(jìn)程的運(yùn)行實(shí)體是程序,離開程序的進(jìn)程沒有存在的意義。從靜態(tài)角度看,進(jìn)程是由程序、數(shù)據(jù)和PCB三部分組成的。而程序是一組有序的指令集合,是一種靜態(tài)的概念。? 進(jìn)程是程序的一次執(zhí)行過程,它是動(dòng)態(tài)地創(chuàng)建和消亡的,具有一定的生命期,是暫時(shí)存在的;而程序則是一組代碼的集合,它是永久存在的,可長期保存。? 一個(gè)進(jìn)程可以執(zhí)行一個(gè)或幾個(gè)程序,一個(gè)程序也可以構(gòu)成多個(gè)進(jìn)程。進(jìn)程可創(chuàng)建進(jìn)程,而程序不可能形成新的程序。? 進(jìn)程與程序的組成不同。進(jìn)程的組成包括程序、數(shù)據(jù)、PCB。 96 進(jìn)程同步? 在 OS中引入進(jìn)程后,雖然提高了資源利用率和系統(tǒng)吞吐量,但由于進(jìn)程的 異步性( P38),也會(huì)給系統(tǒng)造成混亂,尤其是在它們爭用 臨界資源 時(shí)。– 例如,當(dāng)多個(gè)進(jìn)程去爭用一臺(tái)打印機(jī)時(shí),有可能使多個(gè)進(jìn)程的輸出結(jié)果交織在一起,難于區(qū)分;– 當(dāng)多個(gè)進(jìn)程去爭用共享變量、表格、鏈表等時(shí),有可能致使數(shù)據(jù)處理出錯(cuò)。97 進(jìn)程同步? 主要任務(wù):對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上進(jìn)行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進(jìn)程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。98 進(jìn)程同步的基本概念兩種形式的制約關(guān)系臨界資源臨界區(qū)同步機(jī)制應(yīng)遵循的規(guī)則99兩種形式的制約關(guān)系在多道程序環(huán)境下,當(dāng)程序并發(fā)執(zhí)行時(shí),由于 資源共享 和 進(jìn)程合作 ,使同處于一個(gè)系統(tǒng)中的諸進(jìn)程之間可能存在著以下兩種形式的制約關(guān)系。( 1)間接相互制約關(guān)系( 2)直接相互制約關(guān)系100( 1)間接相互制約關(guān)系? 同處于一個(gè)系統(tǒng)中的進(jìn)程,通常都共享著某種系統(tǒng)資源,如共享 CPU、共享 I/O設(shè)備等。所謂 間接相互制約即源于這種資源共享 。? 例如,有 2個(gè)進(jìn)程 A和 B,如果在 A進(jìn)程提出打印請(qǐng)求時(shí),系統(tǒng)已將惟一的一臺(tái)打印機(jī)分配給了進(jìn)程 B,則此時(shí)進(jìn)程 A只能阻塞;一旦進(jìn)程 B將打印機(jī)釋放,則 A進(jìn)程才能由阻塞改為就緒狀態(tài)。101( 2)直接相互制約關(guān)系? 這種制約主要 源于進(jìn)程間的合作? 例如,有一輸入進(jìn)程 A通過 單緩沖 向計(jì)算進(jìn)程 B提供數(shù)據(jù)。– 當(dāng)單緩沖 空 時(shí),計(jì)算進(jìn)程 B因不能獲得所需數(shù)據(jù)而阻塞。當(dāng)輸入進(jìn)程 A把數(shù)據(jù)送入緩沖后,便將計(jì)算進(jìn)程 B喚醒;– 當(dāng)單緩沖 滿 時(shí),輸入進(jìn)程 A因無法再向緩沖中投放數(shù)據(jù)而阻塞,只有當(dāng)計(jì)算進(jìn)程 B將緩沖內(nèi)數(shù)據(jù)取走后便可喚醒 A。102補(bǔ)充例題? 進(jìn)程之間存在著哪幾種制約關(guān)系?各是什么原因引起的?下列活動(dòng)分別屬于哪種制約關(guān)系?( 1)若干同學(xué)去圖書館借書;( 2)兩隊(duì)舉行籃球比賽;( 3)流水線生產(chǎn)的各道工序;( 4)商品生產(chǎn)和社會(huì)消費(fèi)。答:進(jìn)程之間存在著直接制約和間接制約兩種制約關(guān)系,其中直接制約(同步)是由于進(jìn)程間的相互合作而引起的,而間接制約(互斥)則是由于進(jìn)程間共享臨界資源而引起的。( 1)若干同學(xué)去圖書館借書是間接制約,其中書是臨界資源。( 2)兩隊(duì)舉行籃球比賽是間接制約,其中籃球是臨界資源。( 3)流水線生產(chǎn)的各道工序是直接制約,各道工序間需要相互合作,每道工序的開始都依賴于前一道工序的完成。( 4)商品生產(chǎn)和社會(huì)消費(fèi)是直接制約,兩者也需要相互合作:商品生產(chǎn)出來后才可以被消費(fèi);商品被消費(fèi)后才需要再生產(chǎn)。103v許多硬件資源(打印機(jī)、磁帶機(jī)等)都屬于臨界資源( CriticalResource),諸進(jìn)程間應(yīng)采取互斥方式,實(shí)現(xiàn)對(duì)資源的共享。 臨界資源104v生產(chǎn)者 — 消費(fèi)者問題:216。有 一群 生產(chǎn)者進(jìn)程 在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給 一群 消費(fèi)者進(jìn)程 去消費(fèi)。216。為使生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程能并發(fā)執(zhí)行,在兩者之間設(shè)置了一個(gè)具有 n個(gè) 緩沖區(qū) 的 緩沖池 ,生產(chǎn)者進(jìn)程可將它所生產(chǎn)的產(chǎn)品放入一個(gè) 空緩沖區(qū) 中,消費(fèi)者進(jìn)程可從一個(gè) 滿緩沖區(qū) 中取得一個(gè)產(chǎn)品消費(fèi)。216。盡管所有的生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程都是以異步方式運(yùn)行的,但它們之間必須保持同步v不允許消費(fèi)者進(jìn)程到一個(gè)空緩沖區(qū)去取產(chǎn)品v不允許生產(chǎn)者進(jìn)程向一個(gè)已裝滿產(chǎn)品 且尚未被取走消息 的緩沖區(qū)中投放產(chǎn)品 臨界資源105v緩沖池:用數(shù)組來表示具有 n個(gè)緩沖區(qū)的緩沖池。v輸入指針 in:指示下一個(gè)可投放產(chǎn)品的緩沖區(qū),每當(dāng)生產(chǎn)者進(jìn)程生產(chǎn)并投放一個(gè)產(chǎn)品后,輸入指針加 1。v輸出指針 out:指示下一個(gè)可獲取產(chǎn)品的緩沖區(qū),每當(dāng)消費(fèi)者進(jìn)程取走一個(gè)產(chǎn)品后,輸出指針加 1。v循環(huán)緩沖:167。 輸入指針加 1: in=(in+1)%n167。 輸出指針加 1: out=(out+1)%n167。 緩沖池滿: (in+1)%n==out167。 緩沖池空: in==out生產(chǎn)者 — 消費(fèi)者問題的實(shí)現(xiàn)106u整型變量 counter167。 初值 =0167。 加 1:生產(chǎn)者進(jìn)程向緩沖中投放一個(gè)產(chǎn)品167。 減 1:消費(fèi)者進(jìn)程從緩沖中取走一個(gè)產(chǎn)品u生產(chǎn)者和消費(fèi)者兩進(jìn)程共享下面的變量intn。typedefitem=…。itembuffer[n]。intin,out。intcounter。//關(guān)鍵這個(gè)!生產(chǎn)者 — 消費(fèi)者問題的實(shí)現(xiàn)107producer: while(true){ … produce an item in nextp。//產(chǎn)品放到局部變量 nextp中 … while (counter==n)(滿) do noop。 //空操作,重復(fù)測試 buffer[in]=nextp。 in=(in+1) % n。 counter++。 //計(jì)數(shù) }consumer: while(true){ … while (counter==0)(空) do noop。 nextc=buffer[out]。 //nextc 存放每次要消費(fèi)的產(chǎn)品 out=(out+1)% n。 counter。 //計(jì)數(shù) consume the item in nextc。 }108? 指針 in和 out初始化為 1。? Noop是一條空操作指令。? Whileconditiondonoop語句表示重復(fù)的測試條件(condition) ,重復(fù)測試應(yīng)進(jìn)行到該條件變?yōu)?false,即到該條件不成立時(shí)為止。? 在生產(chǎn)者進(jìn)程中使用一局部變量 nextp,用于暫時(shí)存放每次剛生產(chǎn)出來的產(chǎn)品。? 在消費(fèi)者進(jìn)程中,則使用一個(gè)局部變量 nextc,用于存放每次要消費(fèi)的產(chǎn)品。生產(chǎn)者 — 消費(fèi)者問題的實(shí)現(xiàn)109o 生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程在分別看時(shí)都是正確的;o 它們?cè)陧樞驁?zhí)行時(shí)的結(jié)果也是沒有問題的;o 并發(fā)執(zhí)行時(shí)就會(huì)出現(xiàn)差錯(cuò)。o 問題就在于這 2個(gè)進(jìn)程共享變量 counter,生產(chǎn)者對(duì)它做加 1操作,消費(fèi)者對(duì)它做減 1操作,這 2個(gè)操作在用類 機(jī)器語言 實(shí)現(xiàn)時(shí),描述形式為:register1=counter。 register2=counter。register1++。register2。counter=register1。 counter=register2。假定 counter的當(dāng)前值是 5。o 先左后右(正常),先右后左(正常)o 交叉執(zhí)行(不正常)不可再現(xiàn)性110register1=counter。(register1=5)//其實(shí)一個(gè)例子足以說明問題!register1++。(register1=6)register2=counter。(register2=5)register2。(register2=4)counter=register1。(counter=6) counter=register2。(counter=4)為了預(yù)防這種錯(cuò)誤,關(guān)鍵是把變量 counter作為臨界資源處理,就是令生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程互斥地訪問變量 counter。還有其他順序不可再現(xiàn)性111v臨界區(qū):每個(gè) 進(jìn)程 中訪問臨界資
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1