操作系统课程设计 文件系统接口.doc
文本预览下载声明
目录
实验名称 - 1 -
模块整体功能介绍及主要目标 - 2 -
头文件的分析 - 4 -
数据结构的分析 - 4 -
函数的分析 - 7 -
1,namei()函数 - 7 -
2.Dir_namei - 10 -
3.Find_entry函数 - 11 -
5.sys_read() - 15 -
6.block_read()和block_wriet()函数 - 18 -
sys_lseek()函数 - 21 -
9getblk()函数 - 24 -
sys_mkdir()函数 - 25 -
其他函数 - 27 -
分析体会 - 27 -
参考文献 - 29 -
操作系统课程设计实验报告
实验名称
文件系统接口实现源代码分析
模块整体功能介绍及主要目标
第一部分是有关高速缓冲区的管理程序,主要实现了对硬盘等块备进行数据高速存取的函数。
第二部分代码描述了文件系统的低层通用函数,说用文件索引节点的管理。磁盘数据块的分配和释放以及文件名与i节点的转换算法,
第三部分程序是有关对文件中数据进读写操作,包括对字符设备,管道块读写文件中数据的访问,
第四部分的程序主要涉及文件的系统调用接口的实现,主要涉及文件打开,关闭。创建以及有关文件目录操作等的系统调用
文件系统对操作系统对设备的读写操作提供了一个中间层,上层应用程序只要调用上层的接口函数如readfile()函数,传入参数路径和文件名就可以了.对用户来说,他不用知道文件保存的具体的位置,是如何保存在硬件设备上的,用户只需要知道文件名和路径就可以了.其他的事由操作系统中的文件系统来完成.组用户的操作带来了方便也,使系统更安全.
引导块是计算机加电启动时可由ROM BIOS自动读入的执行代码和数据
超级块是用于存放盘设备上文件系统结构的信息,并说明各部分在大小
i节点图于说明i节点是否补使用,每个比特位代表一个i节点逻辑块位图用描述盘上的第个数据盘的使用情况,每个比特位代表盘上数据区中的一个数据据盘块。
逻辑块位图的第一个比特位代表盘上数据区中第一个数据盘块。当一个数据盘块被占用时,则逻辑块位图中相应比特位被置位
盘上的i节点部分存产着文件第中文件(或目录)的索引点,每个文件(或目录)都有一个i节点,每个i节点结构中存放着对应文件的相关信息,如文件宿主的id(uid),文件所属组id(gid),文件长度和访问修改时间等.
i节点位图最低比特位和i节点都闲置不用,并在创建文件系统时将i节点0的比特位置位
文件中的数据是放在磁盘块的数据区中的,而一个文件名则通过对应的i节点与这些数据块相联系,这些盘块的号码就存放在i节点的逻辑块娄组i_Zone[]中
block_dev,c,char_dev.c,pipe.c和file_dev.c都是为随后的程序read_write.c服务的。read_write.c程序主要实现了系统调用write()和read()。这4程序可以看作是系统调用与块设备,字符设备,管道“设备”和文件系统“设备”的接口驱动程序。
头文件的分析
#include linux/config.h 内核配置头文件。定义键盘语言和硬盘类型(HD_TYPE)可选项。
#include linux/sched.h 调度程序头文件,定义了任务结构task_struct、初始任务0 的数据,
还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。
#include linux/kernel.h // 内核头文件。含有一些内核常用函数的原形定义。
#include asm/system.h // 系统头文件。定义了设置或修改描述符/中断门等的嵌入式汇编宏。
#include errno.h // 错误号头文件。包含系统中各种出错号。(Linus 从minix 中引进的)。
#include sys/stat.h // 文件状态头文件。含有文件或文件系统状态结构stat{}和常量。
在file_table.c 文件
struct file file_table[NR_FILE]; // 文件表数组(64 项)。
数据结构的分析
struct file { //文件结构
unsigned short f_mode; //文件操作模式
unsigned short f_flags; 文件打开和控制的标志
unsigned short f_count; 对应文件句柄(文件描述符)数
struct m_inode * f_inode; 指向对应i节点
off_t f_pos; 文件当前读写指针位置
};
struct d_inode { // i节点结构
unsigned short i_mode; //文件的类型
显示全部