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