外存空闲空间管理模块的设计与实现C语言.docVIP

  • 32
  • 0
  • 约1.71万字
  • 约 27页
  • 2018-12-30 发布于广东
  • 举报

外存空闲空间管理模块的设计与实现C语言.doc

计算机科学与应用系 课程设计报告 操作系统原理 姓名 学号 指导教师 专业 日期 成 绩 题目 外存空闲空间管理模块的设计与实现 指 导 教 师 评 语 目 录 TOC \o 1-2 \h \u HYPERLINK \l _Toc30773 1. 题目描述 PAGEREF _Toc30773 1 HYPERLINK \l _Toc24319 2. 设计思想 PAGEREF _Toc24319 1 HYPERLINK \l _Toc17613 3. 功能 PAGEREF _Toc17613 1 HYPERLINK \l _Toc18572 4. 数据结构和算法设计 PAGEREF _Toc18572 1 HYPERLINK \l _Toc21190 4.1数据结构 PAGEREF _Toc21190 1 HYPERLINK \l _Toc5349 4.2算法设计 PAGEREF _Toc5349 1 HYPERLINK \l _Toc2194 5. 流程图 PAGEREF _Toc2194 2 HYPERLINK \l _Toc10778 5.1空闲表法流程图 PAGEREF _Toc10778 2 HYPERLINK \l _Toc4036 5.2位示图法流程图 PAGEREF _Toc4036 4 HYPERLINK \l _Toc48 6.开发环境 PAGEREF _Toc48 6 HYPERLINK \l _Toc2593 7.结果分析 PAGEREF _Toc2593 6 HYPERLINK \l _Toc23649 8.课程设计总结 PAGEREF _Toc23649 10 HYPERLINK \l _Toc20570 参考文献 PAGEREF _Toc20570 10 HYPERLINK \l _Toc17266 附录: PAGEREF _Toc17266 10 PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 6 题目描述 文件管理要解决的重要问题之一是如何为新创建的文件分配存储空间。其分配方法与内存的分配有诸多相似之处,即同样可采取连续分配方式或离散分配方式。前者具有较高的文件访问速度,但可能产生较多的外存零头;后者能有效地利用外存空间,但访问速度较慢。不论哪种分配方式,存储空间的基本分配单位都是磁盘块而非字节。 为了实现存储空间的分配,系统首先必须能记住存储空间的使用情况。为此,系统应为分配存储空间而设置相应的数据结构;其次,系统应提供对存储空间进行分配和回收的手段。 设计思想 常用的文件存储空间的管理方法有:空闲表法、空闲链表法、位示图法、成组链接法。本次设计我用了空闲表法和位示图法来模拟实现外存空闲空间的管理。 空闲表法 空闲表法属于连续分配方式,它与内存的动态分配方式雷同,它为每个文件分配一块连续的存储空间,即系统也为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。 位示图法 位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。磁盘上所有的盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,成为位示图。 功能 本设计是模拟实现外存空闲空间的管理,用户可以选择空闲表法或者位示图法来进行文件的分配与回收并查看各个文件的存储状态。 数据结构和算法设计 4.1数据结构 (1)空闲表法数据结构 分区表目结构定义struct Partition。 (2)位示图法数据结构 空闲区结构体定义free_link、申请空间作业结构体定义office、相关位示图操作的结构体定义work。 4.2算法设计 (1)空闲表法算法设计 空闲盘区的分配采用首次适应算法。在系统为某新创建的文件分配空闲盘块时,先顺序地检索空闲表的各表项,直至找到第一个其大小能满足要求的空闲区,再将该盘区分配给用户,同时修改空闲表。系统在对用户所释放的存储空间进行回收时,要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者予以合并。 (2)位示图法算法设计 盘块分配时,顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位,转换成与之对应的盘块号,然后修改位示图。盘块回收时,将回收盘块的盘块号转换成位示图的行号和列号,修改位示图。 流程图 5.1空闲表法流程图 (1)盘块分配流程图,如图5-1所示。 查找空闲分区 查找空闲分区 否 空闲分区大小是否大

文档评论(0)

1亿VIP精品文档

相关文档