久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7636|回復(fù): 0
收起左側(cè)

C語言時(shí)間片輪轉(zhuǎn)調(diào)度算法 進(jìn)程調(diào)度實(shí)驗(yàn)程序

[復(fù)制鏈接]
ID:438442 發(fā)表于 2018-12-3 15:17 | 顯示全部樓層 |閱讀模式
實(shí)驗(yàn)一 進(jìn)程調(diào)度
一、實(shí)驗(yàn)?zāi)康?br /> 通過這次實(shí)驗(yàn),加深對進(jìn)程概念的理解,進(jìn)一步掌握進(jìn)程狀態(tài)的轉(zhuǎn)變、進(jìn)程調(diào)度的策略及對系統(tǒng)性能的評價(jià)方法。
二、實(shí)驗(yàn)內(nèi)容
  設(shè)計(jì)程序模擬進(jìn)程的輪轉(zhuǎn)法調(diào)度過程。假設(shè)初始狀態(tài)為:有n個(gè)進(jìn)程處于就緒狀態(tài),有m個(gè)進(jìn)程處于阻塞狀態(tài)。采用輪轉(zhuǎn)法進(jìn)程調(diào)度算法進(jìn)行調(diào)度(調(diào)度過程中,假設(shè)處于執(zhí)行狀態(tài)的進(jìn)程不會阻塞),且每過t個(gè)時(shí)間片系統(tǒng)釋放資源,喚醒處于阻塞隊(duì)列隊(duì)首的進(jìn)程。
三、源程序
#include<stdio.h>
#define N50
structPCB
{
         int pn;   //process name進(jìn)程名字
         int at;   //arrival time到達(dá)時(shí)間
         int st;   //service time服務(wù)時(shí)間
         int ct;   //completion time完成時(shí)刻
         int sc; //sign completion標(biāo)志是否完成
         int st1;  //剩余服務(wù)時(shí)間  
}process[N];

intsjp(int n)
{
         int i,j,T;
         printf("\n請輸入時(shí)間片:\n");
         scanf("%d",&T);
         for(i=1;i<=n;i++)      //收集進(jìn)程信息
         {
                   process[ i].sc=0;
                   printf("\n%d:\n請依次輸入進(jìn)程的信息\n請輸入pn:",i);
                   scanf("%d",&process[ i].pn);
                   printf("請輸入at:");
                   scanf("%d",&process[ i].at);
                   printf("請輸入st:");
                   scanf("%d",&process[ i].st);
                   process[ i].st1=process[ i].st;
         }
         for(i=1;i<=n;i++)
         for(j=i+1;j<=n;j++)   //按照各進(jìn)程到達(dá)時(shí)間升序,對進(jìn)程排序 注意:穩(wěn)定的排序
         {
                   if(process[j].at<process[ i].at)
                   {
                            process[0]=process[j];
                            process[j]=process[ i];
                            process[ i]=process[0];      
                   }
         }
         //for(i=1;i<=n;i++)    //檢查排序是否正確
         //printf("%d\t",process[ i].pn);

         int time=process[1].at;      //當(dāng)前時(shí)間的初值
         int flag=1;
         int sum=0;                                              //記錄完成的進(jìn)程數(shù)
         printf("\n第幾次調(diào)度進(jìn)程 運(yùn)行的進(jìn)程pn 開始運(yùn)行時(shí)間 運(yùn)行時(shí)間 剩余服務(wù)時(shí)間 結(jié)束時(shí)間\n");
         int z=1;   //記錄第幾次調(diào)度進(jìn)程

        while(sum<n)
        {
         flag=0;           //標(biāo)志就緒隊(duì)列中是否還有進(jìn)程
         for(i=1;i<=n;i++)    //時(shí)間片輪轉(zhuǎn)法執(zhí)行各進(jìn)程
         {
                   if(process[ i].sc==1)continue;  //已完成的進(jìn)程
                   else
                    {
                           if(process[ i].st1<=T&&time>=process[ i].at)//未完成的進(jìn)程但是還需服務(wù)的時(shí)間少于等于一個(gè)時(shí)間片
                           {
                           flag=1;
                           time=time+process[ i].st1;
                           process[ i].sc=1;
                           process[ i].ct=time;
                           printf("%8d%12d%15d%11d%11d%11d\n",z++,process[ i].pn,time-process[ i].st1,process[ i].st1,0,time);
                           process[ i].st1=0;
                           }

                           elseif(process[ i].st1>T&&time>=process[ i].at)//未完成的進(jìn)程但其還需服務(wù)時(shí)間至少大于一個(gè)時(shí)間片
                           {
                                    flag=1;
                                    time=time+T;
                                     process[ i].st1-=T;
                                     printf("%8d%12d%15d%11d%11d%11d\n",z++,process[ i].pn,time-T,T,process[ i].st1,time);
                            }
                            if(process[ i].sc==1)sum++;     //一個(gè)進(jìn)程執(zhí)行完就+1
                   }
         }
         if(flag==0&&sum<n)   // 還有沒執(zhí)行的進(jìn)程,且沒進(jìn)入就就緒隊(duì)列
         {
         for(i=1;i<=n;i++)
         if(process[ i].sc==0){time=process[ i].at;break;}
         }
    }
                   return 0;
}
intmain()
{
         int n;
         printf("\t\t時(shí)間片輪轉(zhuǎn)調(diào)度算法\n");
         printf("請輸入總進(jìn)程數(shù):\n");
         scanf("%d",&n);
         sjp(n);
         return 0;
}
三、運(yùn)行結(jié)果


四、實(shí)驗(yàn)心得體會
這次的實(shí)驗(yàn)有了很大的收獲,加深對進(jìn)程概念的理解,進(jìn)一步掌握進(jìn)程狀態(tài)的轉(zhuǎn)變、進(jìn)程調(diào)度的策略及對系統(tǒng)性能的評價(jià)方法。


回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色三级网站 | 亚洲免费成人 | 在线观看日韩精品 | 国产又黄又爽 | 999精品在线 | 久草福利 | 九九色影院 | 黄色av免费在线观看 | aaa级片| 精品一区二区三区免费毛片 | 黄色录像免费看 | 精品国产乱码久久久久久蜜柚 | 91一区二区| 国产精品久久久久久久午夜 | 黄色综合网 | 国产三级在线看 | 日韩久久久久久久 | 黄免费视频 | 亚洲欧美另类在线观看 | 双性呜呜宫交受不住了h | 91狠狠综合| 日韩免费高清 | 日韩免费精品视频 | 久久久久久免费 | 黄色片观看 | 一级黄色在线观看 | 在线视频亚洲 | 99热99re6国产在线播放 | 中文在线免费观看 | 伊人成人在线 | 涩涩97 | 电家庭影院午夜 | 亚洲精品色| 国产成人精品一区二区三区在线观看 | 中文字幕一区二区三区视频 | 久久久九九 | 男女av网站| 日韩欧美色图 | 国产一区二区精品在线 | 一区二区三区免费观看 | 欧美日韩第一区 |