您的位置:首页 > 教育 > 锐评 > 【Linux】内核文件系统系统调用流程摸索

【Linux】内核文件系统系统调用流程摸索

2024/10/6 5:55:27 来源:https://blog.csdn.net/r77683962/article/details/140314446  浏览:    关键词:【Linux】内核文件系统系统调用流程摸索

 内核层可以看到当前调用文件处理的进程ID

这个数据结构是非常大的:

 

 

我们打印的pid,tgid就是从这里来的,然后只需要找到pid_t的数据类型就好了。 

下图这是运行的日志信息: 

从上述日志,其实我也把write的系统调用加了入口的打印信息,因为需要验证自己的想法是否正确,看到的日志是这样的(打印日志添加上文件,函数,行是多么的方便,一下子找到所需要的信息):

在心得里写到日志量非常大的问题,其中有部分是针对文件打开的系统调用,从系统开机 后大概2分钟内openat2这个接口被调用了63.8万次,详见:

test_log/syslog_filename_can_print · r77683962/linux-6.9.0 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/blob/master/test_log/syslog_filename_can_print这也即是说打印日志一定要小心,不然内核产生的日志增长会非常非常快。

在对文件操作的时间,当时想到一个办法,打印日志的时候把文件名前4个字母跟目标比对,如果是某字符串则显示,代码如下:

登录 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/commit/9a8f609089121ac6390d6ea562ec26a5254e4b4d

测试效果(截图前面其实也创建了test1.txt):

这样也可以大量减少日志打印,不过添加有些这样的日志判断有难度。 

在修改内核后不能正常起来操作系统当前来看有三种情况:

1、代码内存越界,就是前一阵子碰到的打印filename这个变量,一般会出调用栈,不过不太容易看得到,因为开机日志显示翻页太快,页面显示到后边就卡死,黑白屏;

2、第二种:好像进入到 busybox,可以手动打印些dmesg的日志,黑白屏;

3、第三种:当图形化操作了,这里一直转,转二三十分钟,猜测是初始化日志打印太多:

其实这种过程是挺有意思,有些书讲内核运行原理,如果再配套查看内核运行实时日志,这样会更有意思,因为书上的知识是死的,而操作系统是活的,是动态的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com