1.为什么用户程序不能直接访问系统内核模式提供的服务呢?
在linux中,将程序的运行空间分为内核与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程序不能访问内核数据,也无法使用内核函数。
2.什么是系统调用?系统调用的流程。
系统调用就是为了解决上述问题而引入的,是提供给用户的“特殊接口”。
系统调用规定用户进程进入内核空间的具体位置。
系统调用流程:
1.程序运行空间从用户空间进入内核空间。
2.处理完后再返回用户空间。
3.什么是API?
API(Application Programming Interface)应用程序接口,是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
4,API与系统调用的区别:
程序员调用的是API(API函数),然后通过与系统调用共同完成函数的功能。
因此,API是一个提供给应用程序的接口,一组函数,是与程序员进行直接交互的。
系统调用则不与程序员进行交互的,它根据API函数,通过一个软中断机制向内核提交请求,以获取内核服务的接口。
并不是所有的API函数都一一对应一个系统调用,有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。