函数调用与系统调用区别

系统调用就是通过系统api操作由操作系统统一管理的资源,比如设备、文件、内存、进程、进程间通信。系统调用运行在系统的核心态,需要内核上下文环境

从用户态的函数调用切换到核心态的系统调用,需要通过中断实现,当执行系统调用时,先将参数压入栈寄存器,然后通过中断将控制器交给操作系统,操作系统根据系统调用码查找系统调用表得到相应的访问地址,执行系统调用,将结果返回给用户程序。这过程中需要切换两次上下文,第二次是调用开始时从用户地址空间切换到内核地址空间,第二次时系统调用执行返回时,从内核地址空间切换回用户地址空间。

函数调用系统调用
运行在用户地址空间运行在内核地址空间
不需要切换上下文,开销小需要切换到内核上下文,执行结束后需要切换到用户上下文,开销大




转载网络:https://www.jianshu.com/p/8dcbe530fcc3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值