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

正文內(nèi)容

操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書-在線瀏覽

2024-09-15 06:38本頁(yè)面
  

【正文】 prootnodeppid=1。 prootnext=NULL。 prootbrother=NULL。 for(。 pflag=0。 scanf(%s,cmdstr)。 if(!strcmp(cmdstr,showdetail)) { cflag = 1。 showdetail()。 char *s,*s1。 //create process if(s) { cflag=1。 //getparameter s1 = substr(s,instr(s,39。)+1,strlen(s)2)。//get parameter createpc(para)。 } } if(!cflag) geterror(0)。 }}五、實(shí)驗(yàn)步驟輸入實(shí)驗(yàn)提供的代碼后,可以輸入 createpc 命令創(chuàng)建進(jìn)程,輸入 showdetail 顯示每個(gè)進(jìn)程及其子進(jìn)程的信息,測(cè)試命令解釋如下:1) createpc 創(chuàng)建進(jìn)程命令。 示例:createpc(1,0,1) 。創(chuàng)建一個(gè)進(jìn)程,其進(jìn)程號(hào)為 2,父進(jìn)程號(hào)為 1,優(yōu)先級(jí)為 2。3) exit退出命令行。二、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)針對(duì)操作系統(tǒng)中進(jìn)程撤銷相關(guān)理論進(jìn)行實(shí)驗(yàn)。1) 采用動(dòng)態(tài)或靜態(tài)方法生成一顆進(jìn)程樹(進(jìn)程數(shù)目≥20);2) 設(shè)計(jì)進(jìn)程撤銷算法;3) 實(shí)現(xiàn)進(jìn)程撤銷函數(shù),采用級(jí)聯(lián)方式撤銷;4) 可動(dòng)態(tài)撤銷進(jìn)程;5) 可動(dòng)態(tài)觀察進(jìn)程樹的情況;6) 測(cè)試程序并得到正確結(jié)果。2) 進(jìn)程子樹的刪除對(duì)于已經(jīng)創(chuàng)建的進(jìn)程樹(可以參考實(shí)驗(yàn) 1 創(chuàng)建進(jìn)程),在刪除的時(shí)候,首先需要考慮把該進(jìn)程及其子孫從整棵樹中脫離出來(lái),這樣才不會(huì)破壞整棵樹的完整性。四、思考題1) 進(jìn)程撤銷的核心內(nèi)容是什么?2) 進(jìn)程總鏈在進(jìn)程撤銷過(guò)程中有什么作用? 實(shí)驗(yàn)三 P、V 原語(yǔ)的模擬實(shí)現(xiàn)實(shí)驗(yàn)學(xué)時(shí):2實(shí)驗(yàn)類型:驗(yàn)證實(shí)驗(yàn)要求:必修一、實(shí)驗(yàn)?zāi)康?) 理解信號(hào)量相關(guān)理論;2) 掌握記錄型信號(hào)量結(jié)構(gòu);3) 掌握 P、V 原語(yǔ)實(shí)現(xiàn)機(jī)制。代碼主要模擬信號(hào)量的 P 操作(down)和 V 操作(up)。信號(hào)量通常通過(guò)兩個(gè)原子操作 dwon(P)和 up(V)來(lái)訪問。2) 記錄型信號(hào)量記錄型信號(hào)量采用了“讓權(quán)等待”的策略,存在多個(gè)進(jìn)程等待訪問同一臨界資源的情況,所以記錄型信號(hào)量需要一個(gè)等待鏈表來(lái)存放等待該信號(hào)量的進(jìn)程控制塊或進(jìn)程號(hào)。三、實(shí)驗(yàn)要求1) 輸入給定代碼;2) 進(jìn)行功能測(cè)試并得出正確結(jié)果。四、程序清單include semphore sem[5]。 //define 019 total 20 process//down operation void down(char * sname,int pid) { int fflag,pflag。 semphore *s。 pflag=0。i5。sem[i]。 break。i20。 pflag=1。 } if(!fflag) //semaphore is not exist { printf(the semphore 39。 is not exist!\n,sname)。 } if(!pflag) //pid is not exist { printf(the process 39。 is not exist!\n,pid)。 } scount。 else { if(swlist) //the link is not NULL, add the pcb to the last { for(p=swlist。p=pnext)。 } else //this pcb is the first pcb be added to the down list swlist=p1。 for(int i=0。i++) if(!strcmp(sem[i].name,sname)) //find the semaphore by name { fflag=1。 } if(fflag) //find it { sem[i].count++。 sem[i].wlist = sem[i].wlistnext。%s39。 } //show semphore infomation void showdetail() { int i。 printf(\n)。i5。 p=sem[i].wlist。 p=pnext。 printf(\n)。 strcat(sem[1].name,s1)。 strcat(sem[3].name,s3)。 for(int i=0。i++) { sem[i].wlist=NULL。 } //init process for(i=0。i++) { pr[i] = new pnode。 pr[i]nodepid=i。 pr[i]next=NULL。 } } void main() { short cflag,pflag。 char *s,*s1,*s2。 init()。) { cflag=0。 printf(cmd:)。 if(!strcmp(cmdstr,exit)) //exit the program break。 pflag = 1。 } else { s = strstr(cmdstr,down)。 //getparameter s1 = substr(s,instr(s,39。)+1,instr(s,39。)1)。,39。)39。 if(s1 amp。 s2) { down(s1,atoi(s2))。 } } else { s=strstr(cmdstr,up)。 s1 = substr(s,instr(s,39。)+1,instr(s,39。)1)。 pflag=1。 else if(!pflag) geterror(1)。六、實(shí)驗(yàn)指導(dǎo) 實(shí)驗(yàn)中提供了 5 個(gè)信號(hào)量(s0s4)和 20 個(gè)進(jìn)程(pid 019)。具體輸入解釋如下: 1) dwon 獲取信號(hào)量操作(P 操作)。 示例:down(s1,2) 。 2) up 釋放信號(hào)量操作(V 操作)。 示例:up(s1)。 3) showdetail 顯示各信號(hào)量狀態(tài)及其等待隊(duì)列。七、實(shí)驗(yàn)思考1) 如何修改 dwon 操作,使之能一次申請(qǐng)多個(gè)信號(hào)量?2)在某個(gè)時(shí)刻,一個(gè)進(jìn)程最多可以等待多少個(gè)信號(hào)量? 實(shí)驗(yàn)四 帶優(yōu)先級(jí)的時(shí)間片輪換的進(jìn)程調(diào)度算法的實(shí)現(xiàn)實(shí)驗(yàn)學(xué)時(shí):4實(shí)驗(yàn)類型:設(shè)計(jì)實(shí)驗(yàn)要求:必修一、實(shí)驗(yàn)?zāi)康模?)掌握進(jìn)程狀態(tài)轉(zhuǎn)換過(guò)程(2)掌握時(shí)間片輪轉(zhuǎn)的進(jìn)程調(diào)度算法;(3)掌握帶優(yōu)先級(jí)的進(jìn)程調(diào)度算法;二、實(shí)驗(yàn)內(nèi)容(1)自定義PCB的數(shù)據(jù)結(jié)構(gòu);(2)使用帶優(yōu)先級(jí)的時(shí)間片輪轉(zhuǎn)法調(diào)度進(jìn)程,每運(yùn)行一個(gè)時(shí)間片,優(yōu)先級(jí)減半。C)ps 查看當(dāng)前進(jìn)程狀態(tài)D)sleep 命令將進(jìn)程掛起E)awake 命令喚醒1個(gè)被掛起的進(jìn)程F)kill 命令殺死進(jìn)程G)quit命令退出(4)選用面向?qū)ο蟮木幊谭椒ā?) 優(yōu)先級(jí)優(yōu)先級(jí)體現(xiàn)了進(jìn)程的重要程度或緊迫程度,在大多數(shù)現(xiàn)代操作系統(tǒng)中,都采用了優(yōu)先級(jí)調(diào)度策略。在本實(shí)驗(yàn)中按數(shù)值大小決定優(yōu)先級(jí),數(shù)值大的優(yōu)先級(jí)高。當(dāng)時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序把此進(jìn)程終止,把該進(jìn)程放到隊(duì)尾。在調(diào)度過(guò)程中,需要通過(guò)時(shí)間函數(shù)檢測(cè)進(jìn)程的執(zhí)行時(shí)間,當(dāng)該進(jìn)程執(zhí)行時(shí)間≥時(shí)間片大小時(shí),進(jìn)行調(diào)度。4) 基于時(shí)間片的高優(yōu)先級(jí)調(diào)度在調(diào)度算法中,只有處于就緒狀態(tài)的進(jìn)程才能被調(diào)度,調(diào)度算法結(jié)合了優(yōu)先級(jí)調(diào)度和時(shí)間片輪轉(zhuǎn)調(diào)度算法,約定:從最高優(yōu)先級(jí)隊(duì)列取第1個(gè)就緒狀態(tài)的進(jìn)程進(jìn)行調(diào)度,時(shí)間片到后降低其優(yōu)先級(jí)(降低一半),然后插入到低優(yōu)先級(jí)隊(duì)列的尾部,每次調(diào)度后,顯示進(jìn)程的狀態(tài)。//標(biāo)識(shí)符 int state。//優(yōu)先級(jí),MAXPIOR為最高優(yōu)先級(jí)*/ int life。/*指針*/} *array[MAXPIOR]。/*標(biāo)識(shí)符表*/int life=0。char mand[7][10]。void init()。void kill(int x)。void routine()。void init(){ int i=0。iMAXPIOR。 sprintf(mand[0],quit)。 sprintf(mand[2],create)。 sprintf(mand[4],round)。 sprintf(mand[6],awake)。 struct pcb *p,*q,*s。amp。 if (i==LEN) return 1。 srand((unsigned)time(NULL))。 //最大優(yōu)先級(jí)設(shè)定為0-2的整數(shù) //printf(pior=%d\n,pior)。//create a node to keep the process messege sident=i。 spior=pior。//進(jìn)程有生命期假設(shè)為1-20 snext=NULL。 p=array[pior]。 else { while(p!=NULL) { q=p。 } qnext=s。 ps()。 return 1。 struct pcb *p。iMAXPIOR。 while (p!=NULL) {printf(id:%d,state:%d,pior:%d,life:%d\n,pident,pstate,ppior,plife)。 } }}void sleep(int x){int i=0,test=0。 while(test==0amp。i!=MAXPIOR) {p=array[i]。amp。continue。killtest=1。 } else { q=p。 } } if (test==0) i++。 else if (pstate==2) printf(the process %d has blocked,cannot sleep again!,pident)。 ps()。 struct pcb *p=NULL,*q=NULL。amp。 if (i!=MAXPIOR amp。 p==NULL) { i++。 } while(p!=NULL) { if (pident==x) { test=1。break。p=pnext。 }/*找到X所在指針*/ if (i==MAXPIOR) printf(Invaild process number.)。 else pstate=0。}void kill(int x){int i=0,test=0。 while(test==0amp。i!=MAXPIOR) {p=array[i]。amp。continue。killtest=1。 } else { q=p。 } } if (test==0) i++。 else { if (p==array[i]) { array[i]=array[i]next。 free(p)。 idlist[x]=0。 free(p)。 for (i=0。i++) if (stricmp(str,mand[i])==0) break。exit(0)。 case 1:ps()。 case 2:create()。 case 3: { printf(Which process you want to kill?\n)。ii)。 break。break。 scanf(%d,amp。 sleep(ii)。 case 6: printf(Which process you want to awake?\n)。ii)。break。 }}void routine()//執(zhí)行一次調(diào)度運(yùn)行,將最高優(yōu)先級(jí)隊(duì)列的進(jìn)程運(yùn)行1個(gè)時(shí)間片,并降低其優(yōu)先級(jí){ int i=MAXPIOR1,pior=0,t。 do { whil
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1