系统调用
类型:(1) 进程管理 (2) 文件管理 (3) I/O 管理 (4) 信息维护 (5) 进程通信 (6) 保护
执行过程:
- 进程 传递 系统调用需要的 参数
- 进程执行陷入指令从用户态切换到内核态
- 操作系统根据 系统调用接口 查找相应的系统调用
- 操作系统执行系统调用的实现(操作系统提供的服务)
- 系统调用执行完毕后提供给进程返回值 (中断处理程序将处理器从操作系统交付给进程)
传递参数:
“值传递”:参数 较少 时可以直接存放在 ==寄存器==中
“引用传递”:参数 非常多 时 ==内存== 中开辟空间(栈空间)存放参数,寄存器中仅存放这块 空间的地址
注:Linux & UNIX 采用的就是引用传递
栈传递:不限制 参数的数量每次需要参数时都执行 ==出栈== 操作,填充参数时执行 ==压栈== 操作
注:Java 虚拟机采用的就是栈结构
系统调用接口
定义:系统调用接口使用表结构索引具体的系统调用
执行过程:
- 用户程序需要使用系统调用
- ==系统调用接口== 根据表结构 ==索引== 当前需要使用的 ==系统调用的编号==
- 系统调用使用操作系统提供的服务完成任务
- ==系统调用接口== 最后 ==返回== 给用户程序系统调用的 ==返回值和状态==
库函数(API)
引入目的:
- 系统调用通常涉及的参数实在太多,并不方便应用程序员的使用
- 通常一个简单的程序也需要使用非常多的系统的调用,对于应用程序员来说也是非常难以使用的
定义:操作系统提供的函数,供用户程序直接使用,简化程序的编写,直接使用操作系统已经实现的功能
API 类型:(1) Win32 API (2) POSIX API (3) Java API