访管指令与访管中断


访管指令与访管中断

文章插图
访管指令是一条可以在用户态(又称目态)下执行的指令 。在用户程序中,因要求操作系统提供服务而有意识地使用访管中断,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断 。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务 。
为什么要在操作系统中引入访管指令呢?这是因为用户程序只能在用户态(目态)下运行,如果用户程序想要完成在用户态下无法完成的工作,该怎么办?解决这个问题要靠访管指令 。访管指令本身不是特权指令 ,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断 。
当处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序 。完成服务功能后,退出中断,返回到用户程序断点继续执行 。
注:访管指令是非特权指令,是程序员主动获得使用特权指令的手段 。
用户态 = 目态
和心态 = 管态
【访管指令与访管中断】从程序调用的角度来看,用户应用程序中要调用一些子程序 。子程序可以分为用户自己编写的子程序和软件提供的子程序,对后者的访问即被称为访问系统程序(访管)指令,又称为陷阱(TRAP)指令 。
访管指令并不是特权指令 。所谓特权指令,是指用于操作系统或其他系统软件的指令,一般不提供给用户使用 。
特权指令这得从CPU指令系统(用于控制CPU完成各种功能的命令)的特权级别说起 。在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃 。比如:清内存、设置时钟等 。如果所有的程序都能使用这些指令,那么你的系统一天死机n回就不足为奇了 。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令 。形象地说,特权指令就是那些儿童不宜的东东,而非特权指令则是老少皆宜 。
系统调用命令
系统调用是用户程序请求操作系统为其服务的惟一形式,在UNIX中把系统调用称为程序员接口 。UNIX规定用户程序用捕俘(trap)指令请求系统服务,UNIX核心中的中断捕俘程序根据trap的类型转向相应的处理程序访管指令访管指令是一条可以在目态下执行的指令,用户程序中凡是要调用操作系统功能时就安排一条访管指令 。6