- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统大型实验——unix文件系统模拟
这次实验是按照简化版来做的,可能和简化版还有点出入。
一、结构定义:
struct usr{
struct usr
{
string usrname; /*用户名*/
string password; /*用户口令*/
int uid; /*用户标志*/
int gid; /*用户所属组标志*/
};
系统初始化时从该文件读取用户数
据。在程序中,仅仅用作用户检查
程序中没有更改用户及起其相关信
息的的功能。
struct inode{int i_num; /*节点编号*/
struct inode
{
int i_num; /*节点编号*/
int uid; /*用户标志*/
int gid; /*用户所属组标志*/
int size; /*文件大小*/
int links; /*文件连接数*/
int di_addr[10]; /*地址*/
string mode; /*存取权限*/
string ctime; /*创建时间*/
string lctime; /*最后一次修改时间*/
};
基本一样,地址项增加为10项,
权限位我只设了4位,”drwx”,
当创建一个节点时,会初始化相信
的数据,并保存在节点文件inode.txt
中。在实际编程中,没有对文件的
修改这一功能,所以我把最后一次
修改时间设为创建时间。没有文件
共 ,所以links值为1。
无论是目录还是文件,都有节点。
对于一个纯目录,我没有设他的大小
所以size 为0,同时也不分配盘块,
故地址项全设为0。
struct dir{
struct dir
{
string dirname; /*目录名*/
int fatherid; /*父目录编号*/
int id; /*目录编号*/
int nid; /*该目录所对应的节点*/
};
不同:目录名也可是文件名,可以
通过父目录编号找到某目录的子目录
nid 为该目录所对应的节点。目录
保存在目录文件dir.txt中。
如: -1 root 0 1
0 etc 1 2
0 dev 2 3
0 bin 3 4
0 usr 4 5
因为root目录为根目录,所以设其父目录编号为 –1。当要找根目录root的的子目
录时,只需找出所有父目录为0的目录。
struct supbk{
struct supbk
{
int fIBStack[80]; /*空闲I结点栈*/
int offsetFIBStack; /*空闲I结点栈指针*/
int freeIBlockN; /*空闲I结点总数
int allIBlockN; /*I结点总数*/
int fBStack[100]; /*空闲盘块号栈*/
int offsetFBStack; /*空闲盘块号栈指针*/
int freeBlockN; /*空闲盘块号栈总数*/
int allBlockN; /*盘块号栈总数*/
int lockFBStack; /*空闲盘块号栈互斥访问标志*/
int lockFIBStack; /*空闲I结点栈互斥访问标志*/
};
息都保存在超级块文件
supbk.txt中。内容和书
的一样,信息的保存是
按一定顺序的。在后面
我将给出超级块文件,
并加以说明。在超级块
文件里,有一个目录编
号项,具体怎样,我将
在编程思路中给出。
二、编程思路
以简化版为参照,每个结构都有一个相对应的文件,即超级块文件(supbk.txt),用户文件(usr.txt),目录文件(dir.txt),索引节点文件(inode.txt)。
在超级块文件里,最前面的80个数据(1——80)为空闲索引节点,其实前面5个即(1——5)为root ,etc,dev,bin,usr目录占用,所以真正空闲的索引节点为6——80 这75 个。接着后面的三个数据为 offset
文档评论(0)