實驗一進程創(chuàng)建模擬報告_第1頁
實驗一進程創(chuàng)建模擬報告_第2頁
實驗一進程創(chuàng)建模擬報告_第3頁
實驗一進程創(chuàng)建模擬報告_第4頁
實驗一進程創(chuàng)建模擬報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗一 進程創(chuàng)建模擬實驗學時: 2實驗類型:驗證實驗要求:必修一、實驗目的1) 理解進程創(chuàng)建相關(guān)理論;2) 掌握進程創(chuàng)建方法;3) 掌握進程相關(guān)數(shù)據(jù)結(jié)構(gòu)。二、實驗容 本實驗針對操作系統(tǒng)中進程創(chuàng)建相關(guān)理論進行實驗。要驗者輸入實驗指導書提供的代碼 并進行測試。代碼簡化了進程創(chuàng)建的多個步驟和容。進程的樹形結(jié)構(gòu)采用廣義二叉樹的方式 進行存儲。三、實驗原理1) 進程控制塊為了描述和控制進程的運行,系統(tǒng)為每個進程定義了一個進程控制塊(PCB),它是進程實體的一部分,是操作系統(tǒng)管理進程最重要的數(shù)據(jù)結(jié)構(gòu)。其主要包含四類信息:(1) 進程標識符 它唯一地標識一個進程。通常包括進程號 pid ,父進程號 ppid

2、 和用戶號 uid 。(2) 處理機狀態(tài)處理器的狀態(tài)通常由處理機的各種寄存器中的容組成。 PCB 存放中斷(阻塞,掛起)時的各 寄存器值,當該進程重新執(zhí)行時,可以從斷點處恢復。主要包括:a) 通用寄存器;b) 指令計數(shù)器;c) 程序狀態(tài)字 PSW;d) 用戶棧指針。(3) 進程調(diào)度信息a) 進程狀態(tài);b) 進程優(yōu)先級(用于描述優(yōu)先使用 cpu 級別的一個整數(shù),高優(yōu)先級的進程先得到 cpu,通常情況下,優(yōu)先值越小優(yōu)先級越高);c) 其它信息(等待時間、總執(zhí)行時間等);d) 事件(等待原因)。(4) 進程控制信息a) 程序和數(shù)據(jù)的地址(程序在存和外存中的首址);b) 進程同步和通信機制;c) 資源

3、列表(進程除 CPU 以外的所有資源);d) 指針(進程隊列中指向下一個進程的 PCB 首址)。2) 進程創(chuàng)建流程(1) 申請空白 PCB為新進程申請獲得唯一的數(shù)字標識符,并從 PCB 集合中索取一個空白 PCB。如果無空白PCB,可以創(chuàng)建一個新的 PCB。在本實驗中,每次動態(tài)創(chuàng)建 PCB。(2) 為新進程分配資源為新進程分配存空間和??臻g。(3) 初始化進程控制塊a) 初始化標識信息;b) 初始化處理機狀態(tài)信息;c) 初始化處理機控制信息。(4) 將新進程插入就緒隊列3) 進程樹進程樹用于描述進程家族關(guān)系,如圖 1-1 中可以看出, 進程 P1 創(chuàng)建了進程 P2 、P3、P4、P5,而 P2

4、 又創(chuàng)建了 P6 、P7、P8。在進程創(chuàng)建過程中,需要對每一個新增加的進程加入到進程樹中,有了清晰的父子關(guān)系,可以使資源繼承或進程刪除等操作變得很方便。4) 進程總鏈PCB 放入總鏈中,該總鏈可以對破它是一個 PCB 鏈表,每一個新創(chuàng)建的進程必須把其 壞的進程樹進行修復,也方便 PCB 查找。四、可能用到的數(shù)據(jù)結(jié)構(gòu)和操作的部分代碼1. 數(shù)據(jù)結(jié)構(gòu)/process control block :有些 pcb 的容是考慮到以后調(diào)度功能而設(shè)置的 struct pcbint pid;/process idint ppid;/parent process idint prio;/priorityint s

5、tate;/stateint lasttime;/last execute timeint tottime; /totle execute time;/process nodestruct pnodepcb *node; pnode *sub; pnode *brother; pnode *next;/信號量struct semphore char name5; / 名稱 int count;/ 計數(shù)值 int curpid;/ 當前進程 id pnode *wlist; / 等待鏈表;2.操作2.1 / 初始化錯誤提示信息;2.2 /create processint createpc(in

6、t *para)/add your code here:/ find ppid of this process/init new pcb/add to process tree/ add to process link/show process detailvoid showdetail()/add your code here/print all pcb info/main 函數(shù)可參考下面的代碼,也可以自己寫void main() initerror(); short cflag/* (命令標志) */,pflag/* (參數(shù)標志) */; char cmdstr32;proot = new

7、 pnode; / 創(chuàng)建根節(jié)點進程 proot-node=new pcb;/初始化根節(jié)點的 pcb proot-node-pid=0; proot-node-ppid=-1; proot-node-prio=0;proot-next=NULL;proot-sub=NULL;proot-brother=NULL;plink=proot;for(;)cflag=0;pflag=0;printf(cmd:);scanf(%s,cmdstr);if(!strcmp(cmdstr,exit) /exit the programbreak;if(!strcmp(cmdstr,showdetail)cfla

8、g = 1;pflag = 1;showdetail();elseint *para;char *s,*s1;s = strstr(cmdstr,createpc); /create processif(s)cflag=1;para = (int *)malloc(3);/getparameters1 = substr(s,instr(s,()+1,strlen(s)-2); /get param string para=strtoarray(s1);/get parameter createpc(para); /create process pflag=1;if(!cflag)geterro

9、r(0);elseif(!pflag)geterror(1);五、實驗步驟完善實驗提供的代碼后,輸入 createpc 命令創(chuàng)建進程,輸入 showdetail 顯示每個進程 及其子進程的信息,測試命令解釋如下:1) createpc 創(chuàng)建進程命令。參數(shù): 1、 pid (進程 id) 2 、 ppid(父進程 id) 3、prio (優(yōu)先級)。示例: createpc(1,0,1) 。創(chuàng)建一個進程,其進程號為 1,父進程號為 0,優(yōu)先級為 1. createpc(2,1,2) 。創(chuàng)建一個進程,其進程號為 2,父進程號為 1,優(yōu)先級為 2。2) showdetail 顯示進程信息命令。3)ex

10、it 退出命令行。六、實習報告容1畫出你所創(chuàng)建的進程樹的結(jié)構(gòu)圖(也可以用上述圖1-1)。2. 顯示運行結(jié)果:至少有五次運行過程截圖,這五次截圖分 別展現(xiàn)不同類型的父子關(guān)系,并在截圖的下方配文字以說明 自己創(chuàng)建的進程數(shù)量以及這圖所展示的進程家族關(guān)系。createpc(1,0,1)Showdetail以 P1 為第一層,運行結(jié)果;createpc(1,0,1)createpc(2,1,2) createpc(3,1,2) Showdetail以 P1為第一層, P2, P3為第二層,且為 P1 的子進程,運行結(jié)果;createpc(1,0,1) createpc(2,1,2) createpc(3

11、,1,2) createpc(4,2,3) createpc(5,2,3) createpc(6,3,3) createpc(7,3,3) Showdetail以 P1 為第一層, P2,P3 為第二層,且為 P1 的子進程; P4, P5, P6,P7 為第三層; P4,P5 為 P2 的子進程; P6,P7為 P3 的子進程;運行結(jié)果;createpc(1,0,1)createpc(2,1,2) createpc(3,1,2)createpc(4,2,3)createpc(5,2,3) createpc(6,3,3) createpc(7,3,3) createpc(8,4,4) crea

12、tepc(9,4,4) createpc(10,6,4) createpc(11,6,4) createpc(12,7,4) createpc(13,7,4) Showdetail以 P1為第一層, P2,P3為第二層,且為 P1 的子進程; P4, P5, P6,P7 為第三層; P4,P5 為 P2 的子進程; P6,P7為 P3的子進程; P8,P9, P10,P11, P12, P13 為第四層,且 P8, P9為 P4的子進程; P10, P11為 P6的子進程; P12,P13為P7的子進程;運行結(jié)果;createpc(1,0,1)createpc(2,1,2) createpc(

13、3,1,2)createpc(4,2,3)createpc(5,2,3) createpc(6,3,3)createpc(7,3,3)createpc(8,4,4) createpc(9,4,4) createpc(10,6,4) createpc(11,6,4) createpc(12,7,4) createpc(13,7,4) createpc(14,8,5) createpc(15,8,5) Showdetail以 P1為第一層, P2,P3為第二層,且為 P1 的子進程; P4, P5, P6,P7 為第三層; P4,P5 為 P2 的子進程; P6,P7為 P3的子進程; P8,P9, P10,P11, P12, P13 為第四層,且 P8, P9為 P4的子進程; P10,P11為 P6的子進程; P12,P13為 P7的子進程;運行結(jié)果; P14, P15 為第五層,且為 P8的子進程,運行結(jié)果;3. 說 明 您 的 關(guān) 鍵 函 數(shù) 的 流 程 : 說 明 createpc(para)函 數(shù) 、 showdetail() 函數(shù)和 main()函數(shù)的功能,并以流程圖或文字 的形式展現(xiàn)。createpc(para)函數(shù):創(chuàng)建進程showdetail() 函數(shù):顯示進程的細

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論