什么是系统调用?系统调用的执行过程是什么?
什么是系统调用?
OS 提供给用户编程时的一些公共子程序,一般为函数或方法。
为什么要使用系统调用?
OS 为了安全的管理计算机软硬件资源,不允许程序员直接操作系统资源,比如(进程、内存、I/O、文件),
但是用户可以通过系统调用向 OS 请求相关资源的服务,比如:I/O 的请求和释放、设备启动、文件的创建、读写、删除、进程的创建、撤销、阻塞、唤醒
进程间的消息传递、内存的配备和回收等。
总结:系统调用就是程序员给 OS 发送请求服务的方法或函数。
好比,你去餐馆吃饭,你只需要向服务员点菜(系统调用),服务员就会处理你的请求,而不是你自己去做菜。
程序员如何使用系统调用,OS 如何响应?
程序员在代码中首先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为核心态,并将返回地址压栈备用,然后 CPU 执行相应的内核服务程序,最后返回用户态。