Linux内核及分析 第五周 扒开系统调用的三层皮(下)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核及分析 第五周 扒开系统调用的三层皮(下)相关的知识,希望对你有一定的参考价值。

实验内容:

1.执行rm menu -rf命令,强制删除原有的menu

2.使用git命令 git clone https://github.com/mengning/menu.git 克隆新的menu技术分享

3.在test.c中,在main函数中增加两个MenuConfig

技术分享

4.增加对应的GetPid函数和GetPidAsm函数

技术分享

 

技术分享

5.通过脚本 make rootfs,编译并运行Menu

技术分享

6.设置断点使用gdb跟增系统调用内核函数sys_time

技术分享

系统调用是一种中断:

1. 保存现场

在系统调用时,我们需要SAVE_ALL,用于保存系统调用时的上下文。

同样,中断处理的第一步应该也要保存中断程序现场。

目的:在中断处理完之后,可以返回到原来被中断的地方,在原有的运行环境下继续正确的执行下去。

2. 确定中断信息

在系统调用时,我们需要将系统调用号通过eax传入,通过sys_call_table查询到调用的系统调用,然后跳转到相应的程序进行处理。

同样,中断处理时系统也需要有一个中断号,通过检索中断向量表,了解中断的类型和设备。

3. 处理中断

跳转到相应的中断处理程序后,对中断进行处理。

4. 返回

系统调用时最后要restore_all恢复系统调用时的现场,并用iret返回用户态。

同样,执行完中断处理程序,内核也要执行特定指令序列,恢复中断时现场,并使得进程回到用户态。

技术分享

作者: 王雪铖

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

以上是关于Linux内核及分析 第五周 扒开系统调用的三层皮(下)的主要内容,如果未能解决你的问题,请参考以下文章

第五周:扒开系统调用的三层皮(下)

20135201李辰希 《Linux内核分析》第五周 扒开系统调用的“三层皮”(下)

第五周 扒开系统调用的三层皮(下)

《Linux内核分析》 第五节 扒开系统调用的三层皮(下)

Linux内核及分析 第四周 扒开系统调用的三层皮(上)

20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)