操作系统实验三讲义

上传人:hs****ma 文档编号:431649161 上传时间:2022-10-11 格式:DOCX 页数:14 大小:130.12KB
返回 下载 相关 举报
操作系统实验三讲义_第1页
第1页 / 共14页
操作系统实验三讲义_第2页
第2页 / 共14页
操作系统实验三讲义_第3页
第3页 / 共14页
操作系统实验三讲义_第4页
第4页 / 共14页
操作系统实验三讲义_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《操作系统实验三讲义》由会员分享,可在线阅读,更多相关《操作系统实验三讲义(14页珍藏版)》请在金锄头文库上搜索。

1、黑龙江大学实验报告课程名称计算机操作系统实验项目名称分页式存储管理实验时间(日期及节次)2016年4月28日8-10节专业软件工程学生所在学院软件学院年级2014学号姓名指导教师实验室名称实验成绩预习情况操作技本实验报告附加:综合 创新能力实验 综合成绩教师签字黑龙江大学教务处实验名称:分页式存储管理实验目的实现分页式存储地址转换过程,在此基础上实现请求分页的地址转换。分页式存储管理 系统是内存非连续存储管理中基本的方法,可以通过把一个作业分成多个页面分配到不连续 的内存块中去。实验可以通过位示图的方式来模拟内存的使用情况,为每个作业建立页表用 于完成正确的地址转换。实验类型计算机操作系统课程

2、设计实验环境编程环境:Visual C+ 6.0运行环境:Windows XP主要数据结构及说明利用数据结构的线性表链式存储结构,C+胡言描述数据结构算法,先声明个头指针,头 结点,利用C+叫言函数定义节点,指车+来控制变量,利用 C+邮言函数来,控制每个方法的 执行,用数组模拟内存,用数组的地址模拟内存地址,用数组的大小模拟内存进程大小。主要设计思想与算法(流程)通过学习计算机操作系统(第三版)课程,通过在 WINDOWS境下,本次课程设计的 主要思想就是利用高级语言C+真拟操作系统的实现。模拟操作系统原理的实现分页式存储管 理,能更深刻地领会操作系统工作原理和操作系统实现方法,系统流程图如

3、图所示:主流程图初始化块长,页长,块数输入逻辑地址,计算出所处的页1, FIFOM面置换算法流程图将最先进栈的页出栈,状态位置0,块号置空,同时将当前页对应块号由出栈块号补上,状态位置1 ,将当前页号压入栈是J搜索对应的位示图是否标记0?页号对应块号为位 示图中查找到的, 状态彳立置1,位示 图置1,计算物理 地址,将页号进栈输入逻辑 地址?OPT2, LRUM面置换算法流程图页面置换算法1,FIFO2,LRU3, OP伍面置换算法流程图开始否 .当前页命中?向后查找最久未用 的页,将其出栈, 状态彳立置0,块号 置空,同时将当前 页对应块号由出栈 块号补上,状态位 置1,将当前页号 压入栈结

4、束代码:#include #include #include #define maxpagesize 40 #define swapsize 65536struct PCBint size;struct PCB *next;struct PageTableint page,blockno;pagemaxpagesize;void createbitmap (int a口) int i=0;for(i;i64;i+)ai=(rand()%2);void showbitmap(int a)printf(位示图:n);int i;for(i=0;isize/1024);for(i=0;ipagei.

5、page=i;running-pagei.blockno=j;printf(该进程的页表如下:n);printf(页号 tt 块号 n);for(i=0;ipagei.page);printf( %d,running-pagei.blockno);printf(n); void change(PCB *running)printf(输入逻辑地址:n);int a,b,c,d;scanf(%d,&a);b=a/1024-1;c=a%1024;if(b=0)d=running-pageb.blockno*1024+a;elsed=c;printf(物理地址为:n%dn,d); void exit1

6、(PCB *running,int a64)printf(进程结束后的位示图:n);int i;for(i=0;ipagei.blockno=0)arunning-pagei.blockno=0;void fifo(PCB *running)int quefifo=0;printf(FIFO 置换如图所示:n);int a3;int i;for(i=0;ipagei.page=0)if(ipagei.blockno;for(int n=0;npagei.blockno;printf(%d %d %dn,a0,a1,a2);quefifo+;printf(缺页率:d/%dn,que巾fo,64)

7、;void lru(PCB *running)int quelru=0;printf(LRU 置换如图所示:n);int a3;int max=0;int i,top=0;for(i=0;ipagei.page=0)if(max=0)a0=running-pagei.blockno;top=top+1;max=max+1;printf(%d n,a0);else if(max=1)a1=running-pagei.blockno;top=top+1;max=max+1;printf(%d %dn,a0,a1); else if(max=2)if(running-pagei.blockno=a0

8、)a0=a1;a1=running-pagei.blockno;printf(%d %d n,a0,a1);elseatop=running-pagei.blockno;max=max+1;printf(%d %d %dn,a0,a1,a2);else if(max=3)if(running-pagei.blockno=a0)a0=a1;a1=a2;atop=running-pagei.blockno;printf(%d %d %dn,a0,a1,a3);else if(running-pagei.blockno=a1)a1=a2;atop=running-pagei.blockno;prin

9、tf(%d %d %dn,a0,a1,a3); elsea0=a1;a1=a2;atop=running-pagei.blockno;printf(%d %d %dn,a0,a1,a2);quelru+;printf(缺页率:%d/%dn,quelru,64);PCB *add(PCB *ready,PCB *p)struct PCB *tmp=ready;if(ready=NULL)ready=p;ready-next=NULL;elsewhile(tmp-next!=NULL)tmp=tmp-next;tmp-next=p;tmp-next-next=NULL;return ready;P

10、CB * createprocess(PCB *running)struct PCB *p=(struct PCB *)malloczeof(struct PCB);printf(请输入新进程的大小:n);scanf(%d”,&p-size);running=add(running,p);return running;void main()int a64;createbitmap(a);showbitmap(a);int t;printf(块大小:n);scanf(%d,&t);struct PCB *running;running=NULL;running=createprocess(run

11、ning);createpage(running,a);change(running);printf(修改后的位示图如下:n);showbitmap(a);fifo(running);lru(running);exit1(running,a);showbitmap(a);实验结果(测试用例、实验结果)H 1Viiu5il &TudiOMyProjeT5!li3i5DehugM3iiexei XIL I 1 0 0 1 D &卜1网工村如图幌页率1&4辄宜奥即图图示一M页H:士,钠程案束后的位示匠一也示图:I I 0。1 0。0P 0 1 1 1 t 1 1I Q I 0 0 Q I 0 Q I 口口 I 】。L 0 1 Q 1 1 1 0 110 110 11I 0 I 0 D 1 1L I 1 D D 1 0 QPress any key to continue腹胸拼音输入法全实验总结掌握并进一步熟悉操作系统进程的各种状态以及转换。掌握利用高级语言模拟进程的执行,提高了编程设计能力。学会使用最基本C+的数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号