系统调用的概念和类型

系统调用提供了用户程序和操作系统内核间的接口。

1.系统态和用户态

在实际运行过程中,处理机会在系统态和用户态间切换。相应地,现代多数OS将CPU的指令集分为特权指令和非特权指令两类。
(1)特权指令。特权指令是指在系统态运行的指令,它对内部空间的访问范围基本不受限制,不仅能访问用户空间,也能访问系统空间。
(2)非特权指令。非特权指令是运行在用户态的指令。应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,对内存的访问范围也局限于用户空间。

2.系统调用

系统调用本质上是应用程序请求OS内核完成某功能时的一种过程调用,它与一般的过程调用的几个差别:
1.运行在不同的系统状态。一般的过程调用其调用程序和被调用程序运行在相同的状态——系统态或用户态,而系统调用最大的差别是:调用程序是运行在用户态,而被调用程序是运行在系统态。
2.状态的转换。由于系统调用的调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,需要通过软中断机制,先由用户态转换为系统态,经内核分析后,才能转向相应的系统调用处理程序。
3.返回问题。在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完成后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最高优先级时,才返回到调用进行继续执行;否则,将引起重新调用,以便优先权最高的进程优先执行。
4.嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。

3.中断机制

系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用,都通过同一个中断入口来实现。

4.系统调用的类型

对于一般通用的OS而言,系统调用分为三大类:
1.进程控制类系统调用
主要用于对进程控制的系统调用有:
(1)创建和终止进程的系统调用。
(2)获得和设置进程属性的系统调用。进程的属性包括有进程标识符,进程优先级,最大允许执行时间等。
(3)等待某事件出现的系统调用。
2.文件操纵类系统调用
(1)创建和删除文件
(2)打开和关闭文件的系统调用
(3)读和写文件的系统调用
3.进程通信类系统调用
在单机处理系统中,OS经常采用消息传递方式和共享存储区方式。
当采用消息传递方式时,通信前需先打开一个连接。为此,应由源进程发出一条打开连接的系统调用,而目标进程则应利用接受连接的系统调用表示同意进行通信;然后,在源和目标进程之间便开始通信。可以利用发送消息的系统调用或者用接收消息的系统调用来交换信息。通信结束后,还须再利用关闭连接的系统调用结束通信。
用户在利用共享存储区进行通信之前,须先利用建立共享存储区的系统调用来建立一个共享存储区,再利用建立连接的系统调用将该共享存储区连接到进程自身的虚地址空间上,然后便可以利用读和写共享存储区的系统调用实现相互通信。

猜你喜欢

转载自blog.csdn.net/xiaomimi1993/article/details/81710623
今日推荐