操作系统是一个系统软件,它用户软件提供服务。
用户软件对操作系统进行系统调用(system call)。
系统调用就是操作系统提供的应用程序界面(API)。
操作系统系统调用分类:
1.通信类
2.设备管理类
3.内存管理类
4.信息维护类
5.进程控制类
6.文件管理类
系统调用分为三个过程:(以上面read语句为例)
1.参数准备阶段
首先系统服务的程序将程序需要的参数压到栈上,(有时候不一定是栈,也可能是寄存器,寄存器访问速度比栈快)然后调用read库函数,库函数read将系统调用read的代码写到一个约定好的寄存器里,然后采用陷入(trap)(一种中断方式)将控制权转到操作系统。(注意这里只是表明我想调用操作系统的read但是并没有调用成功)
2.系统调用识别阶段
操作系统获得控制权之后,将代码从寄存器中取出,通过操作系统维护的一张系统调用表进行比较,得操作系统的read程序体所在的地址,转到该地址。(找到操作系统里read程序的地址)
3.系统调用执行阶段
执行系统调用函数