为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

操作系统-实验四动态分区分配算法源代码最全(可编辑)

2017-10-19 9页 doc 26KB 263阅读

用户头像

is_729658

暂无简介

举报
操作系统-实验四动态分区分配算法源代码最全(可编辑)操作系统-实验四动态分区分配算法源代码最全(可编辑) 实验四 操作系统-动态分区分配算法 萨斯的发生的v设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为P1, … ,Pn,在动态分区分配过程中需要分配的进程个数为m(m?n),它们需要的分区大小分别为S1, … ,Sm,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。 程序要求如下: 1)利用首次适应算法、循环首次适应算法、最佳适...
操作系统-实验四动态分区分配算法源代码最全(可编辑)
操作系统-实验四动态分区分配算法源代码最全(可编辑) 实验四 操作系统-动态分区分配算法 萨斯的发生的v程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为P1, … ,Pn,在动态分区分配过程中需要分配的进程个数为m(m?n),它们需要的分区大小分别为S1, … ,Sm,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。 程序要求如下: 1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。 2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区中的分配情况。 3)输入:空闲分区个数n,空闲分区大小P1, … ,Pn,进程个数m,进程需要的分区大小S1, … ,Sm,算法选择1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法。 4)输出:最终内存空闲分区的分配情况。 代码实现: #include #include #include using namespace std; const int Number100; int FreePartition[Number];//空闲分区大小 int FirstPartition[Number];//1-首次适应算法 int CycleFirstPartition[Number];//2-循环首次适应算法 int BestPartition[Number];//3-最佳适应算法 int WorstPartition[Number];//4-最坏适应算法 int ProcessNeed[Number];//进程需要的分区大小 int PartitionNum,ProcessNum; char ProcessName[Number];//进程名 char ProcessPartition[Number];//进程分配的序列 int Partition[Number]; char str[Number][Number]; void FirstFitint n,int m; void NextFitint n,int m; void BestFitint n,int m; void WorstFitint n,int m; void Printint n, int m; void Print2int n, int m; // void FirstFitint n, int m cout"选择了首次适应算法!"endl; coutendl; int i,j,k0; fori0; in; i++ FirstPartition[i] FreePartition[i]; forj0; jm; j++ fori0; in; i++ ifProcessNeed[j]FirstPartition[i] ProcessPartition[j]i; //str[i][k] ProcessName[j]; FirstPartition[i] FirstPartition[i]-ProcessNeed[j]; break; Printn,m; cout"空间序号:"" "; fori0; in; i++ cout"|"setwm-1"空间"i+1; coutendl; cout"分区大小:"" "; fori0; in; i++ cout"|"setwmsetiosflagsios::leftFreePartition[i]; coutendl; cout"剩余分区大小:"; fori0; in; i++ cout"|"setwmsetiosflagsios::leftFirstPartition[i]; coutendl; Print2n,m; void NextFitint n, int m cout"选择了循环首次适应算法!"endl; coutendl; int i,j,flag0; fori0; in; i++ CycleFirstPartition[i] FreePartition[i]; forj0; jm; j++ foriflag; in; i++ ifProcessNeed[j]CycleFirstPartition[i] ProcessPartition[j]i; CycleFirstPartition[i] CycleFirstPartition[i]-ProcessNeed[j]; flag i+1; ifin-1 flag0; break; Printn,m; cout"空间序号:"" "; fori0; in; i++ cout"|"setwm-1"空间"i+1; coutendl; cout"分区大小:"" "; fori0; in; i++ cout"|"setwmsetiosflagsios::leftFreePartition[i]; coutendl; cout"剩余分区大小:"; fori0; in; i++ cout"|"setwmsetiosflagsios::leftCycleFirstPartition[i]; coutendl; Print2n,m; void BestFitint n, int m cout"选择了最佳适应算法!"endl; coutendl; int i,j,flag0,temp,id0,flag10; fori0; in; i++ BestPartition[i] FreePartition[i]; whileflag1m flag 0; fori0; in; i++ Partition[i]0; fori0; in; i++ ifProcessNeed[flag1]BestPartition[i] Partition[flag]i; flag + 1; temp BestPartition[Partition[0]]; id Partition[0]; fori1; iflag; i++ iftemp BestPartition[Partition[i]] temp BestPartition[Partition[i]];id Partition[i]; BestPartition[id]BestPartition[id]-ProcessNeed[flag1]; ProcessPartition[flag1]id; flag1 + 1; Printn,m; cout"空间序号:"" "; fori0; in; i++ cout"|"setwm-1"空间"i+1; coutendl; cout"分区大小:"" "; fori0; in; i++ cout"|"setwmsetiosflagsios::leftFreePartition[i]; coutendl; cout"剩余分区大小:"; fori0; in; i++ cout"|"setwmsetiosflagsios::leftBestPartition[i]; coutendl; Print2n,m; void WorstFitint n, int m cout"选择了最坏适应算法!"endl; coutendl; int i,j,flag0,temp,id0,flag10; fori0; in; i++ WorstPartition[i] FreePartition[i]; whileflag1m flag 0; fori0; in; i++ Partition[i]0; fori0; in; i++ ifProcessNeed[flag1]WorstPartition[i] Partition[flag]i; flag + 1; temp WorstPartition[Partition[0]]; id Partition[0]; fori1; iflag; i++ ifWorstPartition[Partition[i]] temp temp WorstPartition[Partition[i]];id Partition[i]; WorstPartition[id]WorstPartition[id]-ProcessNeed[flag1]; ProcessPartition[flag1]id; flag1 + 1; Printn,m; cout"空间序号:"" "; fori0; in; i++ cout"|"setwm-1"空间"i+1; coutendl; cout"分区大小:"" "; fori0; in; i++ cout"|"setwmsetiosflagsios::leftFreePartition[i]; coutendl; cout"剩余分区大小:"; fori0; in; i++ cout"|"setwmsetiosflagsios::leftWorstPartition[i]; coutendl; Print2n,m; void choiceint n, int m int intput; cout"\n请选择:1.首次适应算法 2.循环首次适应算法 3.最佳适应算法 4. 最坏适应算法:"endl; cinintput; coutendl; switchintput case 1: FirstFitn,m; choicen,m; break; case 2: NextFitn,m; choicen,m; break; case 3: BestFitn,m; choicen,m; break; case 4: WorstFitn,m; choicen,m; break; coutendl; void Printint n, int m int j; cout"进程名:"; forj0; jm; j++ cout"|"setwmsetiosflagsios::leftProcessName[j]; coutendl; cout"进程分区大小:"; forj0; jm; j++ cout"|"setwmsetiosflagsios::leftProcessNeed[j]; coutendl; cout"分配结果:"endl; void Print2int n, int m int i,j; fori0; in; i++ forj0; jm; j++ str[i][j] 0; cout"进程分配分区:"; fori0; in; i++ int k0; forj0; jm; j++ ifProcessPartition[j]i str[i][k] ProcessName[j]; k + 1; fori0; in; i++ cout"|"; forj0; jm; j++ coutsetw1str[i][j]; coutendl; // void main ifstream in"yin.txt"; int n,m; int i,j; inn; fori0; in; i++ inFreePartition[i]; inm; forj0; jm; j++ inProcessName[j]; forj0; jm; j++ inProcessNeed[j]; choicen,m; 运行结果:
/
本文档为【操作系统-实验四动态分区分配算法源代码最全(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索