2019-2020-1 20199318《Linux内核原理与分析》第六周作业
第5章 系统调用的三层机制(下)
一、试验记录
1.在qemu中增加命令
①更新menu代码到最新版
②在代码中加入C函数、汇编函数
③在main函数中加入MakeConfig
④make rootfs
⑤在qemu中查看添加的命令
⑥分别执行新增的命令
2.gdb跟踪分析一个系统调用内核函数
①进入gdb调试
②设置断点,继续执行
③相对应的运行结果为
④查看getuid的系统调用函数
⑤在sys_getuid16处设置断点
⑥发现执行命令getuid时并没有停下
⑦在执行getuid_asm时停下了
⑧直接结束若干次单步执行,然后继续往下单步执行,发现出现了进程调度函数,返回了进程调度中的一个当前进程任务的值
⑨在sys_call处设置断点。发现可停,而继续执行时,刚才停下的getuid_asm也返回了值
3.system_call到iret过程流程图
总结
对系统调用处理过程的理解:
-
具体的系统调用与系统调用号绑定,然后然后都记载在一个系统调用表内,每次使用系统调用时都是通过这样的绑定关系,由系统调用号去找系统调用表然后查找到所对应的系统调用的位置。
-
同理,中断处理过程也是一样的,它也是经由中断向量号作为索引去查表,然后执行相应的具体的中断处理程序去处理中断。
-
简而言之就是“两个号&两张表”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】