国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法

這篇具有很好參考價(jià)值的文章主要介紹了【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、簡介

1.1 背景

在計(jì)算機(jī)科學(xué)領(lǐng)域,進(jìn)程調(diào)度是操作系統(tǒng)中一個(gè)關(guān)鍵的組成部分,它負(fù)責(zé)協(xié)調(diào)系統(tǒng)中各個(gè)進(jìn)程的執(zhí)行順序,以最大程度地提高系統(tǒng)資源利用率。在這篇博客中,將深入探討基于優(yōu)先級的輪轉(zhuǎn)調(diào)度算法,該算法結(jié)合了進(jìn)程的優(yōu)先級時(shí)間片輪轉(zhuǎn)的思想,以實(shí)現(xiàn)高效的任務(wù)執(zhí)行。
【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法,c++,算法,c語言

1.2 目的

本文的主要目的是解釋和分析一個(gè)使用C++編寫的簡單進(jìn)程調(diào)度程序。將詳細(xì)介紹程序的結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié),同時(shí)提供示例以幫助讀者理解基于優(yōu)先級的輪轉(zhuǎn)調(diào)度算法的工作原理。

1.3 代碼概覽

程序需要使用一個(gè)結(jié)構(gòu)體 content 來表示進(jìn)程,包括進(jìn)程名、優(yōu)先級、到達(dá)時(shí)間、需要時(shí)間、已用時(shí)間和進(jìn)程狀態(tài)等信息。主要功能包括增加進(jìn)程、打印結(jié)果以及實(shí)現(xiàn)基于優(yōu)先級的輪轉(zhuǎn)調(diào)度。以下是進(jìn)程調(diào)度程序的框架:
程序框架 { m a i n 主函數(shù):用于循環(huán)菜單操作 m a r k 主菜單:提示用戶包括輸入時(shí)間片、打印結(jié)果等 p r t 函數(shù):進(jìn)程調(diào)度算法以及輸出進(jìn)程調(diào)度的結(jié)果 a d d 函數(shù):增加進(jìn)程信息 c o n t e n t 結(jié)構(gòu)體:進(jìn)程名、優(yōu)先級、到達(dá)時(shí)間、需要時(shí)間、已用時(shí)間和進(jìn)程狀態(tài)等信息 程序框架\begin{cases} main主函數(shù):用于循環(huán)菜單操作\\mark主菜單:提示用戶包括輸入時(shí)間片、打印結(jié)果等\\prt函數(shù):進(jìn)程調(diào)度算法以及輸出進(jìn)程調(diào)度的結(jié)果\\add函數(shù):增加進(jìn)程信息\\content結(jié)構(gòu)體:進(jìn)程名、優(yōu)先級、到達(dá)時(shí)間、需要時(shí)間、已用時(shí)間和進(jìn)程狀態(tài)等信息 \end{cases} 程序框架? ? ??main主函數(shù):用于循環(huán)菜單操作mark主菜單:提示用戶包括輸入時(shí)間片、打印結(jié)果等prt函數(shù):進(jìn)程調(diào)度算法以及輸出進(jìn)程調(diào)度的結(jié)果add函數(shù):增加進(jìn)程信息content結(jié)構(gòu)體:進(jìn)程名、優(yōu)先級、到達(dá)時(shí)間、需要時(shí)間、已用時(shí)間和進(jìn)程狀態(tài)等信息?

二、進(jìn)程調(diào)度算法概述

2.1 優(yōu)先級調(diào)度算法

優(yōu)先級調(diào)度算法是一種常見的進(jìn)程調(diào)度策略,它根據(jù)進(jìn)程的優(yōu)先級來確定執(zhí)行順序。在我們的程序中,每個(gè)進(jìn)程都被賦予一個(gè)優(yōu)先級 (f),并根據(jù)該優(yōu)先級進(jìn)行排序。較高優(yōu)先級的進(jìn)程將在較低優(yōu)先級的進(jìn)程之前執(zhí)行。
【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法,c++,算法,c語言

2.2 輪轉(zhuǎn)調(diào)度算法

輪轉(zhuǎn)調(diào)度算法引入了時(shí)間片的概念,即每個(gè)進(jìn)程被分配的執(zhí)行時(shí)間。在我們的實(shí)現(xiàn)中,用戶可以輸入時(shí)間片的大小,這將影響每個(gè)進(jìn)程的運(yùn)行時(shí)間。當(dāng)一個(gè)進(jìn)程用完它的時(shí)間片后,調(diào)度程序?qū)⑶袚Q到下一個(gè)就緒隊(duì)列中的進(jìn)程,以此類推。
【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法,c++,算法,c語言

三、代碼詳解

3.1 結(jié)構(gòu)體定義

在程序中,使用一個(gè)名為 content 的結(jié)構(gòu)體來表示每個(gè)進(jìn)程的信息。這個(gè)結(jié)構(gòu)體包含進(jìn)程名 (name)、優(yōu)先級 (f)、到達(dá)時(shí)間 (arrtime)、所需時(shí)間 (needtime)、已用時(shí)間 (gettime) 以及進(jìn)程狀態(tài) (process)。

struct content
{
    string name;     // 進(jìn)程名
    int f;           // 優(yōu)先級
    int arrtime;     // 到達(dá)時(shí)間
    int needtime;    // 所需時(shí)間
    int gettime;     // 已用時(shí)間
    string process;  // 進(jìn)程狀態(tài)
};

這個(gè)結(jié)構(gòu)體的定義來組織和存儲每個(gè)進(jìn)程的相關(guān)信息。

3.2 主菜單函數(shù) (mark)

主菜單函數(shù) mark 用于引導(dǎo)用戶進(jìn)行操作選擇。用戶可以選擇增加進(jìn)程、打印進(jìn)程狀態(tài),或結(jié)束任務(wù)。該函數(shù)返回用戶的選擇。

int mark()
{
    int pd;
    cout << "增加進(jìn)程并調(diào)度進(jìn)程,請按1\n打印進(jìn)程,請按2\n任務(wù)結(jié)束,請按0" << endl;
    cin >> pd;
    if (pd < 0 || pd > 2)
    {
        return mark();
    }
    return pd;
}

3.3 增加進(jìn)程函數(shù) (add)

增加進(jìn)程函數(shù) add 用于向進(jìn)程數(shù)組中添加新的進(jìn)程。用戶需要輸入進(jìn)程的名稱、優(yōu)先級以及所需時(shí)間。這個(gè)函數(shù)返回一個(gè)標(biāo)志,指示是否繼續(xù)增加進(jìn)程。

int add(struct content a[], int i)
{
    char pd;
    cout << "請輸入進(jìn)程名:";
    cin >> a[i].name;
    cout << "請輸入進(jìn)程的優(yōu)先級:";
    cin >> a[i].f;
    cout << "請輸入進(jìn)程需要的時(shí)間:";
    cin >> a[i].needtime;
    a[i].arrtime = i;        // 設(shè)置到達(dá)時(shí)間
    a[i].gettime = 0;        // 初始化已用時(shí)間
    a[i].process = 'W';      // 初始化進(jìn)程狀態(tài)(等)
    cout << "還要繼續(xù)增加進(jìn)程嗎,是(Y)否(N)";
    cin >> pd;
    if (pd == 'N')
        return 0;
    return 1;
}

函數(shù)允許用戶連續(xù)添加多個(gè)進(jìn)程,直到用戶選擇停止。

3.4 打印結(jié)果函數(shù) (prt)

打印結(jié)果函數(shù) prt 負(fù)責(zé)對進(jìn)程進(jìn)行排序,并根據(jù)優(yōu)先級和到達(dá)時(shí)間打印進(jìn)程狀態(tài)。該函數(shù)還包括遞歸調(diào)用以模擬進(jìn)程的運(yùn)行。

void prt(struct content a[], int n, int time)
{
    // (排序和打印結(jié)果的實(shí)現(xiàn))
    	int i,j,pd=0;
	//排序
	for(i=0;i<=n-1;i++)
	{
		for(j=0;j<=n-i-1;j++)
		{
			if(a[j].f<a[j+1].f||(a[j].f==a[j+1].f&&a[j].arrtime>a[j+1].arrtime))//先根據(jù)優(yōu)先級,后根據(jù)到達(dá)時(shí)間判斷
			{
				struct content temp;
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
	a[0].process='R';//改變第一個(gè)進(jìn)程的狀態(tài)(運(yùn)行)
	for(i=0;i<=n;i++)
	{
		if(a[i].gettime<a[i].needtime)
		{
			pd=1;
			break;
		}
	}
	if(pd==0)
	{
		a[0].process='F';//修改最后進(jìn)程完成狀態(tài)
	}	
	cout<<"進(jìn)程名  優(yōu)先級  到達(dá)時(shí)間  需要時(shí)間  已用時(shí)間  進(jìn)程狀態(tài)"<<endl;
	for(i=0;i<=n;i++)
	{
		cout<<a[i].name<<"\t"<<a[i].f<<"\t"<<a[i].arrtime<<"\t  "<<a[i].needtime<<"\t    "<<a[i].gettime<<"\t      "<<a[i].process<<endl;
	}
    if (pd == 0)
    {
        return; // 退出遞歸
    }

    // 修改數(shù)據(jù)
    a[0].f -= 1;
    a[0].gettime += time;
    a[0].process = 'W';

    if (a[0].gettime >= a[0].needtime)
    {
        a[0].f = -1000;
        a[0].gettime = a[0].needtime;
        a[0].process = 'F';
    }

    prt(a, n, time); // 遞歸打印
}

這個(gè)函數(shù)通過遞歸調(diào)用自身,模擬了進(jìn)程的調(diào)度和執(zhí)行過程。在打印結(jié)果時(shí),它顯示了每個(gè)進(jìn)程的詳細(xì)信息,包括進(jìn)程名、優(yōu)先級、到達(dá)時(shí)間、需要時(shí)間、已用時(shí)間和進(jìn)程狀態(tài)。

3.5 主函數(shù)(main)

int main()
{
    int time;     // 時(shí)間片大小
    int i = -1;    // 記錄進(jìn)程個(gè)數(shù)和到達(dá)時(shí)間
    struct content a[10];

    cout << "請輸入時(shí)間片大?。?;
    cin >> time;

    while (1)
    {
        int pd = mark();  // 主菜單判斷
        if (pd == 0)
            break;  // 退出
        if (pd == 1)
        {
            while (1)
            {
                i++;
                int pd = add(a, i);
                if (pd == 0)
                    break;  // 增加進(jìn)程完畢,退出
            }
        }
        if (pd == 2)
        {
            prt(a, i, time);
            continue;
        }
        prt(a, i, time);
    }
}

3.6 運(yùn)行示例

【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法,c++,算法,c語言文章來源地址http://www.zghlxwxcb.cn/news/detail-808871.html

到了這里,關(guān)于【進(jìn)程調(diào)度】基于優(yōu)先級的輪轉(zhuǎn)調(diào)度C++實(shí)現(xiàn)算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】詳談進(jìn)程優(yōu)先級&&進(jìn)程調(diào)度與切換

    【Linux】詳談進(jìn)程優(yōu)先級&&進(jìn)程調(diào)度與切換

    ???????? 進(jìn)程要訪問某種資源,進(jìn)程通過一定的方式排隊(duì),確認(rèn)享受資源的優(yōu)先順序。計(jì)算機(jī)中資源過少,所以進(jìn)程訪問某種資源時(shí)需要排隊(duì)。 ???????? 進(jìn)程的優(yōu)先級其實(shí)就是PCB中的一個(gè)整形變量(int PRI)。Linux中進(jìn)程的默認(rèn)優(yōu)先級是80,這個(gè)默認(rèn)優(yōu)先級是可以被修改

    2024年03月22日
    瀏覽(24)
  • 操作系統(tǒng)實(shí)驗(yàn)一模擬優(yōu)先級調(diào)度算法(C語言實(shí)現(xiàn)附帶詳細(xì)注釋)

    操作系統(tǒng)實(shí)驗(yàn)一模擬優(yōu)先級調(diào)度算法(C語言實(shí)現(xiàn)附帶詳細(xì)注釋)

    文章目錄 優(yōu)先級調(diào)度算法介紹 兩種情況 調(diào)度算法分類 優(yōu)先級分類 實(shí)驗(yàn)內(nèi)容與要求 實(shí)驗(yàn)步驟 調(diào)度算法總流程圖 ?優(yōu)先級調(diào)度算法流程圖 ?實(shí)驗(yàn)代碼 實(shí)驗(yàn)結(jié)果 ????????優(yōu)先級調(diào)度算法既可以用于作業(yè)調(diào)度,又可以用于進(jìn)程調(diào)度。該算法中的優(yōu)先級用于描述作業(yè)或者進(jìn)程的

    2024年02月01日
    瀏覽(23)
  • 【Linux進(jìn)程篇-----進(jìn)程優(yōu)先級】

    【Linux進(jìn)程篇-----進(jìn)程優(yōu)先級】

    1.基本概念 cpu 資源分配的先后順序,就是指進(jìn)程的優(yōu)先權(quán)(priority) .優(yōu)先權(quán)高的進(jìn)程有優(yōu)先執(zhí)行權(quán)利。配置進(jìn)程優(yōu)先權(quán)對多任務(wù)環(huán)境的 Linux 很有用,可以改善系統(tǒng)性能。還可以把進(jìn)程運(yùn)行到指定的 CPU 上,這樣一來,把不重要的進(jìn)程安排到某個(gè) CPU,可以大大改善系統(tǒng)整體性能

    2024年02月08日
    瀏覽(21)
  • Linux_進(jìn)程的優(yōu)先級&&環(huán)境變量&&上下文切換&&優(yōu)先級隊(duì)列

    Linux_進(jìn)程的優(yōu)先級&&環(huán)境變量&&上下文切換&&優(yōu)先級隊(duì)列

    什么是優(yōu)先級? 指定一個(gè)進(jìn)程獲取某種資源的先后順序 本質(zhì)是進(jìn)程獲取cpu資源的優(yōu)先順序 為什么要有優(yōu)先級 進(jìn)程訪問的資源(CPU)是有限的 操作系統(tǒng)關(guān)于調(diào)度和優(yōu)先級的原則:分時(shí)操作系統(tǒng),基本的公平,如果進(jìn)程因?yàn)殚L時(shí)間不被調(diào)整,就造成了饑餓問題 Linux的優(yōu)先級特

    2024年04月09日
    瀏覽(22)
  • 【Linux】進(jìn)程優(yōu)先級

    【Linux】進(jìn)程優(yōu)先級

    Hello,大家好。本文我們要來介紹的是有關(guān)Linux下【進(jìn)程優(yōu)先級】,首先我們要了解的是其基本概念 在 Linux基礎(chǔ)篇之權(quán)限 一文中我們有談到過什么是權(quán)限,在Linux下有權(quán)限和無權(quán)限的區(qū)別在哪里。那現(xiàn)在的話我們就要來對比一下【權(quán)限】和【優(yōu)先級】這兩個(gè)概念 權(quán)限 : 表示

    2024年02月11日
    瀏覽(25)
  • Linux——進(jìn)程優(yōu)先級

    Linux——進(jìn)程優(yōu)先級

    1.什么是優(yōu)先級? ????????優(yōu)先級和權(quán)限息息相關(guān)。權(quán)限的含義為能還是不能做這件事。而優(yōu)先級則表示:你有權(quán)限去做,只不過是先去做還是后去做這件事罷了。 2.為什么會存在優(yōu)先級? ????????優(yōu)先級表明了狼多肉少的理念,舉個(gè)例子:在日常生活中我們進(jìn)行排隊(duì)

    2024年02月06日
    瀏覽(26)
  • 【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級和進(jìn)程切換

    【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級和進(jìn)程切換

    作者簡介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng),掌握Linux的進(jìn)程 毒雞湯:一花凋零荒蕪不了整個(gè)春天,一次挫折也荒廢不了整個(gè)人生。 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲??

    2024年02月04日
    瀏覽(22)
  • Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級

    Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級

    ??北塵_ :個(gè)人主頁 ??個(gè)人專欄 :《Linux操作系統(tǒng)》《經(jīng)典算法試題 》《C++》 《數(shù)據(jù)結(jié)構(gòu)與算法》 ??走在路上,不忘來時(shí)的初心 為了弄明白正在運(yùn)行的進(jìn)程是什么意思,我們需要知道進(jìn)程的不同狀態(tài)。一個(gè)進(jìn)程可以有幾個(gè)狀態(tài)(在 Linux內(nèi)核里,進(jìn)程有時(shí)候也叫做任務(wù))

    2024年02月05日
    瀏覽(23)
  • 【筆記】霧計(jì)算中移動應(yīng)用的優(yōu)先級約束任務(wù)調(diào)度

    目錄 前置 摘要 介紹 模型 應(yīng)用模型 計(jì)算和通信模型 能耗模型 問題定義 NP難 預(yù)功率分配算法 能量約束調(diào)度 算法1:具有啟發(fā)式H的能量約束列表調(diào)度(ECLS-H) 時(shí)間約束調(diào)度 算法2:具有啟發(fā)式H的時(shí)間約束列表調(diào)度(TCLS-H) 后功率分配算法 能量約束調(diào)度 算法3:具有啟發(fā)式

    2024年01月24日
    瀏覽(23)
  • 【C++】優(yōu)先級隊(duì)列的基本概念以及其模擬實(shí)現(xiàn)

    【C++】優(yōu)先級隊(duì)列的基本概念以及其模擬實(shí)現(xiàn)

    ??博客主頁: 主頁 ??系列專欄: C++ ??感謝大家點(diǎn)贊??收藏?評論?? ??期待與大家一起進(jìn)步! C++仿函數(shù)(function object)是一種可以像函數(shù)一樣調(diào)用的對象。仿函數(shù)通常是一個(gè)類,它重載了函數(shù)調(diào)用運(yùn)算符operator(),使得對象可以被調(diào)用。 仿函數(shù)就是基于函數(shù)模板生成

    2024年02月15日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包