




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安垂B重大操作系统课程设计报告书院系名称:学生姓名:专业名称:班级:学号:时间:2016年5月9日至2016年5月20日1实验目的操作系统是控制和管理计算机硬件和软件资源的虚拟机,其中的文件系统是对软件和设备进行管理的系统,文件系统是操作系统中非常重要的一个模块,它的实现占用了操作系统源码的最大编码量,其好坏也直接影响着用户对操作系统的感受程度。通过对操作系统课程设计的实践,进一步加深对文件系统的认识和理解,并在此基础上培养学生的工程应用能力。实验分别从用户态和内核态两个层次实践文件系统的部分功能。2实验任务2.1 ls实现在linux下编程实现带参数的shell命令ls,ls命令必须支持如
2、下功能。1 .基本要求(1)支持-l参数;(2)输出结果按字典排序;(3)列出文件,支持-a参数,在没有-a时候不显示隐藏文件;(4)显示记录总数。2 .高级要求(1)支持对给定的目录进行操作,如ls/tmp;(2)输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏数还受终端显示器的宽度影响,每一列尽可能的等宽;(3)正确显示文件特殊属性suid、sgid和sticky,参见联机帮助确保程序能处理各种情况;(4)支持标准的ls支持选项-R,它的功能是递归地列出目录中所有的文件包含子目录中的文件;(5)支持标准的ls支持选项-u,它会显示出文件的最后访问时间,如果用了-u而不用-l,
3、会有什么结果?;(6)当关掉一个文件的读权限,就不能打开这个文件来读。如果从一个终端登录,打开一个文件,保持文件的打开状态,然后从另外的终端登录,去掉文件的读权限,这时有什么事情会发生?编写一个程序,先用open()打开一个文件,用read()读一些内容,调用sleep()等待20s以后,再读一些内容,从另外的终端,再等待的20s内去掉文件的读权限,这样会有什么结果?。2.2编写内核模块显示目录或文件的信息。(1)使用内核模块编程;(2)调试Linux操作系统原理与应用第8章文件系统P215的例子;(3)练习给内核模块传入参数,参考关于带参数的模块编程(4)给内核模块传入参数path,其中pa
4、th为绝对路径;1)当path为目录时,显示目录对应的dentrey结构中的相关信息(可打印的信息);2)当path为文件时,显示文件对应的indoe结构中的相关信息(可打印的信息);3)当路径错误时,有错误提示信息。3开发环境设备名称设备类型配置类型参数ThinkPadE431PC机硬件配置RAM4G软件配置Ubuntu32位其他配置虚拟机4测试环境设备名称设备类型配置类型参数ThinkPadE431PC机硬件配置RAM4G软件配置Ubuntu32位其他配置虚拟机5总体设计5.1功能组织图实现ls运行命令获取屏幕宽度(2)、修改文件权限关闭文件(3)、super_block(4)、内核传参S
5、uper_block资源力口锁5.2原理获取文件的信息,使用stat函数,这个函数会得到指定文件的详细信息。Ls的实现主要借助于这个函数。因为linux是开源的,所以就使用linux内核的数据结构和函数来编写内核模块,从而得到指定文件的信息。Linux下的C编程有两个标准ANSI和POSIX标准。POSIX提供大量的系统编程的API,使用起来很方便。Windows下不支持POSIXB准,要想进行系统编程,必须使用Win32API。而Win32API的消息机制,又是比较难以理解的。而且windows是闭源的,不能够进行内核模块的编写。每一个文件可以得到一个stat结构体,里面有非常丰富的文件信息
6、。文件类型和权限、文件的i节点号码、设备号码、特殊设备号码、链接数量、文件所属者的uid、文件所属组的gid、文件大小、文件的最后访问时间、文件的最后修改时间、文件的状态最后改变的时间、文件所占用的I/O块的数量、文件所占用磁盘块的数量。这些都是实现ls所必须的。Structfile结构体就是内核模块所要使用的,里面最重要的成员就是structdentry,它是逻辑上意义上的文件,在磁盘上没有对应的影像。而structinode结构体代表的是物理意义上的文件,记录的是物理上的属性。它们都是重要的内核数据结构。Linux的文件访问权限:Linux是一个安全的操作系统,说他安全,最重要的一个原因是
7、对用户访问权限的控制。在shell下我们可以通过命令ls-lfilename来查看一文件的属性。其中第一项文件属性总共由10位构成,第一位是文件类型,剩下9位都是表示文件的访问权限,每3个一组,第一组:文件所有者对该文件的操作权限,第二组表示与文件所有者同组的用户对该文件的操作权限,第三组表示其他用户对该文件的操作权限,权限由三种字母组成:r:可读w:可写x:可执行。编写内核模块写内核模块,打印super_block结构中一些域的值。(课本上的例子)遍历系统中的超级块:list_head结构类型的字段名称为s_list。list_entry宏通过指向list_head节点的地址来得到外部超级块
8、的首地址。获取系统中个超级块的地址,获得某个子进程的地址,打印文件系统所在的主设备号和次设备号和文件系统名。遍历打印每个超级块中的所有索引节点号,打印索引结点。内核模块传入参数path,其中path为绝对路径。path=!i径时,显示如下信息:目录项标志、哈希表、短目录名、目录项长度、目录项名、目录项计数器的引用path=文件时,显示如下信息:文件索引节点的数量、文件类型和权限、用户ID、用户组ID、指定文件系统的读写访问标志、文件大小、索引节点的状态、硬链接数、引用记数、文件的块、版本号、以位为单位的块大小6详细设计6.1模块一ls功能的实现1 .功能ls支持-l参数;输出结果按字典排序;(
9、3)列出文件,支持-a参数,在没有-a时候不显示隐藏文件;(4)显示记录总数。(5)支持对给定的目录进行操作,如ls/tmp;(6)输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏数还受终端显示器的宽度影响,每一列尽可能的等宽;(7)修改文件权限(8)、支持-u、-R参数2 .算法/流程图Ls算法描述:用params20保存命令行参数的值,用pathPATH_MAX+1保存文件的路径名;程序运行时,先将命令参数保存下来,并给paramFlag赋相应的值,再判断文件路径是否存在,不存在则代表当前目录,将./赋值给path,若存在,则根据文件路径判断是文件还是目录,若是文件,就根据p
10、aramFlag和path调用DisposeParam()函数,然后再调用showFileName()函数输出该文件的属性;若是目录,就将正确的目录名保存到path;最后根据paramFlagr和path调用DirRead()函数,列出目录下所有文件的属性。流程图:main()判断路径DisposeParam()DirRead()-uHasDir()(是)(否)CompareU()Compare()l有-R(文件)参:命令建、路径少数有-R,传入参攵:当前找到的子目录的完整路径(无路径、目录)传参:命令参数、路径(是)传参:文件状态stat文件名、有参数u标志ShowFileName()Sho
11、wFileInfo()(是)传参:命令行参数、子目录(否)显示目录下的文件名,传参:命令行完整路径参数、文件路径3 .运行结果xcuburtu:-WSr-sr-x-rwxrw-rw-rwxrw-rw-rw-rw-f-r*_.-r-rwxrwxr-x-rw-rwT-drwxrwxrx-rwxrwxr-x-rwxrw-rw-rw-rw-r-rwrw-r-rwxrwrw-rwxrw-rw-rw-rw-r-*_w-r-rwrw-r-rw-rwr-总用量:96-/hxc$./Is1hxc1hxc1hxc1hxc1hxc1hxc1hxc3hxc1hxc1hxc1hxc1hxc1hxc1hxc1hxc1hx
12、c1hxt1hxc11XChxchxchxchxchxc11xchxcHkchxchxchxchxchxchxchxchxchxc222512S3&O8874115640901S20411689260346S1524415&8252276日8ThuHayWedHayTueHayHedHayThuMayThuMayThunayThuHayThuHayThuHayHedMayThuHayWedMayMedHayhiedHayWedM4yHlMayHEdnay181818:19:27Z日1617:45:白62616&l:56:4fl2fll617:45:242BUie:19:06ZOIC1S:ZZ:
13、25201622:34:552日1623123:SS201618ill:12201622:32:3620161S:11:4ZZ916Z3:15:O52S618:。9:4之261617:43:55201617:45:25201617:45:242B1S17:fl5J252916171AS:242916i+txtMakefiLleMakefileModule.synversuntitledDocuiwnt-fflle.chhhhhhl与Is.亡nodules.ordernyls,cnht.ct.kot.ncd.ct+ncd.ot.a4.模块使用的主要函数、数据类型和宏(1)主要函数说明1)函数一v
14、oidDirRead()原型;voidDirRead(int,char*)功能:读取目录下文件和子目录的内容信息。参数:paramFlag,path返回值:无函数二:voidShowFileName()原型;voidShowFileName(char*)功能:显示文件名。参数:文件名返回值:无函数三:voidShowFilesInfo()原型;voidShowFilesInfo(structstat,char*,inthasU)功能:显示文件的详细信息参数:structstat,fileName,hasU返回值:无函数四:voidDisposeParam()原型;voidDisposePara
15、m(intparamFlag,char*filePath)功能:根据参数的种类,分类对该目录或文件进行不同的显示操作参数:paramFlag,filePath返回值:无函数五:intCompare()原型;intCompare(constvoid*,constvoid*)功能:按字典顺序排序。参数:返回值:strcmp(char*)first,(char*)last)函数六:intCompareU()原型;intCompareU(constvoid*,constvoid*)功能:在有-u而没有-l的情况下,按最近时间由近到远的顺序排序。参数:structstatbuf1,buf2;返回值:(i
16、nt)buf2.st_atime-(int)buf1.st_atime);(2)数据类型1)数据类型1名称:paramFlag类型:int含义:记录命令行参数种类数据类型二:名称:total类型:int含义:-l显示的总用量数据类型三:名称:dirPathPATHCOUNTPATH_MAX+1类型:char含义:-R中存储子目录路径数据类型四:名称:st类型:structst含义:保存文件信息数据类型五:名称:maxFileLen类型:int含义:存放某目录下最长的文件名的长度数据类型六:名称:params20;/存储参数类型:char含义:存储参数(3)宏名称:#definePARAM_NO
17、NE0含义:无参数名称:#definePARAM_A1含义:参数中的-a参数(显示所有文件包括隐藏文件)名称:#definePARAM_L2含义:参数中的-1参数(列出文件的详细信息)名称:#definePARAM_U4含义:参数中的-u参数(显示文件最后一次访问时间)名称:#definePARAM_R8含义:参数中-R参数(递归显示文件与子目录及其内容)名称:#definePATHCOUNT10含义:递归显示目录功能中子目录的数量6.2模块二:read1、功能:打开文件,修改文件权限后读取文件内容。2、算法/流程图:buf、读取文件长度程序睡眠传参:文件描述符、储读取文件内容3、运行结果:h
18、xcubumtLi:-./hxcS,/f1.txt-hiu幽Buntu:rWixshxublifitu;-$cdhxChxcubuntu:/hxc$chn&d2S5l.txthxcubmntij:-/hxc$|第一迟打开文件操作wo.li负取了10字节的故据:肝工81如。修改文件权限瞳眼秒结束hc.j谟取了1白字节的数据:1口1内的门关闭文件第二次打开文件操作文件打开褶退.文件辞限不解或不存在!hxcflubuntu:-/hxc$4、模块使用的主要函数、数据类型和宏(1)、主要函数说明:1)函数一:main原型:voidmain()功能:打开文件参数:无返回值:无(2)数据类型:1)名称:fd
19、类型:int含义:文件描述符2)名称:buf类型:char*含义:定义一个空指针,用来指向动态申请的内存地址(3)、宏定义:无6.3模块三:super_block(1)、功能:通过加载内核的方式,打印出超级块super_blocks数据结构中文件系统所在的主设备号和次设备号以及文件系统名(2)、流程图:遍历各超级块的索引号节点并获取索引结点的信息hx-cjiLitiijntusudotn、.中dtkpsuidopasswordforhxc:hxcubuntu:-/hxc5|tail24S95.4S0324095.40893524B9j.4W37Z4B?5r4PS933Z4B95.4089412
20、4白勺5、4白89。3:41843766224B95.44SM724095.45896524B95.416ti8B24B95.416S7(3)、运行结果:devt:e:22ftle_typenane?pstore1251一dev_t:6:23file_typenamuyoup10919189181S917139151091410939139031&M7160609eS13911964S16&47106451964470697O6S7067T96&76S5766470Sdev_t24ftIe_typenamejfuse(4)、模块使用的主要函数、数据类型和宏1)主要函数说明:1)函数一原型:st
21、aticint_initmy_init(void)功能:模块加载参数二返回int2)函数二原型:staticvoid_exitmy_exit(void)功能:模块卸载参数:void返回值:void数据类型1)数据类型1名称:sb类型:structsuper_block*含义:定义一个超级块2)数据类型2名称:pos类型:structlist_head*含义:定义一个链3)数据类型3名称:linode类型:structlist_head*含义:定义一个链表4)数据类型4名称:pinode类型:structinode*含义:定义一个索引结点5)数据类型5名称:count类型:int含义:存储总数(
22、3)宏一名称:#defineSUPER_BLOCKS_ADDRE0SSffffff81c672e0含义:超级块的变量地址宏二名称:#defineSB_LOCK_ADDRES0Xffffffff81fac320含义:sb_lock超级块对应的自旋锁6.4模块四:向M传参:1 .功能给内核模块传入参数path,其中path为绝对路径;1) 当path为目录时,显示目录对应的dentrey结构中的相关信息(可打印的信息);2) 当path为文件时,显示文件对应的indoe结构中的相关信息(可打印的信息);3) 当路径错误时,有错误提示信息。2、流程图:3、运行结果:hxcfiubuntu:/hxc/
23、hhhhhh$sudotnsnodpath.koc_path=R/tophKcutmntu:-/hxc/hhhhlih$fhxtubutitu:/hxe/hhhhhh$dr*e&9|tail25SB5.45B?95C_pith:/tmp25595.450345Thisisdiretoryt25585.45834825SB5.45B348showTheDentryinformation;25SSS.45B3S22.DentryFlag:104676a25535.4583553,HashTableNumber:7i6605225SB5.45B357,ptrectoryN3me;tfip25SS5.
24、45B360S.UnaeLength:S255SS,458362S.Sh&ftNPimt叩25585.45B304-TVEhoccubuntu:-/hxc/hhhhlih$sudornmodpathhxcubuntu:/hxc/hhhhhh$dnesgItailZ5S85.458348showThe口entryinformation;25SSS.45B3S2Z.DentryFlag:164B76a25535.4583553,HashTableNuhber:756605225SB5.45B357,Directoryn四金;tnp25SSS.45B360S.NnaeLengths25585.458
25、3626.ShortNnaeitflpZ5S35.4583647,TV*:e25662.89131725602.991317Over!252.8913264) 模块使用的主要函数、数据类型和宏(1)主要函数说明1)函数一原型:staticintShowFilelnfo(void)功能:打印文件信息参数:void返回值:int2)函数二原型:staticintShowDirInfo(void)功能:打印目录信息参数:void返回值:int3)函数三原型:staticintopenFile(char*path)功能:打开文件参数:char*path返回值:int4)函数四原型:staticintp
26、aram_init(void)功能:加载模块参数:void返回值:int5)函数五原型:staticvoidparam_exit(void)功能:模块卸载参数:void返回值:void数据类型1)数据类型1名称:file类型:structfile*含义:定义一个文件2)数据类型2名称:inode类型:structinode*含义:定义一个索引结点3)数据类型3名称:dentry类型:structdentry*含义:4)数据类型4名称:path_file类型:staticchar*含义:定义一个字符串存放输入文件名宏:无7测试方法与测试结果7.1 测试方法编号输入用例期望结果1./ls按字典排序
27、,输出当前目录下的所有文件名(不含隐藏义件2./ls-l显示当前目录下的非隐藏文件详细信息按字典排序,并且显示文件总数3./ls-u按最近访问时间排序并输出目录下所启义件名(不含隐藏文件)4./ls-a显示当前目录下所有义件(包括隐藏文件)5./ls-R1递归显示子目录下所有义件6./ls/tmp显示指定路径的文件7.2 测试结果1、 ./lshxcubuntu:*/hxc$./Isl.txtMakefileMakefile-Module*symversUntitledDocument-fftle.chhhhhhIsIs.cmodules.ordermylscnh.ct*ctk。t.modt.
28、mod.ut.o2、 ./ls-l-w5r-sr-xrwxrwrw-rwxrw-”-rw-rw-r-rw-rw-r-hxcubuntu:-rwxrwj(r-x-rw-rw-r-drwxrwxrx-rwxrwxr-x-rwxrw-rw-rrt*rw-r-rw-rw-r-rwxrwrw-rwxrw-rw-rw-rw-T-r*-rw-r*rw-rw-r-rw-rwr-总用量:9白-/hxc$./Is1hxc1hxc1hxc1hxc1hxc1hxc1hxc3hxc1hxc1hxc1bxc1hxc1hxc1hxc1hxc1hxc1hxc1hxc22251253&088gl1564896182041168
29、926034481534435&825203225日日ThuH4yHedMayTueHayWedHayThuMayThu阀3VThuHayThuMayThuHayThuMayNedMayThuHayHedHayNedMayWedHayWed利白vHedMayNedMayia:19:27201617:45:662016&1i56:48201617:45:24201618:19:062Q161S:22:25291&22:34;55201623:23:58261618:11:12201622:32:362&1618:11:42291623:15:O52日1618109:42201617:43:552
30、61617:45:25261617:45:24ZOlfi17:45:25201617:4S:2420161+txtMakefiLleMakefile-Module.SyEversuntitledDoeurwnt-fhhhhhhIsls,cnodules.ordernht.ct.kot,nod.ct+nod.ot.o3、./ls-uhxcgiubuntu:-/hxc$./l5-ufile.chhhhhh15.Cl*txtfUntitledDocument-Isnh.ct.kotweMLcMi-3keftlemadulesorderMajule5ynver5t.mod-at.0rnMakefile
31、-4、./ls-ahxceubuntu:-/hxc$-./Is&aawt+k0.wd4tdiwddCKCFld+t二6cmd.tmperslons1.txtflakefileMakefileModulerS/mversUntitledD&cunent-ffUe.chhhhhhIsnodyleserdeTnhrGJt.kolis_sv_llJmdTt.mod.citmod.ot,05、./ls-RikKC|ubfLmtu:/lutcS-/Is-RHadjjle.3T力曲士r.Ist.eUntitled附cu假日杵Is.ct.koj,txtfftodults.ardert.nadrCH咪ls.et.r*adBqhhhhhhhhxtrfl./,tHp.wrslLoms;t.nodJhhhhhh;MakefileIMthBnoleN&dul”.小小p.ath.epath.kapAth.AMlaC,/titihhi|ihi/,tHp_wr5ions:;p-ath.HDdh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国服装里料数据监测研究报告
- 2025-2030年中国中药制剂行业“十三五”发展规划及投资前景研究报告
- 2025年中国曲柄治具市场调查研究报告
- 2025年中国景泰蓝工艺摆件数据监测报告
- 2025年中国断电型限时继电器数据监测报告
- 2025年中国数字式风机盘管恒温器市场调查研究报告
- 2025至2031年中国综合信息集成系统行业投资前景及策略咨询研究报告
- 2025至2031年中国网络数字硬盘录像系统行业投资前景及策略咨询研究报告
- 2025至2031年中国纯天然菊花浓缩汁行业投资前景及策略咨询研究报告
- 肇庆市实验中学高中历史三:第课理性之光教案
- 华为战略解码解读
- 庄子课件完整版本
- 2024年重庆市中考英语试卷(AB合卷)附答案
- 叙事护理学智慧树知到答案2024年中国人民解放军海军军医大学
- 人造草坪采购铺设项目 投标方案(技术方案)
- 三年级数学计算题300道
- 山东省临沂市2024年中考英语真题【附真题答案】
- JG-T 283-2010 膨胀玻化微珠轻质砂浆
- COCA20000词汇 增强版表格
- 遗传因素导致近视眼病进展
- 清扫保洁绿化养护 投标方案(技术标 )
评论
0/150
提交评论