基于Linux内核编程的实验报告(Linux内核分析实验报告)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Linux内核编程的实验报告(Linux内核分析实验
报告)
以下是为大家整理的基于Linux内核编程的实验报告(Linux内核分析实验报告)的相关范文,本文关键词为基于,Linux,内核,编程,实验,报告,分析,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
Linux内核分析实验报告
实验题目:文件系统实验
实验目的:linux文件系统使用虚拟文件系统VFs作为内核文件子系统。可以安装多种
不同形式的文件系统在其中共存并协同工作。VFs对用户提供了统一的文件访问接口。本实验的要求是
(1)编写一个get_FAT_boot函数,通过系统调用或动态模块调用它可以提
取和显示出FAT文件系统盘的引导扇区信息。这些信息的格式定义在内核文件的fat_boot_sector结构体中。函数可通过系统调用或动态模块调用。
(2)编写一个get_FAT_dir函数,通过系统调用或动态模块调用它可以
返回FAT文件系统的当
前目录表,从中找出和统计空闲的目录项(文件名以0x00打头的为从未使用过目录项,以0xe5打头的为已删除的目录项),将这些空闲的目录项集中调整到目录表的前部。这些信息的格式定义在内核文件的msdos_dir_entry结构体中。
硬件环境:内存1g以上
软件环境:Linux(ubuntu)2-6实验步骤:
一:实验原理:
以实验4为蓝本,在优盘中编译并加载模块,启动测试程序,查
/proc/mydir/myfile的文件内容。从优盘得到fat文件系统的内容存在msdos_sb_info结构中,然后得到msdos_sb_info结构相应的属性值,得到实验一的数据。实验二中,得到fat文件系统第一个扇区的十六个文件信息。然后按照文件名头文字的比较方法,应用归并排序的方法,将头文件是0x00和0xe5的文件调到前面,其他的文件调到后面
二:主要数据结构说明:
(1)超级块对象:
数据结构说明:一个已经安装的文件系统的安装点由超级块对象代表。
structsuper_block{...
conststructsuper_operations*s_op;}
(2)索引i节点对象
数据结构说明:索引i节点对象包含了内核要操作的文件的全部控制信息,对应着打开文件的i节点表。structinode{
conststructinode_operations*i_op;...}
(3)目录项对象
数据结构说明:录项对象代表了文件路径名的各个部分,目录文件名和普
通文件名都属于目录项对象。structdentry{
1
...
structdentry_operations*d_op;...}
(4)文件对象
数据结构说明:文件对象表示已经打开的文件,它是直接连系用户
应用程序的内核对象。
structfile{
...
structfile_operations*f_op;...
}
三:函数说明:
系统函数:
container_of()sb_bread()自定义函数:
get_FAT_dir()函数:
首先输出16个文件的文件名,然后176—191行使用归并排序,设定
两个指针,一个从指向0位置,一个指向15位置。分别向后,向前查找出第一个文件头名不是0x00或者0xe5的文件和第一个文件头文字是二者的文件名,如果向后的指针一直位于向前的指针前面,
就进行二者的调换,在总的循环中,如果向后的指针超过了向前的指针,则停止循环。最后输出重新排序的文件名
2
五:结果检测:thefilesystemis:
pwDFilesystemTypeis:vfatpwD=512--
----------------FAT-info:引导扇区信息:每簇扇数=8簇位数=c
簇大小=4096FAT位数=32FAT开始扇=414FAT长度=7985目录开始扇=16384目录入口=0
数据开始扇=16384最大簇号=1021954根开始扇=2fs信息扇=1 ----------------目录文件名:------beforechange
filenameis------KeJIAnv??? filenameis------??------------havesuchfilesfilenameis------------------havesuch filesfilenameis--------
3
filenameis------??^------------havesuchfilesfilenameis--------filenameis------? ?--filenameis------?L?--filenameis------??J??J??J??Jp?J--filenameis------??};
5
以下是为大家整理的基于Linux内核编程的实验报告(Linux内核分析实验报告)(2)的相关范文,本文关键词为基于,Linux,内核,编程,实验,报告,分析,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
structmy_proc_datamydata;structtask_struct*task;intcount;
staticstructproc_dir_entry*example_dir;staticstructproc_dir_entry*date _file;staticintparam;chartemp[15];
module_param(param,int,0644);//璇绘枃浠秏yfile鐨勮椹卞姩鍑芥暟
staticintproc_read(char*page,char**start,off_toff,intcount,int*eof,void* data){intlen=0;
structmy_proc_data*mydatap=(structmy_proc_data*)data;
len+=sprintf(page,\//灏嗗瓧绗︿覆鏍煎紡鍖?//鍙互鐩存帴浣跨敤鍐呮牳鍙橀噺returnlen;}
//鍐欐枃浠秏yfile鐨勫啓椹卞姩鍑芥暟,鎶妋ydata鐨勬暟鍊煎啓鍒版枃浠朵腑
staticintproc_write(structfile*file,constchar*buffer,unsignedlongcount,vo id*data){//file鐩存帴灏辨槸myfile?buffer鎸囧悜鐨勬槸鐢ㄦ埛绌洪棿鐨勪粈涔堟暟鎹紵intlen;
structmy_proc_data*mydatap=(structmy_proc_data*)data;if(count>mYD ATA_Len)len=mYDATA_Len;else
len=count;//闀垮害鏈