1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      高響應(yīng)比優(yōu)先算法(c++)-創(chuàng)新互聯(lián)

      操作系統(tǒng)基本調(diào)度算法,高響應(yīng)比算法。先來先服務(wù)和短作業(yè)優(yōu)先策略都很可能會(huì)引起進(jìn)程的饑餓現(xiàn)象,而高響應(yīng)比算法在每次從就緒隊(duì)列選擇進(jìn)程執(zhí)行時(shí),會(huì)計(jì)算各個(gè)進(jìn)程的響應(yīng)比,選出一個(gè)響應(yīng)比最高的進(jìn)程執(zhí)行,響應(yīng)比計(jì)算如下 :(等待時(shí)間+服務(wù)時(shí)間) / 服務(wù)時(shí)間

      創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)調(diào)兵山,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

      這樣的策略兼顧提高系統(tǒng)吞吐率與減少進(jìn)程饑餓現(xiàn)象,當(dāng)進(jìn)程等待的越久,響應(yīng)比越高,被執(zhí)行的概率久越大,而服務(wù)時(shí)間要求短的進(jìn)程本身具有較高響應(yīng)比

      定義pcb,作業(yè)完成隊(duì)列。

      輸入進(jìn)程信息,將所有進(jìn)程按到達(dá)時(shí)間升序排序。

      設(shè)置pcb數(shù)組存放已到達(dá)進(jìn)程,當(dāng)前時(shí)間current_time,下一個(gè) 要運(yùn)行進(jìn)程的序號(hào)next_process。

      循環(huán)(如果還有進(jìn)程未到達(dá)或未完成)
      {

      ?循環(huán)(還有進(jìn)程未到達(dá))

      ?{ 將當(dāng)前時(shí)間到達(dá)的進(jìn)程加到pcb數(shù)組

      ?}

      ?更新各進(jìn)程響應(yīng)比

      ?遍歷已到達(dá)進(jìn)程,找到下一個(gè)執(zhí)行的進(jìn)程序號(hào)(響應(yīng)比最高)

      ?執(zhí)行進(jìn)程,修改信息,插入完成隊(duì)列

      ?將完成了的進(jìn)程與pcb數(shù)組最后一個(gè)進(jìn)程調(diào)換,到達(dá)進(jìn)程數(shù)-1(相當(dāng)于刪除)

      }

      代碼實(shí)現(xiàn)如下

      #include#define N			5		//進(jìn)程數(shù)
      #include#includeusing namespace std;
      
      struct pcb
      {
      	char process_name[10];   //進(jìn)程名字
      	int arrive_time;   		//到達(dá)時(shí)間
      	int service_time;   	//需要服務(wù)時(shí)間
      	float response;          //響應(yīng)比
      	int complete_time;   	//完成時(shí)間
      	int round_time;   		//周轉(zhuǎn)時(shí)間
      	float force_round_time;  //帶權(quán)周轉(zhuǎn)時(shí)間
      	char state; 			//進(jìn)程狀態(tài)
      
      }PCB[N + 1];             //0號(hào)單元不存數(shù)據(jù),直接用作交換
      
      queueFinish_queue;	//已完成隊(duì)列
      
      void input(int n)
      {
      	cout<< "\n請輸入各進(jìn)程的信息\n"<< endl;
      	for (int i = 1; i<= n; i++)      //輸入各進(jìn)程信息
      	{
      		PCB[i].state = 'c';   //coming  (未到達(dá))
      		cout<< "------\n請輸入第"<< i<< "進(jìn)程名字: ";
      		cin >>PCB[i].process_name;
      		cout<< "請輸入到達(dá)時(shí)間: ";
      		cin >>PCB[i].arrive_time;
      		cout<< "請輸入服務(wù)時(shí)間: ";
      		cin >>PCB[i].service_time;
      		PCB[i].response = 1;
      	}
      
      }
      
      void sort(int n)
      {
      	int i, j;
      	for (i = 1; i< n; i++)            //按到達(dá)時(shí)間升序
      	{
      		for (j = 1; j<= n - i; j++)
      		{
      			if (PCB[j].arrive_time >PCB[j + 1].arrive_time)
      			{
      				PCB[0] = PCB[j];
      				PCB[j] = PCB[j + 1];
      				PCB[j + 1] = PCB[0];
      			}
      		}
      	}
      }
      
      
      void high_response(int n)
      {
      	int current_time = 0;             //系統(tǒng)時(shí)間
      	int  i,
      		next_process,		  //下一個(gè)要運(yùn)行進(jìn)程的序號(hào)
      		arrived_process_num = 0,      //已到達(dá)進(jìn)程數(shù)
      		wait_process_num = 0;	//正在等待的進(jìn)程數(shù)
      	pcb wait_process_array[N + 1];     //存放已到達(dá)的進(jìn)程
      
      	while (arrived_process_num< n || wait_process_num >0)     //還有進(jìn)程未到達(dá)或未運(yùn)行
      	{	//如果還有進(jìn)程未到達(dá),將當(dāng)前時(shí)間所有到達(dá)的進(jìn)程加入等待數(shù)組
      		while (arrived_process_num< n  && current_time >= PCB[arrived_process_num + 1].arrive_time)   
      		{
      			wait_process_array[++wait_process_num] = PCB[++arrived_process_num];
      		}
      		for (i = 1; i<= wait_process_num; i++)
      		{
      			wait_process_array[i].response =    //更新響應(yīng)比
      				 1.0*(current_time - wait_process_array[i].arrive_time + wait_process_array[i].service_time) / wait_process_array[i].service_time;
      		}
      
      		next_process = 1;
      		for (i = 2; i<= wait_process_num; i++)
      		{
      			if (wait_process_array[i].response >wait_process_array[next_process].response)
      			{
      				next_process = i;				//找到下一個(gè)運(yùn)行進(jìn)程的序號(hào)
      			}
      		}
      
      		{
      			current_time += wait_process_array[next_process].service_time;   //運(yùn)行結(jié)束后的時(shí)間
      			wait_process_array[next_process].complete_time = current_time;   //進(jìn)程完成時(shí)間等于現(xiàn)在時(shí)間
      			wait_process_array[next_process].round_time = current_time - wait_process_array[next_process].arrive_time;  //周轉(zhuǎn)時(shí)間
      			wait_process_array[next_process].force_round_time = 1.0*wait_process_array[next_process].round_time / wait_process_array[next_process].service_time;  //帶權(quán)周轉(zhuǎn)時(shí)間
      			wait_process_array[next_process].state = 'f';  //狀態(tài)改為完成
      			wait_process_num--;    //正在等待的進(jìn)程數(shù)減一
      			Finish_queue.push(wait_process_array[next_process]);     //插入完成隊(duì)列
      			cout<< "\n第"<< Finish_queue.size()<< "次調(diào)度進(jìn)程: "<< Finish_queue.back().process_name<< endl;
      		}
      
      		{					//將完成了的進(jìn)程換到等待進(jìn)程數(shù)組的下一個(gè)位置(相當(dāng)于刪除)
      			wait_process_array[0] = wait_process_array[next_process];
      			wait_process_array[next_process] = wait_process_array[wait_process_num + 1];
      			wait_process_array[wait_process_num + 1] = wait_process_array[0];
      		}
      
      	}
      
      	return;
      }
      
      
      
      void print(int n)
      {
      	int i = 1;
      	float sum = 0;				  //存放各進(jìn)程的帶權(quán)周轉(zhuǎn)時(shí)間和
      	cout<< "\n 進(jìn)程   |"<< "到達(dá)時(shí)間  |"<< "  服務(wù)時(shí)間   |"<< "  完成時(shí)間   |"<< " 開始運(yùn)行時(shí)的響應(yīng)比   | "<< "  周轉(zhuǎn)時(shí)間  |"<< " 帶權(quán)周轉(zhuǎn)時(shí)間"<< endl;
      	while (Finish_queue.empty() == false)
      	{
      		
      		cout<< Finish_queue.front().process_name
      			<< "\t|  "<< Finish_queue.front().arrive_time
      			<< "\t   |  "<< Finish_queue.front().service_time<< " \t |  "<< Finish_queue.front().complete_time
      			<< "\t       |  "<< setprecision(3)<< Finish_queue.front().response
      			<< "\t\t      |   "<< Finish_queue.front().round_time
      			<< "\t    |  "<< Finish_queue.front().force_round_time
      			<< endl;
      
      		sum += Finish_queue.front().force_round_time;
      		Finish_queue.pop();
      
      	}
      	cout<< "\n\n系統(tǒng)平均帶權(quán)周轉(zhuǎn)時(shí)間: "<< (sum / n)<< endl;
      }
      
      int main()
      {
      	input(N);
      	sort(N);
      	high_response(N);
      	print(N);
      	return 0;
      }

      你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


      名稱欄目:高響應(yīng)比優(yōu)先算法(c++)-創(chuàng)新互聯(lián)
      標(biāo)題網(wǎng)址:http://www.ef60e0e.cn/article/pdsgs.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        敦煌市| 十堰市| 平乡县| 鹤峰县| 和平县| 青海省| 江阴市| 绿春县| 阿瓦提县| 宁武县| 平阳县| 炉霍县| 仁布县| 个旧市| 准格尔旗| 吉隆县| 乌恰县| 巴彦县| 安化县| 天津市| 外汇| 改则县| 买车| 阜宁县| 永川市| 湖南省| 斗六市| 大丰市| 从江县| 巴南区| 连平县| 饶阳县| 内丘县| 嵊州市| 开远市| 平安县| 西昌市| 高平市| 湘潭市| 宁海县| 吴忠市|