第五周——扒开系统调用的“三层皮”(下)
【洪韶武 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 】
第五周 扒开系统调用的“三层皮”(下)
一、给MenuOS增加time和time-asm命令
更新menu代码到最新版本,在main函数中增加MenuConfig,增加对应点time函数和timeasm函数,Make rootfs。
二、实验过程
- 执行rm menu -rf,强制删除原有的menu文件夹,使用git命令更新menu代码至最新
- 在main函数中增加MenuConfig和详细函数
- Make rootfs
- 使用help查看系统调用
- 调试过程
三、总结分析
①Entry(system-call)
②save-all保护现场
③call *sys-call-table(,%eax,4),调用分度表,找到对应的系统调用
④syscall- exit检查是否需要跳转,若不需要,执行⑤,需要执行⑥
⑤restore-all恢复现场,然后iret结束
⑥work-pending然后进行work-notifysig处理信号(或者work-resched处理调度,然后call schedule)最后返回restore-all,然后iret结束。