操作系统-实验四动态分区分配算法源代码最全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四操作系统-动态分区分配算法萨斯的发生的v设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为P1, … ,P n,在动态分区分配过程中需要分配的进程个数为m(m≤n),它们需要的分区大小分别为S1, … ,S m,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。
程序要求如下:
1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。
2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区中的分配情况。
3)输入:空闲分区个数n,空闲分区大小P1, …,P n,进程个数m,进程需要的分区大小S1, … ,S m,算法选择1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法。
4)输出:最终内存空闲分区的分配情况。
代码实现:
#include
#include
#include
using namespace std;
const int MaxNumber=100;
int FreePartition[MaxNumber];次适应算法 2.循环首次适应算法 3.最佳适应算法
4.最坏适应算法:"< c in>>intput; c out< s witch(intput) { c ase 1: FirstFit(n,m); choice(n,m); break; c ase 2: NextFit(n,m); choice(n,m); break; c ase 3: BestFit(n,m); choice(n,m); break; c ase 4: WorstFit(n,m); choice(n,m); break; } c out< } void Print(int n, int m) { i nt j; c out<<"进程名: "; f or(j=0; j { cout<<"|"< } c out< c out<<"进程分区大小:"; f or(j=0; j { cout<<"|"< } c out< c out<<"分配结果:"< } void Print2(int n, int m) { i nt i,j; f or(i=0; i { for(j=0; j { str[i][j] = 0; } } c out<<"进程分配分区:"; f or(i=0; i { int k=0; for(j=0; j { if(ProcessPartition[j]==i) { str[i][k] = ProcessName[j]; k += 1; } } } f or(i=0; i { cout<<"|"; for(j=0; j { cout< } } c out< } //=============================================================== void main() { i fstream in(""); i nt n,m; i nt i,j; i n>>n; f or(i=0; i { in>>FreePartition[i]; } i n>>m; f or(j=0; j { in>>ProcessName[j]; } for(j=0; j { in>>ProcessNeed[j]; } c hoice(n,m); } 运行结果: