系统调用学习卡片
📌
什么是系统调用?
📌 系统调用定义
系统调用
是操作系统提供给应用程序请求内核服务的编程接口
作用:作为用户程序和硬件之间的桥梁,实现资源管理和服务请求
接口类型:
命令接口
:包括GUI和命令行接口,面向终端用户
程序接口
:由系统调用组成,面向应用程序开发者
层级关系:
模拟硬件层
操作系统层(提供系统调用)
高级语言库函数层
应用程序层
🖨️
为什么需要系统调用?
🖨️ 系统调用的必要性
打印机资源占用案例:
场景
:WPS和Word两个进程同时请求打印服务
问题
:打印内容混杂(先打印一行WPS内容,再打印一行Word内容)
原因
:进程对共享资源(打印机)的无序竞争访问
解决方案
:
操作系统统一管理共享资源
通过系统调用实现资源的互斥访问
内核协调处理并发请求
关键结论:
系统调用
是保证资源共享安全性的必要机制
🔄
系统调用 vs 库函数
🔄 系统调用与库函数的区别
关键区别:
提供者
系统调用:操作系统内核
库函数:高级语言
特权需求
系统调用:需要特权指令的功能必须通过系统调用
库函数:部分无需特权
封装关系
系统调用:底层接口
库函数:可能封装系统调用或完全用户态实现
示例:
必须使用系统调用
:文件创建、内存分配、设备I/O、进程控制等
无需系统调用
:取绝对值、三角函数等数学运算
⚙️
系统调用执行过程
⚙️ 系统调用执行步骤
传参阶段
:通过寄存器传递参数(系统调用类型和具体参数)
陷入指令
:执行trap/访管指令(非特权指令但会引发中断)
权限转换
:CPU从用户态切换到内核态
入口程序
:执行系统调用对应的内核处理程序
服务执行
:内核完成请求的服务
返回恢复
:切换回用户态继续执行应用程序
关键细节:
陷入指令是用户态到内核态的唯一合法入口
参数1通常指明系统调用类型
系统调用入口程序本质是特殊的中断处理程序
🗂️
系统调用分类
🗂️ 系统调用功能分类
典型功能分类:
设备管理
:请求/释放设备
文件管理
:创建/删除文件
进程控制
:创建/终止进程
进程通信
:消息传递
内存管理
:分配/回收内存
核心要点:
所有共享资源操作必须通过系统调用实现
陷入指令的三个名称:trap指令/访管指令/陷入指令
系统调用请求在用户态发起,处理在内核态完成
重置所有卡片