nacho_java(1)——特权指令

来源:互联网 发布:淘宝app怎么收藏店铺 编辑:程序博客网 时间:2024/05/18 02:24
1、nachos
    操作系统的课程设计所选用的是伯克利分校的Nachos(java版本)的教学用途操作系统。Nchos作为一个教学用途的操作系统,采用虚拟技术,在java虚拟机上模拟一个真实的操作系统,从而让学生对真实的操作系统有一个更加深刻的体验。
在nachos启动的时候,整个初始化流程会进行硬件的模拟,其中让我最为苦恼,也是此次讲述的主题便是privilege。

2、privilege
在nachos的nachos.secrity中,有Privilege.java,与其在同一个包中的还有NachosSecrityManager.java,两个文档共同定义和实现了nachos的特权指令。
首先要明白何为特权指令,举例来说,如同存取特殊寄存器指令、程序状态字(PSW)的指令等,都是特权指令。
Nachos中的privilege是nachos的开发者自己参考java中的有关特权的操作,定义的一个抽象类,其中提供了大量的抽象方法和接口,以此来实现一些特权操作。
具体来说,一个privilege的对象应该实现的内容如下:
 (1)调度中断(interrupt)
 (2)推进模拟时间(processor)
 (3)访问计算机的统计时间(stats)
 (4)安装控制台(machine)
 (5)冲洗模拟处理器管道
 (6)批准TCB操作(tcb)
除此之外还有其它的一些特权操作,这里不再赘述,可以自行查看。

3、NachosSecrityManager
但是,一个Nachos的内核对象是永远也不能直接执行这些操作(特权的真正含义),必须通过NachosSecrityManager才可以。
现在,把重点转移到NachosSecrityManager中。
其实,NachosSecrityManager的作用就是保护nachos操作系统环境避免受到恶意nachos代码的攻击,这种保护其实就是允许或者禁止一个动作。
NachosSecrityManager继承自java的SecrityManager.java,在jdk文档中,对于SecrityManager的注释也明确说明,SecrityManager的作用是允许实现一个安全策略,即在执行一个可能不安全或者敏感的动作时,安全策略中的内容将决定这个动作能不能执行。
也即是说,在privilege中定义的特权指令,是在NachosSecrityManager.java中实现的,除此之外,其中还定义了一个内部类也与特权有关,具体内容可以查看nachos源代码。

现在,特权指令的声明和实现均已完成,调用特权指令则是AutoGrader.java的工作。代码如下:

到目前为止,已经将nachos的特权指令相关的内容进行了一个大概的梳理,接下来通过一个具体的例子更好的理解特权是如何发挥作用的。

4、例子——线程切换


当线程切换的时候,privilege就会将tcb绑定到将要执行的线程,从而实现线程的切换。

欢迎大家交流,谢谢。

0 0
原创粉丝点击