系统调用的基本概念
07-22
操作系统在其核心中设置了一组用于实现各种系统功能的子程序(即过程),供应用程序调用。由于OS系统过程的特殊性,使应用程序不能采用一般的过程调用方式来调用这些过程,而是利用一种系统调用命令,去调用所需的系统过程。它与一般的过程调用有以下几个明显差别。
(1)运行在不同的状态。一般的过程调用,其调用程序和被调用程序都运行在相同的状态一系统态或用户态;而在系统调用中,调用程序通常运行在用户态,被调用程序运行在系统态。
(2)系统状态的转换。由于一般的过程调用并不涉及系统状态的转换,故可直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程。通常都是通过软中断机制,先由用户态转换为系统态,经内核分析后,才能转向相应的系统调用处理子程序。
(3)返回问题。在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最?优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。此?迹?枰?训饔媒?谭湃刖托鞫恿小?/p>
(4)嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。当然,每个系统对嵌套调用的深度都有一定的限制,通常深度不超过6。下图(a)所示为没有嵌套的系统调用,图8-8(b)所示为有嵌套的系统调用。