系统调用

1.什么是系统调用

系统调用:操作系统对应用程序/程序员提供的接口
是程序员/应用程序请求内核服务
对用户提供的是GUI
系统调用
其中编程语言向上提供库函数,有时会将调用封装成库函数,以隐藏系统调用的一些细节。
在操作系统,向上提供系统调用,使得上层程序请求内核的服务。

2.系统调用和库函数的区别

有些库函数是对系统调用的进一步封装
有些库函数没有使用系统调用

比如说math.h数学方面的库函数不是系统调用
比如创建文件的函数是系统调用

3.为什么系统调用是必须的

两个程序要同时进行共享资源的话要使用系统调用。

需要进行互斥。如何进行互斥共享呢
解决方法为由操作系统内核对共享资源进行统一管理,并向上层提供系统调用,用户进程想要使用打印机共享资源的话,只可以通过系统调用向操作系统内核发出请求。内核会对请求进行协调处理。

4.什么功能要使用系统调用

凡是共享资源的都需要系统调用
比如打印机什么的

设备管理
文件管理
进程控制
进程通信
内存管理

5.系统调用的过程

传递系统调用参数->执行陷入指令,产生内中断->cpu处理对应的系统调用,运行在核心态->返回原来的应用程序,在用户态

这里的陷入指令是在用户态执行的
陷入指令又叫防管指令和trap指令