函数调用与系统调用

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

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

函数调用 系统调用
运行在用户地址空间 运行在内核地址空间
不需要切换上下文,开销小 需要切换到内核上下文,执行结束后需要切换到用户上下文,开销大
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容