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

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

ID:28665004

大小:317.00 KB

页数:14页

时间:2018-12-12

可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告_第1页
可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告_第2页
可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告_第3页
可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告_第4页
可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告_第5页
资源描述:

《可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.哈尔滨理工大学课 程 设 计(操作系统)题  目: 可变分区分配与回收(首次适应算法)班  级:计算机科学与技术学院计算机系 10-8班姓  名:       刘旭冬1004010810指导教师:       高雪瑶系主任:林克正2013年03月05日....目录1可变分区分配与回收11.1题目分析11.2数据结构11.3流程图11.4设计结论和心得22Linux代码分析42.1功能说明42.2接口说明42.3局部数据结构42.4流程图42.5以实例说明运行过程5第1章....1可变分区分配与回收1.1题目分析首次适应算法(firstf

2、it)简称FF。FF算法要求空间分区链以地址递增的次序链接。再分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,然后再按照作业的大小,从该分区中划出一款内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若找不到一个能满足要求的分区,则此次内存分配失败。1.2数据结构struct{floataddress;/*空闲区起始地址*/floatlength;/*空闲区长度,单位为字节*/intflag;/*空闲区表登记栏标志,用"0"表示空栏目,用"1"表示未分配*/}free_table[m];/*空闲区表*/stru

3、ct{floataddress;/*已分分区起始地址*/floatlength;/*已分分区长度,单位为字节*/intflag;/*已分配区表登记栏标志,用"0"表示空栏目*/}used_table[n];/*已分配区表*/....1.1流程图图1 ........1.1设计结论和心得通过课程设计得到如下结论:设计本课程前,感觉本课程并不是那么难,很容易下手,因为主要也就是写出回收主程序、内存分配主程序就行了。但是真正实施起来确非常困难。首先,必须解决动态输入构造空闲区表的问题。刚开始的时候,我们把其他的程序都写出来了,却忘了课题还要求动

4、态输入构造空闲区表。于是我们又花了很大的力气才实现动态输入构造空闲区表,即:可以根据自己的需要,从键盘输入空闲区表的块数,并输入每块空闲区表的大小及首地址。....其次,需要解决的是首次适应算法和最佳适应算法之间的转制问题。我们做完首次适应算法的程序后不知道该从什么地方着手写最佳适应算法。最后过了几天,才想到,原来只需在首次适应算法中,每次申请空闲区前先对空闲区从小到大排序即可。第三个难题就是解决回收算法的问题。回收算法可以说是本实验最难实现的算法,因为它有四种不同的情况。刚开始我们只考虑了三种情况,即:1、要回收的区域没有与之相邻接的空

5、闲区。2、要回收区域有上邻(与要回收区域相邻的上面有空闲区)。3、要回收的区域有下邻(与要回收的区域相邻的下面有空闲区)。当我们满怀欣喜感觉本课程设计已经完成的时候却发现,程序运行的时候,对于一个刚分配好的空闲区,如果有三个相邻的作业可以同时在此空闲区内申请到内存,并全并回收此三个作业后,此空闲区会被分割成两个空闲区显示。这时我们才意识到少考虑了一种情况:要回收的区域有上邻而且有下邻。我们又不得不再次修改程序。就这样,在写出大体程序后,我们前后大大小小修改了十多次,最后修改好的程序完全符合课程设计要求,我们的课程设计终于成功了!....2

6、Linux代码分析一、功能说明tun/tap驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun/tap驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链路中。在linux2.4内核版本及以后版本中,tun/tap驱动是作为系统默认预先编译进内核中的。二、接口说明做为虚拟网卡驱动,Tun/tap驱动程序的数据接收和发送并不直接和真实网卡打交道,而是通过用户态来转交。在linux下,要实现核心

7、态和用户态数据的交互,有多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交互;通过proc文件系统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用设备驱动相应的例程,设备驱动本身就是核心态和用户态的一个接口,Tun/tap驱动就是利用设备文件实现用户态和核心态的数据交互。从结构上来说,Tun/tap驱动并不单纯是实现网卡驱动,同时它还实现了字符设备驱动部分。以字符设备的方式连接用户态和核心态。下面是示意图:....Tun/tap驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分。利用

8、网卡驱动部分接收来自TCP/IP协议栈的网络分包并发送或者反过来将接收到的网络分包传给协议栈处理,而字符驱动部分则将网络分包在内核与用户态之间传送,模拟物理链路的数据接收和发送。Tun/tap

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。