访管指令是一条可以在用户态(又称目态)下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管中断,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
为什么要在操作系统中引入访管指令呢?这是因为用户程序只能在用户态(目态)下运行,如果用户程序想要完成在用户态下无法完成的工作,该怎么办?解决这个问题要靠访管指令。 访管指令本身不是特权指令 ,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
当处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。
注:访管指令是非特权指令,是程序员主动获得使用特权指令的手段。
用户态 = 目态
和心态 = 管态
“访管指令”是可以在目态下执行的指令。当源程序中有需要操作系统服务的要求时,编译程序就会在由源程序转换成的目标程序中安排一条“访管指令”并设置一些参数。当目标程序执行时,中央处理器若取到了“访管指令”就产生一个中断事件,中断装置就会把中央处理器转换成管态,并让操作系统处理该中断事件。操作系统分析访管指令中的参数,然后让相应的“系统调用”子程序为用户服务。系统调用功能完成后,操作系统把中央处理器的管态改为目态,并返回到用户程序。