梗概
- 操作系统对外部暴露的函数,而这个入口就是操作系统提供的系统调用(System Call)。
- 系统调用在用户空间进程和硬件设备之间添加了一个中间层。该层主要作用有三个:
- 它为用户空间提供了一种统一的硬件的抽象接口。
- 比如当需要读些文件的时候,应用程序就可以不去管磁盘类型和介质,甚至不用去管文件所在的文件系统到底是哪种类型。
- 系统调用保证了系统的稳定和安全。作为硬件设备和应用程序之间的中间人,内核可以基于权限和其他一些规则对需要进行的访问进行裁决。
- 举例来说,这样可以避免应用程序不正确地使用硬件设备,窃取其他进程的资源,或做出其他什么危害系统的事情。
- 每个进程都运行在虚拟系统中,而在用户空间和系统的其余部分提供这样一层公共接口,也是出于这种考虑。
- 如果应用程序可以随意访问硬件而内核又对此一无所知的话,几乎就没法实现多任务和虚拟内存,当然也不可能实现良好的稳定性和安全性。在Linux中,系统调用是用户空间访问内核的惟一手段;除异常和中断外,它们是内核惟一的合法入口。
适用范围
语义
实际应用
- 一般情况下应用程序通过基于系统调用的更上层API,而不是直接通过系统调用来编程。
- 这些api由该编程语言的某个库来提供的
- 在Unix世界,最流行的API是基于POSIX标准的。
参考