知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

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

发布时间:2014-09-05 15:09:53作者:知识屋

linux的系统调用是用中断实现的
 
linux的系统调用并不是像普通的函数调用那样直接在用户进程空间完成的,它是通过中断实现的,即:发出中断 + 调用中断服务程序。 
  www.zhishiwu.com  
以x86体系为例, 
    1. 用户进程在执行系统调用前,先把系统调用名(实际上是系统调用号)、输入参数等放到寄存器上(EBX,ECX等寄存器) 
 
    2. 然后发出int 0x80指令,即触发128号中断 
    3. 系统暂停用户进程,根据128号中断找到中断服务程序,这个程序名就叫system_call() 
 
    4. system_call()接着执行。它会从寄存器中找到系统调用名、输入参数等,并根据系统调用上下文中找到引发系统调用的进程;执行完毕后它又会把输出结果放到寄存器中。 
    5. 系统恢复用户进程,进程从寄存器中取到自己想要的东西,然后继续执行。 
    
补充说明: 
    系统调用的中断一般称为软中断
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜