亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 1.cpp

?? 調(diào)度算法,xianlaixianfuwu
?? CPP
字號(hào):
// 時(shí)間片輪轉(zhuǎn)調(diào)度算法
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>

using namespace std;
enum STATUS {RUN,READY,WAIT,FINISH};

struct PCBNode
{        
    int  processID;              //進(jìn)程ID
    STATUS  status;              //進(jìn)程狀態(tài)
    int  priorityNum;          //優(yōu)先數(shù)
    int  reqTime;             //總的需要運(yùn)行時(shí)間
    int  remainTime;          //剩下需要運(yùn)行時(shí)間
    int  arriveTime;          //進(jìn)入就緒隊(duì)列時(shí)間
    int  startTime;           //開始運(yùn)行時(shí)間
    int  finishTime;          //結(jié)束運(yùn)行時(shí)間
    int  totalTime;           //周轉(zhuǎn)時(shí)間
    float  weightTotalTime;      //帶權(quán)周轉(zhuǎn)時(shí)間    
};

struct QueueNode 
{
    int ID;          //進(jìn)程ID
    struct QueueNode * next;   //隊(duì)列中下一個(gè)進(jìn)程指針
};

struct LinkQueue
{
    QueueNode *head;//隊(duì)首
};
void Fcfs(LinkQueue& Q, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable);
bool RR_Run(LinkQueue& Q,QueueNode* q, QueueNode* p, const int Round,int& currentTime,PCBNode * ProcessTable);
//分配時(shí)間片給q所指進(jìn)程,p為剛退出的進(jìn)程
void RoundRobin(LinkQueue& Q,const int Round, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable);
//時(shí)間片輪轉(zhuǎn)調(diào)度,調(diào)用RR_Run(),時(shí)間片大小設(shè)為Round
void InitialQueue(LinkQueue& Q,PCBNode * ProcessTable,const int processnum);
//初始化就緒隊(duì)列
void Input(PCBNode * ProcessTable, const int processnum);
//從input.txt文件輸入數(shù)據(jù)

int main()
{
    LinkQueue Q;//就緒隊(duì)列
    Q.head = NULL;
    const int processnum = 16;//進(jìn)程數(shù)
    const int Round = 1;      //時(shí)間片大小
    int totalTimeSum = 0;     //周轉(zhuǎn)時(shí)間
    int    WeightTotalTimeSum = 0;//帶權(quán)周轉(zhuǎn)時(shí)間
    PCBNode * ProcessTable=new PCBNode[processnum];   //進(jìn)程表

    Input(ProcessTable, processnum);
    InitialQueue(Q, ProcessTable, processnum);
    RoundRobin(Q, Round, totalTimeSum,WeightTotalTimeSum,ProcessTable);    
    cout<<"時(shí)間片輪調(diào)度的平均周轉(zhuǎn)時(shí)間為:"<<totalTimeSum/processnum<<endl;
    cout<<"時(shí)間片輪調(diào)度的平均帶權(quán)周轉(zhuǎn)時(shí)間為:"<<WeightTotalTimeSum/processnum<<endl;

    Input(ProcessTable, processnum);
    InitialQueue(Q, ProcessTable, processnum);
    Fcfs(Q, totalTimeSum,WeightTotalTimeSum,ProcessTable);
    cout<<"先來先服務(wù)的平均周轉(zhuǎn)時(shí)間為:"<<totalTimeSum/processnum<<endl;
    cout<<"先來先服務(wù)的平均帶權(quán)周轉(zhuǎn)時(shí)間為:"<<WeightTotalTimeSum/processnum<<endl;

    delete [] ProcessTable;
    return 0;
}

void RoundRobin(LinkQueue& Q,const int Round, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable)
{
    totalTimeSum = 0;   //總的周轉(zhuǎn)時(shí)間
    weightTotalTimeSum = 0;//平均周轉(zhuǎn)時(shí)間
    int currentTime = 0;   //當(dāng)前時(shí)間
    QueueNode* p;
    QueueNode* q;
    QueueNode* r;
    bool finish = false;//調(diào)用RR_Run()后,該進(jìn)程是否已經(jīng)做完退出
    
    p = Q.head;
    q = p->next;
    while (q != NULL)//從隊(duì)首開始依次分配時(shí)間片
    {
        do
        {        
            cout<<"**********************"<<endl;
            cout<<"在時(shí)間片"<<(currentTime+1)/Round<<"內(nèi),活動(dòng)進(jìn)程為:  "<<q->ID<<endl;
            cout<<"進(jìn)程"<<q->ID<<" 現(xiàn)在需要的時(shí)間片為:  "<<ProcessTable[q->ID].remainTime<<endl;
            finish = RR_Run(Q, q, p, Round, currentTime, ProcessTable);//分配時(shí)間片給q進(jìn)程
            cout<<endl;
            
            if (!finish)//若是進(jìn)程在本時(shí)間片內(nèi)做完,則跳出do…while循環(huán)
            {            
                if (q->next == NULL) 
                {
                    r = Q.head->next;
                }
                else
                {
                    r = q->next;
                }
            }
            else //否則計(jì)算周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間
            {
                totalTimeSum += ProcessTable[q->ID].totalTime;
                weightTotalTimeSum += ProcessTable[q->ID].weightTotalTime;

                delete q; //從隊(duì)列中刪除q進(jìn)程
                q = p;
            }
        }while (!finish &&  (ProcessTable[r->ID].arriveTime > currentTime + Round));
        //下一個(gè)進(jìn)程很晚才來,則繼續(xù)給當(dāng)前進(jìn)程分配時(shí)間片
        
        p = q;
        q = q->next;

        if (q == NULL && Q.head->next!=NULL)
        {
            p = Q.head;
            q = p->next;
        } 
    } 
    delete Q.head;
    Q.head = NULL;
}

bool RR_Run(LinkQueue& Q,QueueNode* q, QueueNode* p, const int Round,int& currentTime,PCBNode * ProcessTable)
{
    if (ProcessTable[q->ID].remainTime <= Round)//在此時(shí)間片內(nèi)能夠做完,之后退出進(jìn)程調(diào)度
    {
        ProcessTable[q->ID].finishTime = currentTime + ProcessTable[q->ID].remainTime;
        ProcessTable[q->ID].totalTime += ProcessTable[q->ID].remainTime;
        ProcessTable[q->ID].weightTotalTime = ProcessTable[q->ID].totalTime/ProcessTable[q->ID].reqTime;        

        currentTime = ProcessTable[q->ID].finishTime;
        
        p->next = q->next;
        cout<<endl;
        cout<<"進(jìn)程"<<q->ID<<"完成!"<<endl;

        return true;
    }
    else//此時(shí)間片內(nèi)做不完
    {
        ProcessTable[q->ID].remainTime = ProcessTable[q->ID].remainTime - Round;
        ProcessTable[q->ID].totalTime += Round;
        currentTime += Round;
        
        return false;
    }
}


void Fcfs(LinkQueue& Q, int& totalTimeSum, int& weightTotalTimeSum,PCBNode * ProcessTable)
{
    totalTimeSum = 0;
    weightTotalTimeSum = 0;//平均周轉(zhuǎn)時(shí)間
    QueueNode* p;
    QueueNode* q;
    
    p = Q.head->next;
    if (p !=NULL ) 
    {
        ProcessTable[p->ID].startTime = ProcessTable[p->ID].arriveTime;
        ProcessTable[p->ID].finishTime = ProcessTable[p->ID].arriveTime + ProcessTable[p->ID].reqTime;
    }
    
    for(q=p->next; q!=NULL; q=q->next)
    {
        
        if (ProcessTable[q->ID].arriveTime < ProcessTable[p->ID].finishTime)
        {
            ProcessTable[q->ID].startTime = ProcessTable[p->ID].finishTime;
            ProcessTable[q->ID].finishTime = ProcessTable[p->ID].finishTime + ProcessTable[q->ID].reqTime;
        }
        else//下個(gè)進(jìn)程到達(dá)時(shí)間較晚
        {
            ProcessTable[q->ID].startTime = ProcessTable[q->ID].arriveTime;
            ProcessTable[q->ID].finishTime = ProcessTable[q->ID].arriveTime + ProcessTable[q->ID].reqTime;
        }
        p = q;
    }
    
    for(q=Q.head->next; q!=NULL; q=q->next)
    {
        ProcessTable[q->ID].totalTime = ProcessTable[q->ID].finishTime - ProcessTable[q->ID].arriveTime;
        ProcessTable[q->ID].weightTotalTime = ProcessTable[q->ID].totalTime/ProcessTable[q->ID].reqTime;        
        totalTimeSum += ProcessTable[q->ID].totalTime;
        weightTotalTimeSum += ProcessTable[q->ID].weightTotalTime;
    }    
    
    int t = 0;
    for(q=Q.head->next; q!=NULL; q=q->next)
    {
        cout<<"*********************"<<endl;
        while ( t<ProcessTable[q->ID].finishTime )
        {
            cout<<"時(shí)刻"<<t<<":  進(jìn)程"<<q->ID<<"活動(dòng)"<<endl;
            t++;
        }
        if (q->next != NULL)
        {    
            cout<<"時(shí)刻"<<t<<":  進(jìn)程"<<q->ID<<"結(jié)束活動(dòng),開始下一個(gè)進(jìn)程."<<endl;
            cout<<"進(jìn)程"<<q->ID<<"的周轉(zhuǎn)時(shí)間為: "<<ProcessTable[q->ID].totalTime<<endl;
            cout<<"進(jìn)程"<<q->ID<<"的帶權(quán)周轉(zhuǎn)時(shí)間為: "<<ProcessTable[q->ID].weightTotalTime<<endl<<endl;
        }
        else
        {
            cout<<"時(shí)刻"<<t<<":  進(jìn)程"<<q->ID<<"結(jié)束活動(dòng)."<<endl<<endl;
            cout<<"進(jìn)程"<<q->ID<<"的周轉(zhuǎn)時(shí)間為: "<<ProcessTable[q->ID].totalTime<<endl;
            cout<<"進(jìn)程"<<q->ID<<"的帶權(quán)周轉(zhuǎn)時(shí)間為: "<<ProcessTable[q->ID].weightTotalTime<<endl<<endl;            
        }
    }
    cout<<"所有進(jìn)程結(jié)束活動(dòng)."<<endl<<endl;

    p = Q.head;
    for(q=p->next; q!=NULL; q=q->next)
    {
        delete p;
        p = q;
    }
}


void InitialQueue(LinkQueue& Q, PCBNode * ProcessTable,const int processnum)
{
    //初始化
    
    for (int i=0;i<processnum;i++)
    {
        ProcessTable[i].processID=i;
        ProcessTable[i].reqTime=ProcessTable[i].remainTime;
        ProcessTable[i].finishTime=0;
        ProcessTable[i].startTime=0;    
        ProcessTable[i].status=WAIT;
        ProcessTable[i].totalTime=0;
        ProcessTable[i].weightTotalTime=0;        
    }
    
    Q.head = new QueueNode;
    Q.head->next = NULL;
    QueueNode * p;
    QueueNode * q;
    for (i=0;i<processnum;i++)
    {    
        p = new QueueNode;
        p->ID = i;
        p->next = NULL;
        if (i == 0)
        {
            Q.head->next = p;            
        }
        else
            q->next = p;
        
        q = p;
    }
}


void Input(PCBNode * ProcessTable, const int processnum)
{
    FILE *fp;        //讀入線程的相關(guān)內(nèi)容
    if((fp=fopen("input.txt","r"))==NULL)
    {
        cout<<"can not open file!"<<endl;
        exit(0);
    }        
    for(int i=0;i<processnum;i++)
    {
        fscanf(fp,"%d %d %d",&ProcessTable[i].arriveTime,&ProcessTable[i].remainTime,&ProcessTable[i].priorityNum);
    }
    fclose(fp);
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产中文字幕| 国产精品嫩草久久久久| 国产精品久久久久一区二区三区共 | 国产精品亚洲一区二区三区妖精 | 开心九九激情九九欧美日韩精美视频电影 | 日韩av一区二| 91在线精品秘密一区二区| 日韩一级成人av| 艳妇臀荡乳欲伦亚洲一区| 国产大片一区二区| 欧美一区二区三区的| 亚洲乱码中文字幕| 成人看片黄a免费看在线| 日韩欧美国产wwwww| 亚洲第一主播视频| 色一情一伦一子一伦一区| 国产日韩精品视频一区| 看片网站欧美日韩| 欧美一区二区三区思思人| 亚洲免费在线看| 成人激情综合网站| 久久综合久久综合九色| 日韩精品三区四区| 欧美日韩一区不卡| 一区二区三区高清不卡| aaa欧美日韩| 国产精品青草综合久久久久99| 久久国产生活片100| 欧美高清一级片在线| 亚洲五码中文字幕| 色悠悠久久综合| 最新国产の精品合集bt伙计| 高清shemale亚洲人妖| 精品国产1区二区| 老司机精品视频一区二区三区| 欧美日高清视频| 亚洲一区二区精品视频| 欧美在线视频你懂得| 亚洲欧美日韩久久| 99久久精品情趣| 亚洲欧洲色图综合| 99久久综合狠狠综合久久| 久久精品人人做人人爽97| 国内精品第一页| 欧美精品一区二区三区久久久| 捆绑紧缚一区二区三区视频| 精品久久久久久久人人人人传媒| 美女视频免费一区| 337p粉嫩大胆噜噜噜噜噜91av| 美女一区二区在线观看| 欧美va天堂va视频va在线| 极品瑜伽女神91| 久久久不卡网国产精品一区| 国产精品资源在线观看| 中文字幕av一区二区三区高| 成人黄色小视频| 亚洲色图另类专区| 日本道免费精品一区二区三区| 一区二区三区四区蜜桃 | 国产乱一区二区| 久久久电影一区二区三区| 国产69精品一区二区亚洲孕妇| 国产欧美一区二区三区网站| www.成人网.com| 亚洲一线二线三线视频| 欧美群妇大交群中文字幕| 蜜桃在线一区二区三区| 精品国产乱码久久久久久久| 国产福利91精品| 亚洲欧洲日产国产综合网| 欧美专区日韩专区| 日韩高清国产一区在线| 久久久久久久久久看片| 成人黄色av电影| 一区二区三区视频在线观看| 欧美精品v日韩精品v韩国精品v| 久久99蜜桃精品| 欧美激情资源网| 一本久道中文字幕精品亚洲嫩| 午夜精品福利在线| 精品福利一区二区三区| av亚洲精华国产精华精| 偷拍一区二区三区| www国产精品av| 91丨九色丨蝌蚪丨老版| 午夜精品在线视频一区| 久久午夜电影网| 91蝌蚪porny九色| 欧美aaaaa成人免费观看视频| 久久先锋影音av| 色婷婷精品大视频在线蜜桃视频| 日本在线不卡视频| 国产欧美日韩三级| 欧美美女直播网站| 国产mv日韩mv欧美| 亚洲福利一区二区三区| 久久久亚洲午夜电影| 欧日韩精品视频| 国产一区视频网站| 亚洲国产视频一区| 国产亚洲va综合人人澡精品| 欧美中文字幕不卡| 国产不卡一区视频| 日韩国产欧美一区二区三区| 国产欧美一区视频| 3d成人动漫网站| 99热精品一区二区| 久久黄色级2电影| 一片黄亚洲嫩模| 久久久www成人免费毛片麻豆| 欧美综合在线视频| 成人美女视频在线看| 久久精品国产一区二区| 一区二区三区日韩| 国产三级一区二区| 欧美高清激情brazzers| 成人av在线资源网站| 久久精品国产免费| 亚洲国产wwwccc36天堂| 国产精品电影一区二区三区| 这里只有精品视频在线观看| 91丨九色丨黑人外教| 国产成人免费视频网站| 蜜芽一区二区三区| 亚洲午夜免费电影| 国产精品电影一区二区三区| 亚洲精品在线电影| 欧美一级精品在线| 欧美无砖专区一中文字| 波多野结衣的一区二区三区| 激情偷乱视频一区二区三区| 亚洲www啪成人一区二区麻豆| 国产精品美女一区二区| 久久久精品黄色| 欧美不卡一二三| 欧美精品一二三| 在线观看亚洲一区| av色综合久久天堂av综合| 国产成人a级片| 久久aⅴ国产欧美74aaa| 麻豆精品视频在线观看| 日韩中文字幕麻豆| 亚洲国产欧美日韩另类综合| 亚洲天堂精品在线观看| 国产精品久久久久久亚洲毛片| 久久蜜臀精品av| 久久综合九色综合欧美亚洲| 日韩欧美色综合| 欧美一区二区三区免费在线看| 欧美人体做爰大胆视频| 欧美日韩aaaaaa| 欧美精品欧美精品系列| 欧美男同性恋视频网站| 欧美亚洲一区二区三区四区| 欧美综合欧美视频| 欧美私人免费视频| 欧美无砖砖区免费| 精品视频一区 二区 三区| 欧美色精品天天在线观看视频| 色av综合在线| 在线观看日韩国产| 欧美色偷偷大香| 欧美精品久久99久久在免费线| 欧美日韩国产美女| 欧美疯狂做受xxxx富婆| 777久久久精品| 日韩亚洲欧美综合| 精品国产髙清在线看国产毛片| 精品国产在天天线2019| 国产亚洲制服色| 欧美国产成人在线| 中文字幕五月欧美| 亚洲精品视频一区| 亚洲高清不卡在线| 青青草97国产精品免费观看| 精品在线免费视频| 国产成人在线看| 99re这里都是精品| 在线免费一区三区| 欧美精品视频www在线观看| 日韩欧美国产电影| 欧美激情中文字幕| 亚洲天堂精品视频| 亚洲午夜av在线| 捆绑紧缚一区二区三区视频| 国产精品一二三四| 97se亚洲国产综合自在线观| 91福利在线看| 日韩视频一区在线观看| 久久日韩精品一区二区五区| 国产精品久久久久aaaa| 一区二区三区波多野结衣在线观看| 亚洲成a人在线观看| 久久国产视频网| 99久久综合99久久综合网站| 欧美怡红院视频| 欧美电视剧免费全集观看| 欧美经典一区二区| 亚洲国产精品一区二区尤物区| 久久精工是国产品牌吗|