Linux系统调用的过程

系统调用用户态切换内核态的引发原因:

                                 调用系统调用函数 ——>软中断

                                 缺页异常——>硬中断

系统调用的过程:

         产生0X80号中断,保存当前进程的现场信息,将系统调用的系统调用号写入eax寄存器中。中断处理程序执行,也即切换到了内核态,此处也是执行程序调用的程序,从eax寄存器中读出系统调用号,查找系统调用表,找到对应的内核函数执行,将执行结果存入到eax寄存器中。中断处理程序执行完后,恢复原本程序的执行,即回到了用户态,应用程序从eax寄存器中获取到返回值。

系统调用和库函数的区别:

 系统调用:是实现在内核中,编写内核代码时,就实现了该功能。<处于内核态>

 库函数:是实现一般在库文件中。<处于用户态>

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值