我们可以进一步问另一个问题:为什么要在程序执行中引入“访管指令”呢?
我们知道,
用户程序只能在目态下运行,并且不能使用
特权指令。因而就存在这么一个问题:如果
用户程序想要启动外设,或者要完成在目态下无法完成的工作,该怎么办?要解决这一问题必须有三个条件:
(1)需要有一条指令,能使
处理机从
目态进入
管态,并向操作系统提交要代为完成的工作;
(3)操作系统完成所做工作后能返回到用户程序,即从
管态回到原来的
目态。
解决这个问题要靠访管指令。访管指令本身不是
特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
自愿性中断事件(软件中断)是正在运行的程序所期待的事件。这种事件是由于执行了一条访管指令而引起的,它表示正在运行的程序对操作系统有某种需求。一旦机器执行这一中断时,便自愿停止现行程序而转入访管
中断处理程序处理。例如,要求操作系统协助启动
外围设备工作。
所谓系统调用就是用户在程序中能用访管指令调用的由操作系统提供的子功能集合。其中每一个子功能称为一个系统调用命令。