实验四 固定分区存储管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四固定分区存储管理

一、实验目的

通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。二、实验内容

(1)作业J3请求资源,申请5K大小的内存空间;

(2)作业J4申请33K大小的内存空间;

(3)作业J1执行完毕,释放空间

4、编写程序实现相应存储空间的分配和去配,若请求成功,修改主存分配表,并输出该表,若请求不能满足,输出“分配失败”。(其中不考虑空闲分区的移动)。

实验代码:

#include

#include

#include

#include

#include

using namespace std;

//定义进程资源类

class Resource

{

public :

string name; //用来表示占用进程

int num; //用来标识分区号

int begin; //用来存放其实地址

int length; //用来标识内存长度

int take; //用来表示当前的该资源是否被占用

Resource(int n,int b,int l,int t)

{

num = n;

begin = b;

length = l;

take = t;

}

};

//定义输出类

class Output

{

public :

string o_name;

int o_num;

int o_begin;

int o_length;

int o_take;

};

//申请资源请求

bool Request(string name,int len,vector &res) {

vector r;

//!!!!!!!!在这边定义一个指针,用来指向res,这里的好处是待会进行排序的时候,不会修改原来的res原来元素的顺序!!!!

for(int m=0;m

{

r.push_back(&res[m]);

}

//按书上所说的,首先对分区进行从小到大进行排序。(这个地方可以封装成函数)

int k;

for(int i=0; i

{

k = i;

for(int j=i+1;j

{

if(r[k]->length > r[j]->length)

{

k = j;

}

}

if(k != i)

{

Resource *temp = r[i];

r[i] = r[k];

r[k] = temp;

}

}

//已经排好序,只要第一次满足就直接将分区分配给该进程

for( i=0;i

{

//len 表示某个进程所请求的资源

if(len <= r[i]->length && r[i]->take == 0)

{

r[i]->take = 1; //被占用

r[i]->name = name; //同时把名字改成占用该资源的进程名字擦,用来输出表示

return true;

}

}

return false;

}

//去配进程的资源

bool Cancel(string name,vector &res)

{

for(int m = 0;m

{

if(pare(res[m].name) == 0)

{

res[m].name = "0";

return true;

}

}

return false;

}

//将分区处理后的结果送到类型为OutPut的容器中

vector Put(vector r)

{

vector result;

for(int i = 0;i

{

Output show;

show.o_name = r[i].name;

show.o_begin = r[i].begin;

show.o_length = r[i].length;

show.o_num = r[i].num;

show.o_take = r[i].take;

result.push_back(show);

}

return result;

}

//打印出来

void Print(vector result)

{

printf("-----------------------***-----------------------\n");

printf("分区号起始地址长度占用标志\n");

相关文档
最新文档