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

正文內(nèi)容

操作系統(tǒng)實驗指導書(編輯修改稿)

2025-09-01 06:38 本頁面
 

【文章內(nèi)容簡介】 gnal 操作。六、實驗指導 實驗中提供了 5 個信號量(s0s4)和 20 個進程(pid 019)。在程序運行過程中可以鍵入 down up 命令和 showdetail 命令顯示每個信號量的狀態(tài)。具體輸入解釋如下: 1) dwon 獲取信號量操作(P 操作)。 參數(shù): 1 sname 2 pid 。 示例:down(s1,2) 。進程號為 2 的進程申請名字為 s1 的信號量。 2) up 釋放信號量操作(V 操作)。 參數(shù) 1 sname。 示例:up(s1)。釋放信號量名字為 s1 的信號量。 3) showdetail 顯示各信號量狀態(tài)及其等待隊列。 4) exit退出命令行。七、實驗思考1) 如何修改 dwon 操作,使之能一次申請多個信號量?2)在某個時刻,一個進程最多可以等待多少個信號量? 實驗四 帶優(yōu)先級的時間片輪換的進程調(diào)度算法的實現(xiàn)實驗學時:4實驗類型:設(shè)計實驗要求:必修一、實驗目的(1)掌握進程狀態(tài)轉(zhuǎn)換過程(2)掌握時間片輪轉(zhuǎn)的進程調(diào)度算法;(3)掌握帶優(yōu)先級的進程調(diào)度算法;二、實驗內(nèi)容(1)自定義PCB的數(shù)據(jù)結(jié)構(gòu);(2)使用帶優(yōu)先級的時間片輪轉(zhuǎn)法調(diào)度進程,每運行一個時間片,優(yōu)先級減半。(3)命令集A)create 隨機創(chuàng)建進程,進程的優(yōu)先級與所需要的時間片隨機決定;B)round 執(zhí)行1次時間片輪轉(zhuǎn)操作,其方法為運行高優(yōu)先級隊列的第1個,再降低其優(yōu)先級,插入到相應的隊列中。C)ps 查看當前進程狀態(tài)D)sleep 命令將進程掛起E)awake 命令喚醒1個被掛起的進程F)kill 命令殺死進程G)quit命令退出(4)選用面向?qū)ο蟮木幊谭椒?。三、實驗原理或算法本實驗結(jié)合了進程狀態(tài)轉(zhuǎn)換、優(yōu)先級調(diào)度、時間片輪轉(zhuǎn)調(diào)度三方面的內(nèi)容,根據(jù)進程狀態(tài)轉(zhuǎn)換圖,設(shè)置SLEEP命令,將1個進程掛起,AWAKE命令喚醒1個被掛起的進程(從阻塞狀態(tài)到就緒狀態(tài))。1) 優(yōu)先級優(yōu)先級體現(xiàn)了進程的重要程度或緊迫程度,在大多數(shù)現(xiàn)代操作系統(tǒng)中,都采用了優(yōu)先級調(diào)度策略。優(yōu)先級從小到大(如 0127) 優(yōu)先級最高,127 最低。在本實驗中按數(shù)值大小決定優(yōu)先級,數(shù)值大的優(yōu)先級高。2) 基于時間片調(diào)度將所有的就緒進程按照先來先服務的原則,排成一個隊列,每次調(diào)度時,將 cpu 分配給隊首進程,并令其執(zhí)行一個時間片。當時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度程序把此進程終止,把該進程放到隊尾。在該實驗中,時間片以 100ms 為單位(實際的要小得多)。在調(diào)度過程中,需要通過時間函數(shù)檢測進程的執(zhí)行時間,當該進程執(zhí)行時間≥時間片大小時,進行調(diào)度。3) 高優(yōu)先級調(diào)度優(yōu)先級高的進程優(yōu)先得到 cpu,等該進程執(zhí)行完畢后,另外的進程才能執(zhí)行。4) 基于時間片的高優(yōu)先級調(diào)度在調(diào)度算法中,只有處于就緒狀態(tài)的進程才能被調(diào)度,調(diào)度算法結(jié)合了優(yōu)先級調(diào)度和時間片輪轉(zhuǎn)調(diào)度算法,約定:從最高優(yōu)先級隊列取第1個就緒狀態(tài)的進程進行調(diào)度,時間片到后降低其優(yōu)先級(降低一半),然后插入到低優(yōu)先級隊列的尾部,每次調(diào)度后,顯示進程的狀態(tài)。四、程序清單include include include //include include //定義進程數(shù)define LEN 10//定義最高優(yōu)先級 define MAXPIOR 3// 定義時間片define QUANTUM 2define PCB sizeof(struct pcb)struct pcb //PCB{int ident。//標識符 int state。//狀態(tài) 0就緒,1-運行,2-堵塞 int pior。//優(yōu)先級,MAXPIOR為最高優(yōu)先級*/ int life。//生命期*/ struct pcb *next。/*指針*/} *array[MAXPIOR]。static int idlist[LEN]。/*標識符表*/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)先級設(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。//進程有生命期假設(shè)為1-20 snext=NULL。 life=life+(slife)。 p=array[pior]。//建立同優(yōu)先級隊列(鏈表) 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()//對輸入命令的處理{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ōu)先級隊列的進程運行1個時間片,并降低其優(yōu)先級{ int i=MAXPIOR1,pior=0,t。 struct pcb *pp,*qq,*pr,*r。 do { while (i=0 amp。amp。 array[i]==NULL) i=i
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1