可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告.docVIP

可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告.doc

哈尔滨理工大学 课 程 设 计 (操作系统) 题  目:  可变分区分配与回收 (首次适应算法) 班  级: 计算机科学与技术学院 计算机系 10-8班 姓  名:       刘旭冬 1004010810 指导教师:       高雪瑶 系主任: 林克正 2013年03月05日 目 录 1可变分区分配与回收 1 1.1 题目分析 1 1.2 数据结构 1 1.3 流程图 1 1.4 设计结论和心得 2 2 Linux代码分析 4 2.1 功能说明 4 2.2 接口说明 4 2.3 局部数据结构 4 2.4 流程图 4 2.5 以实例说明运行过程 5 1可变分区分配与回收 题目分析 首次适应算法(first fit)简称FF。 FF算法要求空间分区链以地址递增的次序链接。再分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,然后再按照作业的大小,从该分区中划出一款内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若找不到一个能满足要求的分区,则此次内存分配失败。 数据结构 struct{ float address; /*空闲区起始地址*/ float length; /*空闲区长度,单位为字节*/ int flag; /*空闲区表登记栏标志,用0表示空栏目,用1表示未分配*/ }free_table[m]; /*空闲区表*/ struct{ float address; /*已分分区起始地址*/ float length; /*已分分区长度,单位为字节*/ int flag; /*已分配区表登记栏标志,用0表示空栏目*/ }used_table[n]; /*已分配区表*/ 流程图 图1  设计结论和心得 通过课程设计得到如下结论: 设计本课程前,感觉本课程并不是那么难,很容易下手,因为主要也就是写出回收主程序、内存分配主程序就行了。但是真正实施起来确非常困难。 首先,必须解决动态输入构造空闲区表的问题。刚开始的时候,我们把其他的程序都写出来了,却忘了课题还要求动态输入构造空闲区表。于是我们又花了很大的力气才实现动态输入构造空闲区表,即:可以根据自己的需要,从键盘输入空闲区表的块数,并输入每块空闲区表的大小及首地址。 其次,需要解决的是首次适应算法和最佳适应算法之间的转制问题。我们做完首次适应算法的程序后不知道该从什么地方着手写最佳适应算法。最后过了几天,才想到,原来只需在首次适应算法中,每次申请空闲区前先对空闲区从小到大排序即可。 第三个难题就是解决回收算法的问题。回收算法可以说是本实验最难实现的算法,因为它有四种不同的情况。刚开始我们只考虑了三种情况,即: 要回收的区域没有与之相邻接的空闲区。 要回收区域有上邻(与要回收区域相邻的上面有空闲区)。 要回收的区域有下邻(与要回收的区域相邻的下面有空闲区)。 当我们满怀欣喜感觉本课程设计已经完成的时候却发现,程序运行的时候,对于一个刚分配好的空闲区,如果有三个相邻的作业可以同时在此空闲区内申请到内存,并全并回收此三个作业后,此空闲区会被分割成两个空闲区显示。这时我们才意识到少考虑了一种情况:要回收的区域有上邻而且有下邻。我们又不得不再次修改程序。 就这样,在写出大体程序后,我们前后大大小小修改了十多次,最后修改好的程序完全符合课程设计要求,我们的课程设计终于成功了! 2 Linux代码分析 功能说明 tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap 驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。在linux 2.4内核版本及以后版本中,tun/tap驱动是作为系统默认预先编译进内核中的。做为虚拟网卡驱动,Tun/tap驱动程序的数据接收和发送并不直接和真实网卡打交道,而是通过用户态来转交。在linux下,要实现核心态和用户态数据的交互,有多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交互;通过proc文件系统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用设备驱动相应的例程,设备驱动本身就是核心态和用户态的一个接口,Tun/tap驱动就是利用设备文件实现用户态和核心态的数据交互。从结构上来说,Tun/tap驱动并不单纯是实现网卡驱动,同时它还实现了字符设备驱动部分。以字符设备的方式连接用户态和核心态。下面是示意图: Tun/tap 驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档