系统调用的理解

所谓系统调用,简单的说,就是内核为用户提供的功能强大的函数。比如read ,write函数等这些函数都是在内核中编辑实现的,用户只需要把这些函数拿来用到自己的程序中即可,至于这些函数是如何实现和运行的,那是内核已经做好的事,用户只需知道这些函数有啥功能,如何使用即可。

还需要知道的是,系统调用需要用户空间和内核空间的切换,即如果一个程序调用了系统函数比如read,那么程序的流程就从用户空间进入了内核空间,等到read函数执行完毕,再返回到用户空间。

那么什么是用户空间和内核空间呢?这就涉及到硬件方面的知识了即CPU相关的硬件知识,CPU往往分为几个模式,不同的模式其具有的硬件支持是不同的,其安全等级和权限也是不同的。而内核就是使用那个高安全等级和高权限的模式,而用户自己的程序则使用那个低安全等级和低权限的模式。这样做的目的是:内核中的进程可以随便的访问用户程序,而用户程序则不可随便访问内核。同时,不同的模式他们使用的通用寄存器和堆栈会不同。各自使用自己的寄存器和堆栈。所以就会出现一个问题,当一个用户程序调用系统函数时,需要进程模式的切换才可访问这个函数,否则权限不够无法访问。此时为了系统函数的正确执行,需要把此时一些寄存器等的值进行压入堆栈保存起来,否则模式切换有可能被破坏,等到系统调用返回时,在出栈。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值