91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-18
  • 語言: 其他
  • 標(biāo)簽: code??

資源簡介

實(shí)驗(yàn)1 進(jìn)程調(diào)度(2學(xué)時(shí))

一、實(shí)驗(yàn)?zāi)康?br/>通過實(shí)驗(yàn)加強(qiáng)對進(jìn)程調(diào)度算法的理解和掌握。
二、實(shí)驗(yàn)內(nèi)容
編寫程序?qū)崿F(xiàn)基于優(yōu)先級的時(shí)間片輪轉(zhuǎn)調(diào)度算法。
三、實(shí)驗(yàn)要求
1、假定系統(tǒng)有5個(gè)進(jìn)程,每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表,
其中:
進(jìn)程名:作為進(jìn)程的標(biāo)識,假設(shè)五個(gè)進(jìn)程的進(jìn)程名分別為p1,p2,p3,p4,p5。
指針:進(jìn)程按順序排成循環(huán)鏈表,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊首地址,最后一個(gè)進(jìn)程中的指針指出第一個(gè)進(jìn)程的進(jìn)程控制塊首地址。
要求運(yùn)行時(shí)間:假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。
已運(yùn)行時(shí)間:假設(shè)進(jìn)程已經(jīng)運(yùn)行的單位時(shí)間數(shù),初值為0。
狀態(tài):可假設(shè)有兩種狀態(tài),就緒狀態(tài)和結(jié)束狀態(tài)。進(jìn)程的初始狀態(tài)都為就緒狀態(tài)。
2、每次運(yùn)行所設(shè)計(jì)的處理器調(diào)度程序調(diào)度進(jìn)程之前,為每個(gè)進(jìn)程隨機(jī)確定它的要求運(yùn)行時(shí)間和優(yōu)先級(數(shù)值越大,優(yōu)先級越高)。
3、進(jìn)程調(diào)度依據(jù)優(yōu)先級進(jìn)行,優(yōu)先級隨著時(shí)間動(dòng)態(tài)增加,每經(jīng)過一個(gè)時(shí)間片,優(yōu)先級加1。
4、此程序是模擬處理器調(diào)度,因此,被選中的進(jìn)程并不實(shí)際啟動(dòng)運(yùn)行,而是執(zhí)行
已運(yùn)行時(shí)間+1
來模擬進(jìn)程的一次運(yùn)行,表示進(jìn)程已經(jīng)運(yùn)行過一個(gè)單位時(shí)間。
5、在所設(shè)計(jì)的程序中應(yīng)有顯示語句,能顯示每次被選中的進(jìn)程名以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
using?namespace?std;

struct?PCB{
????string?name;?//?進(jìn)程名
????int?prio;?//?優(yōu)先級
????int?requ_time;?//?要求運(yùn)行時(shí)間
????int?fini_time;?//?已運(yùn)行時(shí)間
????bool?state;?//?進(jìn)程狀態(tài)
????PCB*?next;?//?指向下一個(gè)進(jìn)程的指針
????void?init(string?name){?//?進(jìn)程初始化
????????this->name?=?name;
????????prio?=?rand()%10+1;?//?隨機(jī)優(yōu)先級
????????requ_time?=?rand()%20+1;?//?隨機(jī)要求運(yùn)行時(shí)間
????????fini_time?=?0;?//?已運(yùn)行時(shí)間初始化為0
????????state?=?false;?//?進(jìn)程狀態(tài)為false?表示還沒完成,處于就緒狀態(tài);?為true?表示已經(jīng)完成,處于結(jié)束狀態(tài)
????}
};
PCB?p[6];
PCB*?it;

bool?cmp(PCB?A?PCB?B){?//?對進(jìn)程的排序函數(shù)
????if(A.state==false?&&?B.state==false){?//?都處于就緒狀態(tài),如果優(yōu)先級相等,則還需要完成時(shí)間短的排在前面,否則優(yōu)先級高的排在前面
????????if(A.prio?==?B.prio)?return?(A.requ_time-A.fini_time)<(B.requ_time-B.fini_time);
????????return?A.prio>B.prio;
????}else{?//?如果有進(jìn)程處于完成狀態(tài),則處于就緒狀態(tài)的排在前面
????????if(A.state==false)?return?true;
????????else?if(B.state==false)?return?false;
????????else?return?A.prio>B.prio;
????}
}

bool?check(){?//?檢查是否所有進(jìn)程都完成了,都完成了返回true還有沒完成的返回false
????bool?ret?=?true;
????it?=?&p[1];
????for(int?i=1;?i<6;?i++){
????????if(it->state?==?false)?{?//?仍有沒完成的
????????????ret?=?false;
????????????break;
????????}
????????it?=?it->next;
????}
????return?ret;
}

void?change(){?//?對于重新排序完的鏈表,修改他們的指針
????for(int?i=1;?i<6;?i++){
????????p[i].next?=?&p[i+1];
????}
????p[5].next?=?&p[1];
}

void?print(){?//?打印進(jìn)程狀態(tài)
????it?=?&p[1];
????cout?<????for(int?i=1;?i<6;?i++){
????????cout?<name?<prio?<requ_time?<fini_time?<state?<????????it?=?it->next;
????}
}

int?main()
{
????srand(time(NULL));?//?隨機(jī)的種子
????p[1].init(“p1“);?p[2].init(“p2“);?p[3].init(“p3“);?p[4].init(“p4“);?p[5].init(“p5“);?//?初始化每一個(gè)進(jìn)程
????change();
????cout?<????print();
????sort(p+1p+6cmp);?//?按照優(yōu)先級對進(jìn)程重新排序
????change();
????cout?<????print();
????int?now?=?0;?//?當(dāng)前運(yùn)行的時(shí)間
????while(check()?==?false){?//?如果仍然有沒完成的進(jìn)程,?CPU繼續(xù)運(yùn)行
????????now++;?//?時(shí)間+1
????????it?=?&p[1];?//?it是處于鏈表第一個(gè)的地址,代表處于就緒狀態(tài)的進(jìn)程且優(yōu)先級最高
????????it->fini_time++;?//?執(zhí)行
????????if(it->fini_time?==?it->requ_time)?{?//?該進(jìn)程完成
????????????it->state?=?true;?//?更改為完成狀態(tài)
????????????cout?<name?<????????????cout?<????????????print();
????????}
????????it?=?it->next;?//?指向下一個(gè)進(jìn)程
????????for(int?i=2;?i<6;?i++){
????????????if(it->state?==?true)?break;
????????????it->prio++;?//?除了當(dāng)前的進(jìn)程,其他處于就緒狀態(tài)的進(jìn)程優(yōu)先級+1
it?=?it->next;
????????}
????????sort(p+1p+6cmp);?//?按照優(yōu)先級重新排序
????????change();?//?更改指針
????}
????cout?<????print();

????return?0;
}

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3356??2018-04-27?08:05??main.cpp
?????文件???????33792??2018-04-25?15:15??實(shí)驗(yàn)1.doc

評論

共有 條評論