Inode流程图Word下载.docx
《Inode流程图Word下载.docx》由会员分享,可在线阅读,更多相关《Inode流程图Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
voidFree(intblkno)
二.文件打开结构
Inode类数据成员说明
1.Inode状态标志位
i_flag状态标志位(ILOCK:
索引结点上锁;
IUPD:
内存inode被修改过,需更新相应外存inode;
IACC:
内存inode被访问过,需要修改最近一次访问时间;
IMOUNT:
内存inode用于挂载子文件系统;
IWANT:
有进程正等待该内存inode被解锁;
ITEXT:
内存inode对应进程图像正文段)
2.对应外存索引节点的位置信息
i_dev用于记录Diskinode位置信息的设备号;
i_number外存索引结点号
3.引用计数
i_count记录该索引结点被引用数目。
引用计数是判断一个Inode是否
闲的依据,如果i_count为0,则表示该Inode空闲,可以被分配作它用。
4.预读判断
i_lastr记录上一次读取文件的逻辑块号
5.Diskinode类相同的数据成员
i_mode:
文件工作方式信息
i_nlink:
件联结计数,即该文件在目录树中不同路径名的数量
i_uid:
文件所有者的用户标识数;
i_gid:
文件所有者的组标识数
i_size:
文件大小,字节为单位
i_addr[10]:
用于文件逻辑块好和物理块号转换的基本索引表
InodeTable数据成员说明
Inode_m_Inode[NINODE]内存inode数组,每个打开文件都会占用一个内存inode;
FileSystem*_m_FileSystem对全局对象g_FileSystem的引用
File类数据成员说明
f_flag包含了对打开文件请求类型,包括读、写以及管道类型;
f_inode指向一个打开文件的内存Inode;
f_offset是相对应打开文件进行读、写的位置指针;
f_count是该File控制块的引用计数,表示当前引用该文件控制块的进程数
OpenTileTable类数据成员说明
Filem_File[NFILE]打开文件控制块数组
Inode类中重要成员函数
将文件的逻辑块号映射到物理块号:
IntBmap(intlbn)
根据Inode对象中的Inode物理盘块索引表读取文件数据:
VoidReadI()
InodeTable类中重要成员函数
获取索引结点:
Inode*IGet(shortdev,intinumber)
释放索引结点:
voidIPut(Inode*pNode)
OpenFileTable类中重要成员函数
分配空闲File结构:
File*FAlloc()
回收File结构:
voidCloseF(File*pFile)
三.文件目录结构
DirectoryEntry类数据成员说明
StaticconstintDIRSIZ=28表示目录项中路径部分的最大字符串长度为28
Intm_ino目录项中Inode编号
Charm_name[DIRSIZ]字符数组表示目录项中的路径名
四.文件操作接口
Filesystem类数据成员说明
Inode*rootDirInode根目录内存inode;
FileSystem*m_FileSystem对全局对象m_FileSystem的引用,负责管理文件系统存储资源;
InodeTable*m_InodeTable对全局对象m_InodeTable的引用,负责管理内存inode表的管理OpenFileTable*m_OpenFileTable对全局对象m_OpenFileTable的引用,负责打开文件表项的管理
FileManager类中重要成员函数
读写系统调用公共部分代码:
voidRdwr(enumFile:
:
FlieFlagsmode)
目录搜索,将路径转化为inode,返回上锁后的inode:
Inode*NameI(char(*func)(),emunDirectorySearchModemode)
VoidOpen()调用NameI()函数搜索参数路径查找对应Inode,如果没找到相应Inode,则返回。
如果找到inode,调用open1()函数打开文件。
Open1()