我知道操作系统提供的用于保护程序不访问其他程序内存的系统调用。但这只有在我使用了 OS 提供的系统调用库时才有帮助。如果我自己编写一个汇编代码,为内核模式设置 CPU 位并执行特权指令(假设修改操作系统在内存中的程序段)怎么办。操作系统可以防止这种情况吗?PS出于好奇的问题。如果可以提供任何好的博客或书籍参考,那将很有帮助,因为我想尽可能详细地研究操作系统。
问问题
188 次
2 回答
1
处理器通过 (1) 要求您处于提升模式(对于我们这里的示例,内核),再次保护这种恶意恶作剧;(2) 限制对内核模式的访问。
为了从用户模式进入内核模式,要么必须有中断(此处不适用)要么有异常。通常两者的处理方式相同,但有一些奇怪的处理器(有人说英特尔吗?)做事有点不同
操作系统异常和中断处理程序必须限制用户模式程序可以做什么。
如果我自己编写一个汇编代码,为内核模式设置 CPU 位并执行特权指令会怎样
您不能只在处理器状态寄存器中设置内核模式位来进入内核模式。
操作系统可以防止这种情况吗?
CPU 可以防止这种情况发生。
如果可以提供任何好的博客或书籍参考,那将很有帮助,因为我想尽可能详细地研究操作系统。
VAX/VMS Systems Internals 这本书很旧,但它很便宜,并且展示了一个真正的操作系统是如何实现的。
于 2016-12-11T01:25:58.493 回答
0
这个博客清楚地解释了我的困惑是什么。 http://minnie.tuhs.org/CompArch/Lectures/week05.html 尽管用户程序可以切换到内核模式,但他们必须通过中断指令(在 x86 的情况下为 int)来完成,对于这个中断,中断处理程序由操作系统编写。(可能在启动时处于内核模式时)。所以这种方式所有特权指令只能由操作系统代码执行。
于 2016-12-11T06:08:28.837 回答