操作系统实验四
实验题目:动态分区分配算法
实验学时:4学时
实验目的
通过这次实验;加深对动态分区分配算法的理解;进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法..
实验内容及要求
问题描述:
设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程..假设内存中空闲分区个数为n;空闲分区大小分别为P1; … ;Pn;在动态分区分配过程中需要分配的进程个数为mm≤president hun;它们需要的分区大小分别为S1; … ;Sm;分别利用四种动态分区分配算法将m个进程放入n个空闲分区;给出进程在空闲分区中的分配情况..
程序要求:
1利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程..
2模拟四种算法的分区分配过程;给出每种算法进程在空闲分区中的分配情况..
3输入:空闲分区个数n;空闲分区大小P1; … ;Pn;进程个数m;进程需要的分区大小S1; … ;Sm..
4输出:首次适应算法;循环首次适应算法;最佳适应算法;最坏适应算法;最终内存空闲分区的分配情况..
实现源代码:
#include<iostream>
#include<fstream>
wtsf#include<iomanip>
#include<string>
#define max 100 karl wolf
using namespace std;
int work_num;
int zone_num;
struct Data{
int data;
char name;
打电话英文怎么说};
Data *d=new Datamax;
struct Table{
int data;
char arraymax;
int length;
};
Table *T=new Tablemax;
Table *temp=new Tablemax;
void Init
{
ifstream ";
int i;j;
char ch;
vangelis
inf>>work_num;
cout<<"作业数:"<<work_num<<endl;
获利回吐
inf>>zone_num;
cout<<"空闲分区数:"<<zone_num<<endl;
cout<<" 作业为 :";
forj=0;j<work_num;j++
{
h;
dj.name=ch;
cout<<tw4<<dj.name;
}
cout<<endl;
cout<<"作业大小:";
fori=0;i<work_num;i++
{
inf>>di.data;
cout<<tw4<<di.data;
洋气的英文 }
cout<<endl;
cout<<"空闲分区:";
forj=0;j<zone_num;j++
{
inf>>Tj.data;
tempj.data=Tj.data;
Tj.length=0;
tempj.length=0;
cout<<tw4<<Tj.data;
}
cout<<endl;
}
void renew
英语关联词大全
{
int j;
forj=0;j<zone_num;j++
{
Tj.data=tempj.data;
Tj.length=tempj.length;
}
}
void re
{
int i;
fori=0;i<zone_num;i++
{
Ti.arrayTi.length='#';
}
silver fox}
void show
{
int i;j;
re;
fori=0;i<zone_num;i++
{
ifTi.data==tempi.data
cout<<tw4<<Ti.data;
el
{
cout<<tiosflagsios::right<<tw4<<Ti.data<<tw1;
forj=0;j<Ti.length;j++
tore {
ifTi.arrayj=='#'
break;
el
cout<<tiosflagsios::right<<Ti.arrayj;
}
}
}
cout<<endl;
}
void first_fit