当前位置: 首页 > news >正文

【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、第三种:当图形化操作了,这里一直转,转二三十分钟,猜测是初始化日志打印太多:

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Windows安装和使用Doccano标注工具
  • linux 文件末尾追加内容
  • C语言之指针的奥秘(二)
  • flutter
  • 09.AOP-尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)
  • aws slb
  • 【数据结构】链表带环问题分析及顺序表链表对比分析
  • 【Linux】进程间通信之System V共享内存
  • 华宇携TAS应用中间件亮相2024年山东江信智能信创产品推介会
  • Unity之Text组件换行\n没有实现+动态中英互换
  • AIGC时代创意设计师从“创作”向“智作”升级
  • 深入解析 HTTP Headers 中的 baggage 参数
  • 【前端】包管理器:npm、Yarn 和 pnpm 的全面比较
  • pytorch实现水果2分类(蓝莓,苹果)
  • FastApi+WebSocket 解析
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android单元测试 - 几个重要问题
  • Fastjson的基本使用方法大全
  • happypack两次报错的问题
  • HTTP 简介
  • Java超时控制的实现
  • Phpstorm怎样批量删除空行?
  • Promise面试题,控制异步流程
  • react 代码优化(一) ——事件处理
  • Vue学习第二天
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 你真的知道 == 和 equals 的区别吗?
  • 世界上最简单的无等待算法(getAndIncrement)
  • 一个JAVA程序员成长之路分享
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ###C语言程序设计-----C语言学习(3)#
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十) 初识 Docker file
  • (四)Linux Shell编程——输入输出重定向
  • (转)visual stdio 书签功能介绍
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net程序集学习心得
  • .Net多线程总结