- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
逻辑的成组和分解
课程设计报告
学 院 系: 信学院 专 业: 计算机 姓 名: 班 级: 学 号: 指导教师: 日期: 2014年06月18日
“操作系统”课程设计报告 姓名 学号 日期 2014-6-9—2014-6-18 实验室 指导教师 设备编号 课程设计题目 逻辑记录的成组和分解
一、实习内容
模拟逻辑记录的成组和分解操作,提高磁盘存储空间的利用率。
二、实习目的
当磁盘被初始化后,存储空间的分块大小就确定了,但由于不同的用户或同一用户的不同文件的逻辑记录大小是各不相同的。在逻辑记录较小的情况下,若让一个逻辑记录独占一个物理块,那么存储空间的利用率是不高的。操作系统提供逻辑记录的成组和分解操作不仅有利于提高存储空间的利用率,而且可减少输入输出操作次数,提高计算机系统的工作效率。本实习帮助我们掌握成组和分解操作的技术以及了解成组和分解操作的实现过程。
三、实习过程
1. 数据结构设计
(1)建立索引表项的结构体
struct indexitem int logicnum;
int factnum;
;
(2)定义文件类
class file
public:
char name[5]; //文件名
int rl; //文件记录的大小
int length; //文件的记录号长度
struct indexitem *p; //定义只想索引表
public:
file void get char n[5],int recodesize1,int length1 ;
void constract ;
void dissolve ;
void print ;
void productindex ; //动态产生数组
;
2. 算法设计
算法思想:我们知道磁盘被初如化后,存储空间的分块大小就确定了,但由于逻辑记录大小是各不相同的。当逻辑记录较小时,若让一个逻辑记录独占一个物理块,那么存储空间的利用率是不高的,而且增加了I/0操作,减少了存取效率,资源浪费。因此操作系统提供逻辑记录的成组和分解操作不仅有利于提高存储空间的利用率,而且可减少输入输出操作次数,提高计算机系统的工作效率。它的主要是依靠内存,在内存中开辟了一块连续的空间,用来存放存取文件的一部分记录。当存时,当达到一个物理块时,就启动磁盘存入。当读取时,就要根据文件 的索引表去启动磁盘,读取打算读的那个逻辑记录号所在的物理块号,把其内容读到内存开辟的缓存中,再经过查找就可以找到想读取的逻辑记录号了。这就成功的找到了。
程序流程图 是 否 是 否 否
图2 分解操作模拟算法 图3 主函数
四. 程序实现及运行结果 1 源程序
2 运行结果
运行主函数,如图所示
进行文件初始化输入逻辑记录号,如图所示
打印索引表,如图所示
查询文件F1,如图所示
查询文件F2,如图所示
五、实习总结
通过这两周的课程设计,我自己从老师提供的几个题目中找到了自己感兴趣的一个实际的问题(逻辑记录的成组与分解),在实习过程中,引进了一些新的思想,例如动态数组类Carray,和c++里面的活动数组。经过我一步步调试、删改,积累了一些经验,并且复习了以前学习的知识。经过这次操作系统的课程设计,加深了对操作系统课上学习的一些思想理解,感觉这是最大的收获。在课程设计的过程中,我真正认识到了操作系统作为一门基础课,以及其的几大功能。是硬件的第一层。为我们提供了强大的功能和大量的服务。我们这个阶段只能来模拟操作系统的部分功能,因此我们就尽量的选择好的结构体和程序设计方法,例如采用立面向对象的方法,利用封装性使得程序结构上看上去简洁,而且利用其继承性大大的减少了代码,这样非常方便的实现某个实体的定义和功能。 在这实习过程中,也遇到了许多的难题,在老师的指导下和同学的帮助下,以及我自己的努力的分析其原因,后来我认识到不能为编程而编程,应力图从实际问题入手,不能局限于已定算法、流程图等。因为有的地方也不是很对,因此后来经过我自己的分析,对原有的流程图加以改进。我成功的完成了任务,也认识到了只要努力,可以编出好的东西出来的。这正是考察我们利用自己的程序设计知识解决琐碎问题的能力。
六、教师评语及成绩
评语:
成绩: 2010 年 6 月 23 日
i 记录号
号号
结束
MNO←BNO
从(k+set)开始把长为RL的信息传给用户
启动磁盘读BNO块内的内容到缓存显示BNO来代替
SET← i-l modm *RL
BNO←物理快号
查找索引表项
无此记录
输入记录号:复给i
初始化k输入缓存地址:MNO←0
开始
图1成组的操作模拟算法
开始
是
否
是
否
否
是
RNO为索引表最大号
k —m
i —m
BN
文档评论(0)