详细分析system_call

本文通过分析MenuOS中getgid()的系统调用,详细探讨了system_call的执行流程。系统调用首先保存CPU寄存器,检查调试跟踪标志,验证系统调用号的有效性。接着,根据返回值处理用户态进程,并在返回用户态前执行必要操作,如检查中断、调度请求等。整个过程展示了系统调用如何通过中断进入和退出内核态。
摘要由CSDN通过智能技术生成

黄志恒
原创作品转载请注明出处
《Linux内核分析》MOOC课程
http://mooc.study.163.com/course/USTC-1000029000

本篇文章从上篇的getgid()说起。我们在之前的MenuOS中加入getgid()功能。然后在getgid处打断点,然后看看这系统调用详细是怎么搞的。先上图。
首先是修改MenuOS的代码。在test.c中加上getgid()方法。test.c是MenuOS的执行文件。
这里写图片描述
这是getgid()方法的代码。
这里写图片描述
这是main()函数。
执行这段代码的效果如下:
这里写图片描述
这里写图片描述
可以看到,当输入gid后,可以看到当前的gid。
(关于MenuOS如有兴趣,可以查看之前的文章)

然后是在getgid()执行部分打上断点。这样可以具体分析一下这系统调用。
具体见图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值