365文库
登录
注册
2

合肥师范学院操作系统实验项目五

268阅读 | 12收藏 | 4页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
合肥师范学院操作系统实验项目五第1页
合肥师范学院操作系统实验项目五第2页
合肥师范学院操作系统实验项目五第3页
合肥师范学院操作系统实验项目五第4页
福利来袭,限时免费在线编辑
转Pdf
right
1/4
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
灯影 上传于:2024-07-07
实验项目五 存储管理 实验目的 熟悉内存空闲分区的分配方式; 理解动态分区存储管理方式; 掌握动态分区的分配与回收的过程。 实验内容 使用一个链表来模拟内存存储空间,建立内存块来记录内存分配使用情况,通过随机产生进程及其所需要的内存来模拟真实的进程。通过给进程分配内存及回收来实现对动态分区存储管理方法。 编制程序完成上述内容,内存空间大小为100,进程数为5,每个进程所需空间为随机产生,大小为1~20,对5个进程进行内存分配,要求每次操作结束后都能显示当前的内存分配情况。 源程序及运行结果 源程序: #include #include #include #define LEN sizeof(MEMORY_BLOCK) typedef struct MEMORY_BLOCK { int name; int address; int length; int flag; struct MEMORY_BLOCK *next; }MEMORY_BLOCK; typedef struct MEMORY_BLOCK MEMORY_BLOCK; void allocation(MEMORY_BLOCK *Header,int name,int length_p); void show(MEMORY_BLOCK *Header); void main() { int length_p,i; int processname; MEMORY_BLOCK *Header,*t; Header=(MEMORY_BLOCK*)malloc(LEN);//初始化存储空间 Header->name=-1; Header->address=0; Header->length=100; Header->flag=0; Header->next=NULL; srand((int)time(0)); show(Header); for(i=0;i<5;i++) { length_p=rand()%20+1; //随机产生进程所需存储空间,至少为1; allocation(Header,i,length_p); show(Header); } } void allocation(MEMORY_BLOCK *Header,int name,int length_p) { MEMORY_BLOCK *temp,*t,*tt; int minsize=2; //不可切割的分区阈值 t=Header; while(t!=0) { if(t->length>length_p&&t->flag==0) break; t=t->next; } if(t->length-length_p>minsize) //分割 { temp=(MEMORY_BLOCK*)malloc(LEN); temp->name=-1; temp->flag=0; temp->length=t->length-length_p; tem
tj