


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、2.1比擬程序的順序執(zhí)行和并發(fā)執(zhí)行答:程序順序執(zhí)行程序并發(fā)執(zhí)行順序性:處理機的操作嚴(yán)格按照程序 所規(guī)定的順序執(zhí)行間斷性:共享系統(tǒng)資源,程序之間形 成了相互制約的關(guān)系封閉性:程序一旦開始執(zhí)行,執(zhí)行結(jié) 果不受外界因素影響失去封閉性:多個程序共享系統(tǒng)中的 各種資源,這些資源的狀態(tài)將由多個 程序來改變,致使程序失去封閉性??稍佻F(xiàn)性:只要程序執(zhí)行時的環(huán)境和 初始條件相同,都將獲得相同的結(jié) 果。不可再現(xiàn)性:程序失去封閉性,計算 結(jié)果與并發(fā)程序執(zhí)行速度有關(guān)。程序 經(jīng)過屢次執(zhí)行后,雖然他們執(zhí)行時的 環(huán)境和初始條件相同,但是結(jié)果卻不 相同。2.2比擬程序和進程答:1進程是一個動態(tài)的概念,而程序那么是一個靜態(tài)的概
2、念。程序是指令的有序集合,沒有任何 執(zhí)行含義,而進程那么強調(diào)執(zhí)行過程,它動態(tài)地被創(chuàng)立,并被調(diào)度執(zhí)行后消亡。2進程具有并行特征,而程序沒有。進程具有并行特征的兩個方面,即獨立性和異步性。也 就是說,在不考慮資源共享的情況下,各進程的執(zhí)行是獨立的,它們之間不存在邏輯上的制約 關(guān)系,各進程的是異步的。由于程序不反映執(zhí)行過程,所以不具有并行特征。3進程是系統(tǒng)中獨立存在的實體,是競爭資源的根本單位。進程對應(yīng)特殊的描述結(jié)構(gòu)并有申請、使用、釋放資源的資格。由于系統(tǒng)中存在多個進程,系統(tǒng)資源的有限性必然導(dǎo)致多 個進程對資源的共享和競爭,從而使進程的并行性受到系統(tǒng)的制約。4進程的存在必然需要程序的存在,但進程和程
3、序不是一一對應(yīng)的。由于進程是程序 的執(zhí)行過程,所以程序是進程的一個組成局部。處于靜止?fàn)顟B(tài)的程序并不對應(yīng)于任何進程。當(dāng)程序被處理機執(zhí)行時,它一定屬于某一個或者多個進程。屬于進程的程序可以是一個,也可 以是多個。不同的進程可以包含同一個程序,只要該程序所對應(yīng)的數(shù)據(jù)集不同。2.3試對進程的狀態(tài)及狀態(tài)轉(zhuǎn)換進行總結(jié),注意狀態(tài)轉(zhuǎn)換的物理含義及轉(zhuǎn)化條件片已完而被暫停執(zhí)行時,該進程便由執(zhí)行狀態(tài)又回復(fù)到就緒狀態(tài);如果因發(fā)生某事件而使 進程的執(zhí)行受阻,使之無法繼續(xù)執(zhí)行,該進程將由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。引入掛起狀 態(tài)后,又增加了從掛起狀態(tài)到非掛起狀態(tài)之間的轉(zhuǎn)換,當(dāng)進程處于未被掛起的就緒狀態(tài)時, 用掛起原語Susp
4、end將該進程掛起后,該進程便轉(zhuǎn)變成為靜止就緒狀態(tài),此時進程不再被 調(diào)度執(zhí)行。當(dāng)進程處于未被掛起的阻塞狀態(tài)時,用Suspe nd原語將它掛起后,進程便轉(zhuǎn)變?yōu)殪o止阻塞狀態(tài),處于該狀態(tài)的進程在其所期待的事件出現(xiàn)后,將從靜止阻塞狀態(tài)變成靜 止就緒。處于活動就緒狀態(tài)的進程,假設(shè)用激活原語Active激活后,該進程將轉(zhuǎn)變?yōu)閽炱鹁途w狀態(tài)。處于活動阻塞狀態(tài)的進程,假設(shè)用激活原語Active激活后,將轉(zhuǎn)變?yōu)樽枞麙炱馉顟B(tài)。2.4試舉例說明引起進程創(chuàng)立、撤消、阻塞或被喚醒的主要事件分別有哪些? 答:引起進程創(chuàng)立,如用戶登錄;作業(yè)調(diào)度;提供效勞;應(yīng)用請求。進程撤銷,當(dāng)一個進程到達了自然結(jié)束點,或時出現(xiàn)了無法克服的錯
5、誤,或是被操作 系統(tǒng)所中介,或是被其他有終止權(quán)的進程所終結(jié),都會引起進程撤銷。進程阻塞,請求系統(tǒng)效勞,不能立即滿足;啟動某種操作,且必須在該操作完成之后才能 繼續(xù)執(zhí)行;新數(shù)據(jù)尚未到達,相互合作進程的一方需首先獲得另一進程數(shù)據(jù)才能繼續(xù);無新工作可做,特定功能系統(tǒng)進程當(dāng)完成任務(wù)且暫無任務(wù)。進程被喚醒,系統(tǒng)效勞滿足;操作完成;數(shù)據(jù)到達;新任務(wù)出現(xiàn)。2.5試根據(jù)你自己的理解,采用類 C語言設(shè)計和描述操作系統(tǒng)關(guān)于進程控制塊的數(shù)據(jù)結(jié) 構(gòu)、組織方式及管理機制。在此根底上,給出進程的創(chuàng)立、終止、阻塞、喚醒、掛起 與激活等函數(shù)原型及函數(shù)代碼。注意,對于過于復(fù)雜的功能或你無法解決的細節(jié)可采 用指定功能的函數(shù)模塊如
6、處理機調(diào)度scheduler。來替代。答:進程控制塊的數(shù)據(jù)結(jié)構(gòu):Struct task_struct long state; /* 任務(wù)的運行狀態(tài) -1 不可運行, 0 可運行 就緒 , >0 已停止 */long counter;/* 運行時間片計數(shù)器 遞減 */long priority;/* 優(yōu)先級 */long signal;/* 信號 */struct sigaction sigaction32;/* 信號執(zhí)行屬性結(jié)構(gòu),對應(yīng)信號將要執(zhí)行的操作和標(biāo)志信息 */ long blocked; /* bitmap of masked signals */* various fields
7、 */int exit_code;/* 任務(wù)執(zhí)行停止的退出碼 */unsigned long start_code,end_code,end_data,brk,start_stack; /* 代碼段地址 代碼長度字節(jié) 數(shù)代碼長度 + 數(shù)據(jù)長度字節(jié)數(shù)總長度 堆棧段地址 */long pid,father,pgrp,session,leader;/* 進程標(biāo)識號 進程號 父進程號 父進程組號 會話號 會 話首領(lǐng) */unsigned short uid,euid,suid; /* 用戶標(biāo)識號用戶 id 有效用戶 id 保存的用戶 id*/unsigned short gid,egid,sgid ;
8、 /* 組標(biāo)識號組 id 有效組 id 保存的組 id*/ long alarm;/* 報警定時值 */long utime,stime,cutime,cstime,start_time;/* 用戶態(tài)運行時間 內(nèi)核態(tài)運行時間 子進程用戶態(tài) 運行時間子進程內(nèi)核態(tài)運行時間 進程開始運行時刻 */ unsigned short used_math;/* 標(biāo)志:是否使用協(xié)處理器 */ /* file system info */int tty; /* -1 if no tty, so it must be signed */ unsigned short umask;/* 文件創(chuàng)立屬性屏蔽位 */ s
9、truct m_inode * pwd;/* 當(dāng)前工作目錄 i 節(jié)點結(jié)構(gòu) */struct mnode * root;/* 根目錄i節(jié)點結(jié)構(gòu)*/struct mnode * executable;/* 執(zhí)行文件 i節(jié)點結(jié)構(gòu) */un sig ned long close_on_exec;/*執(zhí)行時關(guān)閉文件句柄位圖標(biāo)志*/struct file * filpNR_OPEN;/* 進程使用的文件表結(jié)構(gòu) */* ldt for this task 0 - zero 1 - cs 2 - ds&ss */struct desc_struct ldt3;/*本任務(wù)的局部描述符表。0-空,1-代碼
10、段cs, 2-數(shù)據(jù)和堆棧段ds&ss*/* tss for this task */Struct tss_struct tss;/* 本進程的任務(wù)狀態(tài)段信息結(jié)構(gòu) */;組織方式:鏈接方式執(zhí)行指針執(zhí)行指針阻塞段列指ft阻塞臥列指針空閑乩列指針空閑戎列指針圖2 PQB鏈接隊列示意圖Typedef struct LNode ElemType data;/存儲pcb塊的數(shù)據(jù)信息struct Lnode *next; / 指針域LNode, * Lin kList;結(jié)構(gòu)指針鏈表查找方式:Status GetElem_L(LinkList L, int i, ElemType &e) L是
11、帶頭結(jié)點的鏈表的頭指針,以e返回第i個元素p = L-> next; j = 1; / p指向第一個結(jié)點,j為計數(shù)器 while (p && j<i) p = p->n ext; +j; 順指針向后查找,直到p指向第i個元素或p為空if ( !p | j>i )return ERROR; II第i個元素不存在e = p->data;II取得第i個元素return OK; II GetElem_L 算法復(fù)雜度為:O(ListLe ngth(L)索引方式系統(tǒng)建立幾張索引表。每個索引表的表目中,記錄具有相應(yīng)狀態(tài)的某個PCB在PCB表中的地址。當(dāng)指針查找索
12、引表,找出 PCB的地址,再通過指針找對應(yīng)該地址的PCB塊。平均查找長度:=(n/s+ s)/2+1n為表的長度s為表中的記錄個數(shù)進程管理機制:用戶使用應(yīng)用程序,應(yīng)用程序要訪問系統(tǒng)調(diào)用接口,產(chǎn)生中斷,而系統(tǒng)調(diào)用接口需要查詢 中斷向量表,cpu根據(jù) 中斷向量號跳轉(zhuǎn)到所需的效勞中,即系統(tǒng)調(diào)用效勞程序。系統(tǒng)效勞 程序會調(diào)用內(nèi)核函數(shù)create,term in ate,block,wakeup,suspe nd,activQ進程的創(chuàng)立與終止:創(chuàng)立:Bool fret=Bool CreateProcess(LPCTSTR lpApplivatio nName,/全部或局部地指明包括可執(zhí)行代碼的EXE文件
13、的文件名LPCTSTR lpApplivatio nName,向可執(zhí)行文件發(fā)送的參數(shù)LPCTSTR lpApplivatio nName, /返回進程句柄的平安屬性.主要指明這一句柄是否應(yīng)該由其 他子進程所繼承LPSECURIITY_ATTRIBUTES IpThreadAttributes,返回進程的主線程的句柄的平安屬性 BOOL bln heritHa ndle,一種標(biāo)志,告訴系統(tǒng)允許新進程繼承創(chuàng)立者進程的句柄DWORD dwCreationFlage, /特殊的創(chuàng)立標(biāo)志 (如 CREATE_SUSPENDE的位標(biāo)記LPVOID lpE nviro nment, /向新進程發(fā)送的一套環(huán)境
14、變量;如為n ull值那么發(fā)送調(diào)用者環(huán)境LPCTSTR lpCurre ntDirectory, /新進程的啟動目錄STARTUPINFO lpStartupI nfo, /STARTUPINF結(jié)構(gòu),包括新進程的輸入和輸出配置的詳情LPPROCESS_INFORMATIOlNpProcessInformation / 調(diào)用的結(jié)果塊;發(fā)送新應(yīng)用程序的進程 和主線程的句柄和 ID);終止:If (m_hPro)/如果句柄合法if(!TerminateProcess(m_hPro,0)/ 根據(jù)句柄,終止剛剛創(chuàng)立的進程AfxMessageBox( 關(guān)“閉進程出現(xiàn)錯誤! );Exit 0 else Af
15、xMessageBox("Termi nateProces成功");原語:被創(chuàng)立進程的外部標(biāo)識符 n、初始CPU狀態(tài)SO,進程優(yōu)先數(shù)K0、初始內(nèi)存M0以及所需資源的清單R0等、某進程運行的中間結(jié)果 acco創(chuàng)立:從PCB集合種索取一個空白PCB,并獲得該PCB的內(nèi)部標(biāo)識符i ;然后,把調(diào)用者提供的參數(shù),以及從執(zhí)行過程EP中獲得的調(diào)用者內(nèi)部標(biāo)識j,填入該PCB,設(shè)置記帳數(shù)據(jù),置新進程為 “靜止就緒 狀態(tài);最后,把此PCB分別插入就緒隊列RQ和進程家族中。Procedure Create(n,SO,kO,MO,RO,acc)begini:=get Internal Name(n
16、);/ 獲得內(nèi)部名i.id:=n;/填外部名i.Priority:=kO; / 填優(yōu)先表i.cpu state:=S0;填 cpu 初始狀態(tài)i.mainstore:=MO; / 填寫主存區(qū)域 i.resource:=RO;/填寫資源清單i.status:='Readys' /填寫進程狀態(tài) j:=EP;/獲/ 取調(diào)用者內(nèi)部標(biāo)識i.Parent:=j;/填入i進程的父進程ji. progeny:=null;/i 的家庭指針為空geny:=i;/把i填入其父進程pcb中的家庭指針處i.state:=RQ;i所在狀態(tài)隊列首指針I(yè)nsert(RQ,i);把i進程插入RQ隊尾co
17、ntinue;end終止:Procedure destroy(n) BeginSched:=false;i:=getinternal name(n);/ 獲取 n 進程的內(nèi)部名kill(i);if sched then scheduler else continue;假設(shè)Schde為真,那么轉(zhuǎn)調(diào)度程序,否那么繼續(xù)endprocedure kill(i)beginif i.stata(i)= executing thenbegin stop(i);sched:=true end;remove (i.stata,i);/將被撤消進程從所指示的隊列中除去for all S ge ny do
18、 kill(s);for all r (i.main store Ui.resources) doif owned(r) then insert (r.semaphore,r.date);/ 屬于父進程的資源歸還且插入父進程資源清單 for all created resources(i) do remove descriptor (R);/ 撤消自己的資源清單歸還系統(tǒng) remove process control block (i);end阻塞:Procedure block阻塞執(zhí)行進程中的某個進程EP的進程號iBegini:=EP;從執(zhí)行進程EF獲得調(diào)用者內(nèi)部標(biāo)識符Stop(i);i.st
19、atus:= blockda ; i.stata=WQI(阻塞隊列指針insert(WQ(r),i); / 把i插入 WQ隊尾scheduler/轉(zhuǎn)調(diào)度程序喚醒:Procedure wakeup(n)Begini :=getinternal name(n);remove (WQ(r),i);/把i進程從等待r而受阻塞隊列中摘除i.status:= reac置i進程為就緒"狀態(tài)i.sdata:=RQ;把i進程插入到就緒隊列insert(RQ,i);continueend掛起:Procedure suspend(n,a)Begini:=getinternal name(n);s:=i.s
20、tatus;if s= executing then stop(i);a:=copy PCB(i);i.status:=if s= blockeda then “blockeds else readys;if s= executing endthen scheduler else con ti nue;激活:Procedure active (n)Begi ni:=get in ter nal n ame (n)i.status:=if i.status= readys then“ readya else blockeda;if i.status= readys then sch當(dāng)激活后的進程
21、處于“ ready狀態(tài)針,將引起重新調(diào)度else con ti nueend2.1什么是臨界區(qū)?引入臨界區(qū)目的是什么?答:臨界區(qū):每個進程中訪問臨界資源的那段代碼稱為臨界區(qū)。目的:如果共享該臨界資 源的每個進程能互斥的進入自己的臨界區(qū),就能保證對臨界資源的互斥訪問。2.2記錄型信號量的物理意義。答:記錄型信號量的初值表示系統(tǒng)中某類資源的數(shù)目,因而又被稱為資源信號量。當(dāng)值為正(n)時,表示當(dāng)前n個臨界資源可用,或者最多還可允許n進程進入該資源對應(yīng)的臨界區(qū);當(dāng)值為0時表示臨界資源已經(jīng)全部被占用;當(dāng)值為負(-n)時其絕對值表示等待使用該資源的進程數(shù)。信號量整型和記錄型不用原語能否實現(xiàn)進程互斥?各舉一
22、反例說明 答:整型:不能。S=1process1:單獨執(zhí)行每個程序都是正確的,因為每個 程序都能實現(xiàn)一個進程進入臨界區(qū)。但 是,當(dāng)程序并發(fā)執(zhí)行的時候P1: while s<=0 do no_op s=1 沒進入循環(huán)P2: while s<=0 do no_op s=1 沒進入循環(huán)P1: s=s-1s=6進入臨界區(qū)P2: s=s-1s二進入臨界區(qū)兩個進程可能同時進入臨界區(qū)begi nrepeatwhile s<=0 do no_ops=s-1N=N-1;訪問臨界資源s=s+1un til false;endprocess2: begi nrepeatwhile s<=0 do no_ops=s-1N=N+1;s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國丸鐵輸送機數(shù)據(jù)監(jiān)測研究報告
- 統(tǒng)編版三年級語文下冊第八單元達標(biāo)測試卷(含答案)
- 2025年《義務(wù)教育小學(xué)體育課程標(biāo)準(zhǔn)測試卷2022版》測試題庫及答案
- 2025年軍隊文職人員招聘之軍隊文職管理學(xué)題庫附答案(典型題)
- 2019-2025年消防設(shè)施操作員之消防設(shè)備中級技能過關(guān)檢測試卷A卷附答案
- 2024年遼寧省中考道德與法治試卷(含答案)
- 高等教育自學(xué)考試《00102世界市場行情》模擬試卷一
- 2024年廣東省公務(wù)員《申論(縣鎮(zhèn)級)》試題真題及答案
- 2025年法制宣傳日普法知識競賽題庫及答案(三)
- 商務(wù)談判與合作協(xié)議簽訂流程規(guī)范說明書
- 廉政從業(yè)培訓(xùn)課件
- 2025新 公司法知識競賽題庫與參考答案
- 2025年中國移動通信集團貴州限公司招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 《苗圃生產(chǎn)與管理》教案-第三章 園林植物的播種育苗
- 大學(xué)生美甲創(chuàng)業(yè)項目路演
- 自控力-電子書
- 2025年中國中煤能源集團有限公司招聘筆試參考題庫含答案解析
- 《肺結(jié)節(jié)影像診斷》課件
- 2024年濰坊工程職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 殯儀服務(wù)員職業(yè)技能鑒定考試題(附答案)
- 夫妻雙方自愿離婚協(xié)議書模板(2025年)
評論
0/150
提交評論