操作系统课内实验报告西安交通大学.doc

(2)在linux-/kernel/Makefile中参加:obj-y

+=

mysyscall.o

(3)在linux-/include/linux/syscalls.h中参加:asmlinkage

sys_mysyscall(void);

(4)在linux-/arch/x86/kernel/syscall_table_32.S〔如果是64位机器那么32替换为64〕中参加:.long

sys_mysyscall

在linux-/arch/x86/ia32/ia32entry.S中参加:.quad

(5)在linux-/arch/x86/include/asm/unistd_32.h中参加:#define

__NR_mysyscall

349

并将#define

NR_syscalls

替换为#define

350

〔这里根据实际情况,__NR_mysyscall为现有最大值,NR_syscalls加一即可〕(6)重新编译、安装、重启(7)测试查看/proc/kallsyms中是否有mysyscall,如果有,表示符号已经导出。编译运行,输出0即为正确,-1为错误。

instindstini(stmp(ommond,mksom)//构建根本文件结构{hvtue;out{hvtue;hrdinam[14];indinmmdidinm,od[num1]}i(stmpommond,mk)//创立数据文件****规定目录文件只占1~4个盘块当前目录下创立{hvtue;hrilnm[14];inilnm;//理论上可输入1~4盘块的内容hrontnt[2048];out<请先输入文件内容1~2048位:inontnt;mkilnm,ontnt}i(stmpommond,p)//文件拷贝****把指定目录下的指定文件拷贝到当前目录下){hvtue;hrstin[100];//<路径至少有个‘/’以oot开头,不以‘/’结尾>instinpstin}i(stmp(ommond,m")//数据文件删除****当前目录下删除{hvtue;hrilnm[14];inilnmmilnme据文件)

}i(strmpommond,"t)//显示文件内容(当前目录下指定数{hvtue;hrilnm[14];inilnmtilnm}i(stcmpommond,hmod)//改变文件权限{hvtue;hrnme[14innmhmodnm}i(stcmpommond,hown")//改变文件拥有者如拥有者在另一个组,那么组也要改掉){hvtue;hrnme[14innmhownnme}i(stmp(ommond,hp)//改变文件所属组){hvtue;hrnme[14innmhgpnm}i(stmp(ommond,hnm)//改变文件名{hvtue;hrnme[14innmhnmnme}//////////////////////////////////////////////////////////////////*对当前目录的操作*/i(stcmpommond,pwd)//显示当前目录{hvtue;out<"您的当前目录为:

hvtuout<系统已重置i(stmp(ommond,xit)//退出{hvtue;tun;}i(hvelse//都不被接受{outommond<<"isnotalglommnd!!}}}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////**/voidpintodvoid//根据结点路径,输出路径{out

out

tuna/////////////////////////////////////////////////////////////////////4.hso.h/////////////////////////////////////////////////////////////////////boolhvwpowe(NODEinod//判断当前用户对指定的结点有无写权限{i(stmp(us,inod.own)//是文件拥有者{}lse{

iinode.mod[2]wtuntutunflsi(stcmpgoup,inod.own)//是组内{iinod.mod[5]w')tuntutunls}ls//其他用户{iinod.mod[8]w')tuntutunls}}}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////voidhmodhr*nm)//改变文件权限{NODEinod,inod2;dinodeod[num1],inod;//当前点写入结点对象inti,indx;//i为录项下标indx2为目项中结点号i(hvsmnam,inod,i,indx2)){dinodindx2,inod2i(hvewpowinod2)){hrmod[3];out<1表示拥有者4表示组内7表示其他用户a表示模式b表示x模式c表示x模式nout<请输入修改方案例如4:inmodi(mod[0]1'||mod[0]4'||mod[0]7'){//intmod[0]49;强制类型转换是转成其ASCI码i(mod[1]a'){inod2.mod[intmod[0]48]-inod2.mod[intmod[0]148]wwritinodinod2,indx2out<修改完毕}lse{

i(mod[1]b'){inod2.mod[intmod[0]48]rinod2.mod[intmod[0]148]writinodinod2,indx2;out<修改完毕}lse{

i(mod[1]'c'){inod2.mod[intmod[0]48]rinod2.mod[intmod[0]148]wwritinodinod2,indx2out<修改完毕otond;

}}lse{

}lse{}}

out<"输入不合法;}}lse{

out<输入不合法!;otond;}}lse{

out<你无权修改该子目录或文件;otoend;out<不存在该子目录或文件;otond;}//修改当前i点和子结点hrtmpbu[9];_sttimtmpbustp(inod.tim,tmpbustp(inod2.tim,tmpbuwritinodinod,od[num1]writinodinod2,indx2nd:tun;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////voidhownhar*nme)//改变文件拥有者如拥有者在另一个组,那么组也要改掉){NODEinod,inod2;dinodeod[num1],inod;//当前结点写结点对象inti,indx;//i为目项下标indx2为目录中结点号i(hvwpowrinod)){i(hvsmnam,inod,i,indx2)){dinodeindx2,inod2i(hvwpowinod2)){hrown2[6];hrus2[6];hrroup2[6out<请输入改后的文件所有者:inown2;boolisls;//判断输入的也是合法用户名us.opn(use.txt,ios:ino(intn0;nusnum;n+//用户名18*n0~18*n5密码18*n6~18*n1用户组18*n12~18*n17{us.sek18*nus>us2;i(stmpown2,use2)){istuus.sek18*n12us>goup2;bk;}}us.losi(is){

stpinod2.own,own2stpinod2.oup,goup2writinodinod2,index2out<修改成功//修改当前i结点和结点hrtmpbu[9];_sttimtmpbustp(inod.tim,tmpbustp(inod2.tim,tmpbuwritinodinod,od[num1]writinodinod2,indx2}lse{

}lse{}

out<不存在该用户,修改失败out<"你没有权限}}}lse{

lse{}

out<不存在该子目录或文件out<你没有权限}}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////voidhrphr*nme)//改变文件所属组{NODEinod,inod2;dinodeod[num1],inod;//当前结点写结点对象inti,indx;//i为目项下标indx2为目录中结点号i(hvwpowrinod)){i(hvsmnam,inod,i,indx2)){dinodeindx2,inod2i(hvwpowinod2)){hrroup2[6hragoup2[6];out<请输入改后的文件所所属组:in>roup2;boolisls;//判断输入的也是合法用户名us.opn(use.txt,ios:ino(intn0;nusnum;n+//用户名18*n0~18*n5密码18*n6~18*n1用户组18*n12~18*n17{us.sek18*n12us>aoup2;i(stmp(goup2,goup2)){}us.losi(is)

istubk;}{stpinod2.oup,goup2writinodinod2,index2out<修改成功//修改当前i结点和结点hrtmpbu[9];_sttimtmpbustp(inod.tim,tmpbustp(inod2.tim,tmpbuwritinodinod,od[num1]writinodinod2,indx2}lse

out<不存在该组,修改失败{out<"你没有权限}}}lse{

out<不存在该子目录或文件out<你没有权限}}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////voidhnmhar*nme)//改变文件名{NODEinod,inod2;dinodeod[num1],inod;//当前结点写结点对象inti,indx;//i为目项下标indx2为目录中结点号i(hvwpowrinod)){i(hvsmnam,inod,i,indx2)){dinodeindx2,inod2i(hvwpowinod2)){hrnam2[14];out<请输入更改后的文件名:innm2;disk.opn(disk.txt,ios::in|ios::out|ios::notedisk.skp(514*inod.dd[0]36*idiskstw(15)nme2;disk.los//如果是目录文件,其下的所有目录项都要改pnam[14]iinode2.mod[0]d{disk.opndisk.txt,ios::in|ios::out|ios::noteointi0;iinod2.siz/36;i//遍历所有的目录{disk.skg514*inod2.dd[0]36*i18diskstw(15)nm2;}disk.los}out<更改成功//修改当前i结点和子结点hrtmpbu[9];_sttimtmpbustp(inod.tim,tmpbustp(inod2.ctim,tmpbuwritinod(inod,od[num1]writinod(inod2,indx2}lse{}}

out<"你没有权限}lse{

out<不存在该子目录或文件out<你没有权限}}/////////////////////////////////////////////////////////////////////5.di.h//////////////////////////////////////////////////////////////////////**///当前目录unm〔肯定是目录文件〕当前i结点od[num1]voidmkdihr*dinam//创立目录规定目录文件只占一个盘块)当前目录下创建{NODEinod,inod2;dinode(od[num1],inode;//把当前i结点od[num1]内读入inodei(hvwpowr(inod)//判断权限{i512inod.siz36//是否目录项已到达最多14个{}lse{

out<当前目录已满,创立子目录失败inti,indxi(hvsmdinm,inod,i,indx2)//有无重名存在着{out<该目录已存在,创立失败}ls//可以创立目录{intiidillo;//申请结点i(iid1){intbibllo;//申请盘块ibid!1){//当前目录盘块的修改disk.opndisk.txt,ios::in|ios::out|ios::nortedisk.skp(514*inod.dd[0]inod.sizediskstw(15)dinm;//写目录名diskstw(3)iid;//写结点diskstw(15)

//当前目录i结点的修改inod.siz36;_sttimtmpbustpinod.tim,tmpbu//新创目录i结点的初始化/**/inod2.siz0;//intsiz文件大小inod2.bnum1;//intbnum;件盘块数inod2.dd[0]bid;//itdd[];四个直接盘块号0~512*42048)没有指向

ointa1;a4;a+//指向0#表示inod2.dd[]0;inod2.dd10;//intdd1;一个一次间址inod2.dd20;//intdd2;一个两次间址

stp(inod2.own,usr;stp(inod2.oup,aoup;stp(inod2.mod,drwxxx";//hrmod[1];文件类别及存储权限默认最高)

_sttimtmpbustp(inod2.tim,tmpbuf;//hrtim[9];writinod(inod2,iid

/*disk.opndisk.txt,ios::in|ios::out|ios::nortedisk.skp51464*iid2*iid/8diskstw(6)0;//intsiz;文件大小diskstw(6)<1;//intbnum;文盘块数diskstw(3)

disk.los;*/out<目录已成功创立}lse{}

iiid;//刚申请的结点释放掉out"盘块已用完,创立子目录失败”;}lse}}lse{

{out<结点已用完创立子目录失败}}out<你没权限创立}writinod(inod,od[num1];//把inoe写入指定结点}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////boolhvsm(hr*dirnm,NODEinod,inti,intindx2//判断对象inode指向的目录文件盘块中有无该名的目录项存在着,有返回1无返回0{//有该目录项那么按引用调用的i为待删子目录目录项下标indx2目录项中的待删子目录的结点号boolhvflshrnm[14];disk.opndisk.txt,ios:in|ios::out|ios::noteoi0;iinod.siz/36;i//遍历所有的目录项{disk.skg514*inod.add[0]36*idisknami(stmpdinm,nam)){}disk.lostunhv}

hvtudiskindx2;bk;}/////////////////////////////////////////////////////////////////////intt0;//记录递归重数入口加1出口减1/////////////////////////////////////////////////////////////////////voidmdihr*dinam,intindx//删除目录当前目录下删除参数为子目录名,当前结点){tNODEinod,inod2;DRdidinodeindx,inod;//当前结点写入结点对象i(hvwpowrinod)//判断权限{inti,indx;//i待删子目录目录项下标indx2为目录项中的删子目录的结点号i(hvsmdinam,inod,i,indx2)//存在该子目录名{dinodeindx2,inod2;//待删子目录的结点写入结点对象i(hvwpowinod2)//判断权限{i(inod2.mod[0]d'//判断要删除的是目录文件而非数据文件{i(inod2.siz0//判断待删子目录有无子目录有{hres='';

//out该目录非空,不能删除it1){out<"该目录非空,如果删除的话,将失去目录下所有文件,要继续(/n)in>s;}i((s=='')||(es=Y')){递归将其删除

hrnm[14];

//遍历待删子目录inod2)所有子目录,intinx3;NODEinod3;ointi0;iinod2.siz/36;i//遍历所有的目录项{disk.opndisk.txt,ios::in|ios::out|ios::noctedisk.skginod2.dd[0]*51436*idisknamdisk.los

diskindx3;dinodeindx3,inod3iinod3.mod[0]d//是目录文件{mdinm,indx2}ls//是数据文件{mnm}}mdidinm,indx;//子目录空了再删除自己}lse{out<目录删除失败}}ls/

THE END
1.2024年12月20日安居新闻品牌栏目专题2024年12月20日安居新闻 更新时间:2024-12-20 来源:灵动安居网 00:00 / 00:00 正常 加载出错分享到: 【打印正文】 上一条:没有了! 下一条:2024年12月19日安居新闻 [ 2024-12-19 ] 官方微信 官方微博 灵动安居网版权所有 未经书面授权 不得复制或建立镜像地址:四川省遂宁市安居区安居大道 电话:https://www.ldajw.com/ztlm/pplm/content_12555
2.青羊区公园城市建设和城市更新局召开2024年第二批次老旧小区改造近日,青羊区公园城市建设和城市更新局召开“青羊区2024年老旧小区第二批次改造项目、青羊区2024年老旧小区第二批次基础配套设施改造项目施工西御河街道标段”开工协调及建设技术交底会。区新科局、区住建交局、区执法局、区审计局、区公安分局、区生态环境局、交警四分局、区消防救援大队、西御河街道、成都青羊城乡建设http://www.cdqingyang.gov.cn/qyfgj/bmfc/2024-12/19/content_78202c7676ab4704a5c1d2c2c57f8156.shtml
3.日常生活小技能,赶紧码了试一试!人民城市大课堂暨2024年杨浦区社区规划师培训活动在杨浦区大桥街道顺利开展 12月17日 18:32| 媒体速报杨浦区 现代集装箱房屋舒适的环境让人心动不已! 今天08:52| 常熟雅致模块化建筑有限公司 这些菜,烹饪之前一定要焯水,不然小心有毒! 12月18日 15:35| 媒体动态1 胖子也分颜色,肥胖如何对症治疗? 12月18日 https://cj.sina.com.cn/articles/view/5820068605/m15ae732fd033017q5m
4.移动管理平台登录http://eoa.zjnu.edu.cn/
5.2024年12月24日系统升级公告为给客户提供更优质的服务,我公司将于2024年12月24日0:00至6:00进行相关网络调整工作,届时可能会影响全省移动用户的语音、手机上网业务的正常使用,以及全省用户其他业务的办理。 给您带来不便,敬请广大客户谅解! 中国移动通信集团江苏有限公司 2024年12月16日https://www.10086.cn/aboutus/news/pannounce/js/index_250_517_detail_51442.html
6.关于在密云一支路施工期间相关道路交通组织临时调整的公告因排水管线施工,自2024年12月23日起至2025年4月15日止,密云一支路(延安路至凯苑路)封闭断交,禁止机动车通行(界内车辆除外)。原途经密云一支路车辆可经由延安路、芥园西道、凯苑路等道路绕行通过。 界内通行车辆及行人须按照交通信号指示通过,减速慢行(机动车限速20公里/小时),注意安全。 http://zfzxw.org/show-643141.html
7.通川新闻20241218达州融媒 立即打开通川新闻20241218 12-18 18:30 1119浏览 评论 暂无评论 我来说两句 http://m.dzxw.net/cms/content/422068699
8.中国电力建设集团中国电力建设报2024年12月18日第579期资讯中心2024年12月18日第579期 时间:2024-12-20 字体:[ 大 中 小 ] 分享 579djSL1B.pdf 579djSl2B.pdf 579djsL3B.pdf 579djSL4B.pdf 【打印】【关闭】联系我们 | 版权声明 | 隐私与安全 | 咨询与建议 | 网站地图 | RSS订阅 技术支持:中国电力建设集团科技与数字化部 京ICP备 11043677号 京公网https://www.powerchina.cn/art/2024/12/20/art_7541_2051949.html
9.GovHK香港政府一站通:香港政府通知你香港政府通知你为市民提供方便途径接收政府资讯和提示。可透过以下QR图码下载流动应用程式。iPhone/iPad 版 Android 版 Android版(华为)最近7天的讯息列表日期 2024年12月20日 时间 上午 8:11 提示讯息 较早前因水管紧急维修而封闭的广播道介乎慧园与嘉皇台之间的一段部份行车线现已解封。https://www.gov.hk/sc/theme/govhknotifications/?id=14865395
10.发格CNC维修手册.pdf内容提供方:微传科技 大小:16.91 MB 字数:约11.94万字 发布时间:2024-06-21发布于河北 浏览人气:37 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)发格CNC维修手册.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 目录 一、CNC101/102系统的维修https://max.book118.com/html/2024/0612/6013133024010144.shtm
11.中国通信企业协会关于正式发布《移动通信基站室外单元隐蔽化设施根据《中国通信企业协会团体标准管理办法》的要求,经协会标准化管理委员会审核,批准《移动通信基站室外单元隐蔽化设施技术标准》等9项团体标准发布,现予以公告。 以上9项团体标准自2024年12月25日起实施,有关标准文本可在“全国团体标准信息https://mp.weixin.qq.com/s?__biz=MzIwMDgwNjgyNw==&mid=2247513144&idx=2&sn=e29ef6395a8d70147d88ad118b18214c&chksm=97d03a4b0239d7d22354353565514ab7f8f3bce29023ae46f5d1774027cada814c5320856cec&scene=27
12.南通东之杰取得一种施工升降机的吊杆结构专利金融界日期金融界2024年12月20日消息,国家知识产权局信息显示,南通东之杰智能装备有限公司取得一项名为“一种施工升降机的吊杆结构”的专利,授权公告号 CN 118992859 B,申请日期为2024年10月。 来源…https://www.sohu.com/a/839941500_114984
13.雷神加速器cdk24小时小牛加速器免费CDKEY码口令兑换下载电脑版输入永久雷神加速器最新兑换码口令:70345,配合本期CDK兑换码,可以免费白嫖1600小时。 bilibili的小伙伴们,大家好~~,2024年,雷神加速器特意为各位用户带来了新的兑换码:70345。作为对大家长久以来支持和信任的感谢,我们精心准备了这份小礼物。使用这些兑换码,您就能轻松获得最多高达50小时的免费加速时长,领取这个“7034https://www.bilibili.com/read/mobile?id=35192057