下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、洛阳理工学院实验报告系别计算机系班级学号姓名课程名称计算机操作系统实验日期实验名称实验二 分区内存管理成绩实验目的:通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。实验条件:微机一台,操作系统:windows 7,编程环境:Microsoft Visual Studio 2010。实验原理:设计程序模拟内存的动态分区内存管理方法。内存分区使用分区(说明)表进行管理,采用最先适应算法从分区表中寻找空闲区进行分配,内存回收时不考虑与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用40K。t1时刻,为作业A、B、C分配80K、60K、100K、的内存空
2、间;t2时刻作业B完成;t3时刻为作业D分配50K的内存空间;t4时刻作业C、A完成;t5时刻作业D完成。要求编程序分别输出t1、t2、t3、t4、t5时刻内存的空闲分区。实验内容:#include <stdio.h> #include <stdlib.h> #include <malloc.h> int j=0; typedef struct PCB_type char name; int address,len,valid; PCB; typedef struct seqlist PCB PCBelem4; int total; PCBseql;type
3、def struct Partiton int address,len,valid; Part; typedef struct Partlist Part Partelem5; int sum; Partseql;PCBseql *pcbl; Partseql *partl; void initpcb() pcbl=(PCBseql *)malloc(sizeof(PCBseql); pcbl->total=0; void intipart() partl=(Partseql *)malloc(sizeof(Partseql); partl->Partelem0.address=4
4、0; partl->Partelem0.len=600; partl->Partelem0.valid=1; partl->sum=1; void request(char name,int len) int i;for(i=0;i<partl->sum;i+) if(partl->Partelemi.len>len) pcbl->PCBelempcbl->total.address=partl->Partelemi.address;partl->Partelemi.address+=len;pcbl->PCBelempc
5、bl->total.len=len;partl->Partelemi.len-=len;pcbl->PCBelempcbl->=name;pcbl->PCBelempcbl->total.valid=1; pcbl->total+; break; else if(partl->Partelemi.len=len) while(i<partl->sum) partl->Partelemi=partl->Partelemi+1; i+; partl->sum-; else printf("内
6、存分配不足!"); printf("n"); void release(char name) int i; int k; int m; int o; int p; int q; Part *s; s=(Part *)malloc(sizeof(Part); for(i=0;i<pcbl->total;i+) if(pcbl->PCB=name) partl->sum+;pcbl->PCBelemi.valid=0; partl->Partelempartl->sum-1.address=pcbl->
7、;PCBelemi.address; partl->Partelempartl->sum-1.len=pcbl->PCBelemi.len;partl->Partelempartl->sum-1.valid=1;for(k=partl->sum-1;k>0;k-) for(m=0;m<k;m+) if(partl->Partelemk.address<partl->Partelemm.address) o=partl->Partelemk.address; p=partl->Partelemk.len; q=part
8、l->Partelemk.valid; partl->Partelemk.address=partl->Partelemm.address; partl->Partelemk.len=partl->Partelemm.len; partl->Partelemk.valid=partl->Partelemm.valid; partl->Partelemm.address=o; partl->Partelemm.len=p; partl->Partelemm.valid=q; break; void print() int i; j=j+
9、1; for(i=0;i<partl->sum;i+) printf("t%d时刻.空闲分区有:地址 %d 长度 %d n",j,partl->Partelemi.address,partl->Partelemi.len); void main() char a,b,c,d; int e,f,g,h; initpcb(); intipart(); printf("请输入进程a的名字和所需的内存空间的大小: "); scanf("%c,%d",&a,&e); getchar(); request(
10、a,e);printf("请输入进程b的名字和所需的内存空间的大小: "); scanf("%c,%d",&b,&f); getchar(); request(b,f); printf("请输入进程c的名字和所需的内存空间的大小: "); scanf("%c,%d",&c,&g); getchar();request(c,g);print(); printf("n");printf("进程%c结束.正在释放进程%cn",b); release(
11、b);print(); printf("n");printf("请输入进程d的名字和所需的内存空间的大小: "); scanf("%c,%d",&d,&h); getchar(); request(d,h);print(); printf("n");printf("进程结束.正在释放进程%cn",a);release(a); printf("进程结束.正在释放进程%cn",c);release(c);print(); printf("n");printf("进程结束.正在释放进程%cn",d);release(d); print(); printf("n");原始数据纪录:输入数据:T1时刻 a 80, b 60, c 100,输出空闲分区T2时刻,进程结束,释放进程b,输出空闲分区T3时刻输入d 50后,输出空闲分区T4时刻 进程结束, 释放a, c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年OEM委托加工合同范本:医疗设备OEM定制加工协议书2篇
- 2024南京二手房买卖合同及房屋租赁市场动态分析协议2篇
- 2024年度企事业食堂肉类供应合同2篇
- 2024年度汽车泵租赁市场分析3篇
- 2024年二零二四年度三方债权债务转让与农业产业合作协议3篇
- 2024年度短视频平台运营管理合同3篇
- 2024年度养老院食堂管理与服务合同
- 互联网行业趋势分析
- 2024年建设工程临时用电供应协议样本版B版
- 可再生能源的商业模式创新
- 小丑电影课件教学课件
- 广发银行广告合同
- 电动车棚消防应急预案
- 三甲级综合医院绩效工资分配与考核实施方案
- 学术道德与学术规范考试答案(参考)-3
- 期末考试-2024-2025学年语文四年级上册统编版
- 《道德与法治》七年级上册第三单元复习课件
- 潍柴动力财务报表分析报告
- 2024年《中央农村工作会议》重要试题及答案
- 【《康得新公司财务舞弊案例探析及启示》17000字(论文)】
- 2024年EXCEL理论考试试题
评论
0/150
提交评论