linux的系统调用是用中断实现的

linux的 系统调用是用中断实现的
 
linux的系统调用并不是像普通的函数调用那样直接在用户进程空间完成的,它是通过中断实现的,即:发出中断 + 调用中断服务程序。 
  www.2cto.com  
以x86体系为例, 
    1. 用户进程在执行系统调用前,先把系统调用名(实际上是系统调用号)、输入参数等放到寄存器上(EBX,ECX等寄存器) 
 
    2. 然后发出int 0x80指令,即触发128号中断 
    3. 系统暂停用户进程,根据128号中断找到中断服务程序,这个程序名就叫system_call() 
 
    4. system_call()接着执行。它会从寄存器中找到系统调用名、输入参数等,并根据系统调用上下文中找到引发系统调用的进程;执行完毕后它又会把输出结果放到寄存器中。 
    5. 系统恢复用户进程,进程从寄存器中取到自己想要的东西,然后继续执行。 
    
补充说明: 
    系统调用的中断一般称为软中断
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值