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

正文內(nèi)容

操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)(編輯修改稿)

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

【文章內(nèi)容簡(jiǎn)介】 gnal 操作。六、實(shí)驗(yàn)指導(dǎo) 實(shí)驗(yàn)中提供了 5 個(gè)信號(hào)量(s0s4)和 20 個(gè)進(jìn)程(pid 019)。在程序運(yùn)行過(guò)程中可以鍵入 down up 命令和 showdetail 命令顯示每個(gè)信號(hào)量的狀態(tài)。具體輸入解釋如下: 1) dwon 獲取信號(hào)量操作(P 操作)。 參數(shù): 1 sname 2 pid 。 示例:down(s1,2) 。進(jìn)程號(hào)為 2 的進(jìn)程申請(qǐng)名字為 s1 的信號(hào)量。 2) up 釋放信號(hào)量操作(V 操作)。 參數(shù) 1 sname。 示例:up(s1)。釋放信號(hào)量名字為 s1 的信號(hào)量。 3) showdetail 顯示各信號(hào)量狀態(tài)及其等待隊(duì)列。 4) exit退出命令行。七、實(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í)減半。(3)命令集A)create 隨機(jī)創(chuàng)建進(jìn)程,進(jìn)程的優(yōu)先級(jí)與所需要的時(shí)間片隨機(jī)決定;B)round 執(zhí)行1次時(shí)間片輪轉(zhuǎn)操作,其方法為運(yùn)行高優(yōu)先級(jí)隊(duì)列的第1個(gè),再降低其優(yōu)先級(jí),插入到相應(yīng)的隊(duì)列中。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ū)ο蟮木幊谭椒?。三、?shí)驗(yàn)原理或算法本實(shí)驗(yàn)結(jié)合了進(jìn)程狀態(tài)轉(zhuǎn)換、優(yōu)先級(jí)調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度三方面的內(nèi)容,根據(jù)進(jìn)程狀態(tài)轉(zhuǎn)換圖,設(shè)置SLEEP命令,將1個(gè)進(jìn)程掛起,AWAKE命令喚醒1個(gè)被掛起的進(jìn)程(從阻塞狀態(tài)到就緒狀態(tài))。1) 優(yōu)先級(jí)優(yōu)先級(jí)體現(xiàn)了進(jìn)程的重要程度或緊迫程度,在大多數(shù)現(xiàn)代操作系統(tǒng)中,都采用了優(yōu)先級(jí)調(diào)度策略。優(yōu)先級(jí)從小到大(如 0127) 優(yōu)先級(jí)最高,127 最低。在本實(shí)驗(yàn)中按數(shù)值大小決定優(yōu)先級(jí),數(shù)值大的優(yōu)先級(jí)高。2) 基于時(shí)間片調(diào)度將所有的就緒進(jìn)程按照先來(lái)先服務(wù)的原則,排成一個(gè)隊(duì)列,每次調(diào)度時(shí),將 cpu 分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。當(dāng)時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序把此進(jìn)程終止,把該進(jìn)程放到隊(duì)尾。在該實(shí)驗(yàn)中,時(shí)間片以 100ms 為單位(實(shí)際的要小得多)。在調(diào)度過(guò)程中,需要通過(guò)時(shí)間函數(shù)檢測(cè)進(jìn)程的執(zhí)行時(shí)間,當(dāng)該進(jìn)程執(zhí)行時(shí)間≥時(shí)間片大小時(shí),進(jìn)行調(diào)度。3) 高優(yōu)先級(jí)調(diào)度優(yōu)先級(jí)高的進(jìn)程優(yōu)先得到 cpu,等該進(jìn)程執(zhí)行完畢后,另外的進(jìn)程才能執(zhí)行。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)。四、程序清單include include include //include include //定義進(jìn)程數(shù)define LEN 10//定義最高優(yōu)先級(jí) define MAXPIOR 3// 定義時(shí)間片define QUANTUM 2define PCB sizeof(struct pcb)struct pcb //PCB{int ident。//標(biāo)識(shí)符 int state。//狀態(tài) 0就緒,1-運(yùn)行,2-堵塞 int pior。//優(yōu)先級(jí),MAXPIOR為最高優(yōu)先級(jí)*/ int life。//生命期*/ struct pcb *next。/*指針*/} *array[MAXPIOR]。static int idlist[LEN]。/*標(biāo)識(shí)符表*/int life=0。/*總生命期初始化為0*/char str[20]。char mand[7][10]。int killtest=0。void init()。int create()。void kill(int x)。void process()。void routine()。void ps()。void init(){ int i=0。 for (i=0。iMAXPIOR。i++) array[i]=NULL。 sprintf(mand[0],quit)。 sprintf(mand[1],ps)。 sprintf(mand[2],create)。 sprintf(mand[3],kill)。 sprintf(mand[4],round)。 sprintf(mand[5],sleep)。 sprintf(mand[6],awake)。}int create(){ int i=0,pior=0。 struct pcb *p,*q,*s。 while (idlist[i]!=0amp。amp。i=LEN1) i++。 if (i==LEN) return 1。 idlist[i]=1。 srand((unsigned)time(NULL))。 pior=rand()%MAXPIOR。 //最大優(yōu)先級(jí)設(shè)定為0-2的整數(shù) //printf(pior=%d\n,pior)。 s=(struct pcb *)malloc(PCB)。//create a node to keep the process messege sident=i。 sstate=0。 spior=pior。 slife=1+rand()%20。//進(jìn)程有生命期假設(shè)為1-20 snext=NULL。 life=life+(slife)。 p=array[pior]。//建立同優(yōu)先級(jí)隊(duì)列(鏈表) if (p==NULL) array[pior]=s。 else { while(p!=NULL) { q=p。 p=pnext。 } qnext=s。 } printf(success create process id=%d, current process state disp below:\n,sident)。 ps()。 //printf(end display\n)。 return 1。}void ps(){int i=0。 struct pcb *p。 for (i=0。iMAXPIOR。i++) {p=array[i]。 while (p!=NULL) {printf(id:%d,state:%d,pior:%d,life:%d\n,pident,pstate,ppior,plife)。 p=pnext。 } }}void sleep(int x){int i=0,test=0。 struct pcb *p=NULL,*q=NULL。 while(test==0amp。amp。i!=MAXPIOR) {p=array[i]。 if (i!=MAXPIOR amp。amp。 p==NULL) { i++。continue。 } while(p!=NULL) { if (pident==x) { test=1。killtest=1。break。 } else { q=p。p=pnext。 } } if (test==0) i++。 }/*找到X所在指針*/ if (i==MAXPIOR) printf(Invaild process number.)。 else if (pstate==2) printf(the process %d has blocked,cannot sleep again!,pident)。 else pstate=2。 ps()。}void awake(int x){int i=0,test=0。 struct pcb *p=NULL,*q=NULL。 while(test==0amp。amp。i!=MAXPIOR) {p=array[i]。 if (i!=MAXPIOR amp。amp。 p==NULL) { i++。continue。 } while(p!=NULL) { if (pident==x) { test=1。killtest=1。break。 } else { q=p。p=pnext。 } } if (test==0) i++。 }/*找到X所在指針*/ if (i==MAXPIOR) printf(Invaild process number.)。 else if (pstate==0) printf(the process %d is ready state,cannot awake again!,pident)。 else pstate=0。 ps()。}void kill(int x){int i=0,test=0。 struct pcb *p=NULL,*q=NULL。 while(test==0amp。amp。i!=MAXPIOR) {p=array[i]。 if (i!=MAXPIOR amp。amp。 p==NULL) { i++。continue。 } while(p!=NULL) { if (pident==x) { test=1。killtest=1。break。 } else { q=p。p=pnext。 } } if (test==0) i++。 }/*找到X所在指針*/ if (i==MAXPIOR) printf(Invaild process number.)。 else { if (p==array[i]) { array[i]=array[i]next。 idlist[x]=0。 free(p)。 } else { qnext=pnext。 idlist[x]=0。 life=life(plife)。 free(p)。 } }}void process()//對(duì)輸入命令的處理{int i=0,ii=0。 for (i=0。i7。i++) if (stricmp(str,mand[i])==0) break。 switch(i) {case 0:printf(thank you for using the program!\n)。exit(0)。 break。 case 1:ps()。 break。 case 2:create()。 break。 case 3: { printf(Which process you want to kill?\n)。 scanf(%d,amp。ii)。 kill(ii)。 break。 } case 4: routine()。break。 case 5: printf(Which process you want to sleep?\n)。 scanf(%d,amp。ii)。 sleep(ii)。break。 case 6: printf(Which process you want to awake?\n)。 scanf(%d,amp。ii)。 awake(ii)。break。 default: printf(Error input create, ps, kill,sleep,awake,quit\n)。 }}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。 struct pcb *pp,*qq,*pr,*r。 do { while (i=0 amp。amp。 array[i]==NULL) i=i
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1