- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统
课程设计报告
学 院:
班 级:
学生姓名:
学 号:
指导老师:
提交日期:
一、实验目的 本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、 存储管理、文件系统等操作系统概念。
二、 实验要求
在任一 OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux 文件系统。具体见附表
三、 实验环境
Windows 、VC
三、实验思想
1、整体思路
实验可分为三个大模块:文件组织结构、目录结构、磁盘空间管理。编写时,先定义重要 的数据结构,整理好各个模块的思路,列出程序清单。接着编写一些对系统进行基本操作的 函数,然后利用这些函数实现各种功能。
2、盘块大概分布(分了 128块,每块64字节)
盘块
0
1
2
3
4
5
6
.....
127
用途 FAT表 FAT表 根目录 目录 数据 数据 数据 ...... 数据
盘块与盘块之间的链接,是利用FAT表项,(使用数组结构),并用它记录了所有盘块的使 用信息。
优点:可以利用FAT信息,迅速查找、打开各个目录,进行创建、修改文件。
3、目录组成
为了简单,构思目录时,每个目录只有8字节,每盘存放最多8个目录。其中,目录名、 文件名最多只能为3字节,如果是文件的话,类型名也最多为2字节。区分目录名和文件名 的方法是:设计一个属性项(1个字节),为8时表示纯目录,为4时表示文件目录。具体 分布如下图:
用途
目录名或文件名
文件类型
属性
文件起始盘 块
文件长度
大小 3 (字节) 2 11 1
优点:属性可以区分纯目录、文件目录;文件起始盘块可以记录文件的存放位置;文件长度,, 在读文件时控制指针,是否到了文件末尾。
缺点:为了简单,对文件名、目录名、类型名都作了限制。最大分别为:3, 3, 2字节。
说明:调试时,目录名、文件名、类型名一定不能超过限制,否则出现非预期的结果
4、FAT、磁盘管理
实验中,将磁盘分为128块,每块大小64字节。为了方便对空间管理,利用教材提到的方 法,把每块的块号(指针)提取出来,形成FAT表:
盘块
0
1
2
3
4
5
6
7
。。。
下一盘 块
-1
-1
4
9
0
7
8
-1
若某文件的一个盘块号为i,则这个文件的下一个盘块为表中的第i项,其中0表示此盘块 空闲,-1表示结束。
另一个重要的表是已打开文件表,用来记录打开或建立的内容,表如下:
文件路 径名
文件属 性
起始盘
文件长
度
读指针
写指针
块号
块内地 址
块号
块内地 址
5、重要数据结构
用户结构:
typedef struct //用户定义
{
Int uid;
char name[20];
char password[20];
}user;
目录结构:
typedef struct //定义目录结构
{
char name[3];//文件或目录名 为了简单只是取3字节
char type[2];//文 件类型名
char attribute; //属性
char address; //文件或目录的起始盘块号
char length; //文件长度,为了简单实验是用盘块为单位
}content; //定义为目录结构
打开文件的数据结构:
typedef struct
int dnum;//磁盘块的块号
int bnum;//块内的第几个字节
}pointer;//读写指针结构
#define n 5 〃定义打开文件的最大个数;
打开文件表项结构:
typedef struct
{
char name[20];//模 拟绝对路径
char attribute;//文件属性 1个字节
int number;//文件的起始盘的块号
int length ;//文件长度,字节为单位
int flag;//操作类型 “0”以读方式打开 “1”以写方式打开
pointer read,write;//读写指针
}OFILE;//已经打开文件表项的定义
struct
{
OFILE file[n];//已经打开文件表
int length;//表中文件的数量;
}openfile;//表 的定义
这里定义了一个本次实验中最为重要的结构:打开文件项结构,它记录了所有打开文件的信 息,各种操作,如newfile、read_file、wirte_file等都是通过该文件项表来记录读写指针的, 同时它还可以实现设计三中的对用户权限进行管理功能。
6、 编写基本函数时按照上面的思想,会变得比较简单。
7、 主要算法
为了简单,实验时主要的算法,都是建立在数组的基础上,所以比较简单。例如:search (),查找目录时,使用到了树的结构,利用递归,遍历目录树。其他基本是使用链表的方 法。
8、 由于初始设计时没
原创力文档


文档评论(0)