- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
段页式存储管理设计文档
《操作系统》综合实训项目设计文档 基本信息 项目名称 : 段页式虚拟存储管理 完成人姓名: 余凡 学号: 2011118009 完成日期: 2014年5月29日 实验内容与目的 编写程序完成段页式虚拟存储管理存储分配、地址重定位和缺段,缺页中断处理。 (1)为一个进程的内存申请(多少个段,每个段多大)分配内存,当一个进程(完成)结束时回收内存; (2)对一个给定逻辑地址,判断其是否缺段、缺页,若不缺段、不缺页,则映射出其物理地址; (3)若缺段则进行缺段中断处理,若缺页则进行缺页中断处理。 (4)由用户确定输入内存块数量和块大小,进程逻辑地址空间最多4个段,每个段最大16K,进程驻留集大小为8页。假设进程运行前未预先装入任何地址空间,页面淘汰策略采用局部(驻留集内)置换策略。 输出每次存储分配/回收时,内存自由块分布情况、相关进程的段表和页表信息。 实验目的 加深理解段页式虚拟存储管理的概念和原理。 掌握段页式存储管理中存储分配(和回收)方法; 深入了解段页式虚拟存储管理中地址重定位(即地址映射)方法。 深入理解段页式虚拟存储管理中缺段、缺页中断处理方法。 主要设计思路和流程图 设计思路: 从进程和内存两大模块出发: 内存初始化,提示用户输入内存块数和大小,每一块内存初值都置为0,表示内存空闲; 进程申请空间,用户输入进程数目,每个进程的段数,每段的页数,设置每个进程每段每页的页框号均为-1,表示未被载入内存,每页的运行时间也都为0,方便之后的LRU算法或者FIFO算法置换被淘汰的页; 为进程分配内存,对于每个进程每段每页都先判断当前内存是否已满,若未满,则判断该进程驻留集是否已满,若驻留集未满,则为该页分配一块内存,将该块内存的值置为1,该页的页框号即为找到的空闲块号,该页和该段的页标志量均置为1,每次为当前页分配内存时,都将该进程中已载入内存中的页的runtime和accesstime加1,方便方便之后的LRU算法或者FIFO算法置换被淘汰的页,并输出系统为其分配内存后的段表和页表内容。若该进程的驻留集已满,则执行下一个进程,重复执行上述动作。若内存已满,则停止内存分配,跳出该循环,询问用户是否进行地址重定位; 地址重定位时,提醒用户输入要访问的进程号,判断该进程是否在内存中,若在则提醒输入进程段号,判断该进程的这个段的标志量是否为1,若是则输入页号,判断页标志量是否为1,若是则输入偏移量,完成逻辑地址到物理地址的映射,若段标志量或页标志量不为1,则发生缺段或缺页中断,进行中断处理,选择LRU或者FIFO中断处理,并输出缺段或缺页中断处理后的段表和页表信息。 流程图: 主要数据结构及其说明 /*页表相关信息*/ typedef struct { int frameNumber; int pageFlag; int accesstime; int runcount; }Page; /*段表相关信息*/ typedef struct { int segmentlength; //段长即每一个段的页数 int startAddress; Page pagenum[SegLength]; int segFlag; int pagereal; }Segment; /*进程相关信息*/ typedef struct { Segment segment[Segnumber]; int isInmemory; int segtotalnumber; int inpage; //载入内存中的页数 int segreal; }Process; int blocksize; //块大小 int blocknumbers;//块数量 int processnumber;//进程数量 int AvailableBlock;//内存中可用块数量 int offset; //页内偏移量 Process process[Processcount];//进相关信息程 int memory[AssumeBlock];//内存块相关信息 int occupied;//已被占用的内存块数量 五、程序运行时的初值和运行结果 测试用例如下: 确定内存块数为23; 块大小为1K; 进程个数2; (1)0号进程有3个段 0号段的页数2 1号段的页数3 2号段的页数4 (2)1号进程有3个段 0号段的页数3 1号段的页数4 2号段的页数5 需要进行地址映射的进程号,段号,页号,页内偏移量 进程号0 段号0 页号1 页内偏移量234 进程号1 段号2 页号1 程序的运行结果: 进程空间申请完毕,各进程的段表页表信息 开始内存访问,访问成功的情况 内存
文档评论(0)