- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统--文件系统设计精要
文件价系统设计
班级: 软件四班
组长:XXXX
这是我根据网上的文件系统实现代码和课本设计的文件系统。
一、文件类型:
正规文件:存储用户和系统中数据、程序的文件。
目录文件:存储目录信息的文件。
设备文件:各种外部设备看成是文件。
二、文件系统的数据结构
1. 文件卷及其组成
文件卷由大小相等的物理块组成,物理块大小512字节,i节点大小32字节,每个物理块可存放16个i节点,共1702个物理快,则共1600个数据块,100*16=1600个i节点。
块0 块1 块2 …. 块k+1 块k+2 …. 块n
引导块管理块i节点……..i节点数据块…….数据块
块1:存放物理块的使用情况,每个区域的大小等。
i节点:存放文件的说明信息,每个i节点占用32B,每个物理块可存放16个i节点。
数据块:存放文件的数据
2. i节点的数据结构
typedef struct
{
short inum; // 文件i节点号
char file_name[10]; // 文件名
char type; // 文件类型
char user_name[10]; // 文件所有者
short iparent; // 父目录的i节点号
short length; // 文件长度
short address[2]; // 存放文件的地址,对应两个数据块
} Inode;
3.用户的数据结构
typedef struct
{
char user_name[10]; // 用户名
char password[10]; // 密码
} User;
4.文件存取控制表
文件名Hello 文件主RWE 文件组RW 其他用户R
5.打开文件表
typedef struct
{
short inum; // i节点号
char file_name[10]; // 文件名
short mode; // 读写模式(1:read, 2:write,
// 3:read and write)
} File_table;
6. 文件的目录结构
树状目录结构
根目录
用户A 用户B 用户C
子目录 子目录 子目录
7. 目录文件
文件目录表由多个目录项组成。
struct direct
{
short inum; // i节点号
char file_name[10]; // 文件名
}
文件1i节点号文件2i节点号
8.文件物理结构 : 文件索引表:
目录文件
结合6,7,8就可以看出文件的索引结构:例如:\a\ab.txt
块2: \目录的i节点
。。。
块4:目录a的i节点
。。。
块10:ab.txt文件的i节点
。。。。。
数据块
。。。。。。。。。
四、外存空间的管理
位示图: 用若干字节构成一张表,每一个字位对应一个物理块,当字位为’1’表示已占用,当字位为’0’表示未占用。
0 1 2 3 4 .。。。
1 1 1 0 1 .。。。。
五、流程图
总体工作流程:
开始
文件系统是否建立?
在内存中申请内存空间
将磁盘上的文件读入内存
Y
N
用户登录模块,输入用户名和密码,可以
在程序中设定,不用保存在文件系统中
用户名、密码对吗?
执行init(),进行初始化
操作,进入用户子目录
执行command(),对用户输入的命令进行解析和
执行。若数据被修改或新建立,则保存主存i节
点和数据块的内容到内存的文件系统,并写回磁
盘,保存修改。若输入错误命令则显示出错信息。
退出用户(logout)吗?
用户输入quit吗?
结束
执行format(),
建立文件系统
N
N
N
Y
Y
Y
open())流程图:
开始
在
文档评论(0)