首页 > 系统服务 > 详细

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

时间:2016-03-23 21:55:40      阅读:291      评论:0      收藏:0      [点我收藏+]

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

一、给menuOS增加time和time-asm

  通过内核调试系统调用。将上次做的实验加入到menusOS,变成menusOS里面的两个命令。

技术分享

/*强制删除当前的menuOS*/

技术分享

/*克隆一个menu*/

技术分享

/*运行脚本*/

技术分享

这次的menuOS支持的命令增加,增加了time和time-asm两条命令。

技术分享

二、使用gdb跟踪系统调用内核函数sys_time

技术分享

/*13号time对应的内核处理函数sys_time*/

技术分享

/*启动到menuOS,执行time命令系统调用,停在system time函数的位置*/

 

如果一直按n单步执行会进入schedule函数。

sys_time返回后进入汇编代码处理gdb无法继续跟踪。

执行0x80之后cpu自动跳转到system_call.

三、系统调用在内核代码中的处理过程

1、系统调用在内核代码中的工作机制和初始化

从int 0x80触发一个系统调用到执行系统调用处理的函数sys time,到返回用户态的整个过程是很重要的。进程调度的时机非常关键。

system call系统调用的处理过程:

初始化中断向量的过程中将0x80与system call联系起来。

通过系统调用号将system call与sys_xyz联系起来。

返回用户态之前有一个调度时机,从systime退出后会跟踪到schedule。

系统调用机制的初始化:

技术分享

2、简化后便于理解的system call伪代码

系统调用是特殊的中断

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

原文:http://www.cnblogs.com/20135132yoggie/p/5312850.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!