Windows如何实现用户模式/内核模式?

问题描述:

从程序的角度来看,该怎么做?Windows如何实现用户模式/内核模式?

它如何避免用户模式程序加载内核模块并调用其功能?

+0

这是一个超级宽泛的问题。这本书会有你的答案:http://technet.microsoft.com/en-us/sysinternals/bb963901或者试着在你的问题上更具体一点? – 2011-04-27 16:30:35

Virtual memory.

特权进程根本无法达到的内核数据结构和代码,因为没有相应的页表项。 CPU可以防止非特权进程交换页表。

+1

它如何知道进程是否有特权?这必须通过某种标志来完成,但操作系统如何确保进程不会伪造标志本身? – kern 2011-05-01 04:54:32

+0

@kern:进程是无特权的。操作系统在切换到用户模式任务时设置了CPU中的标志位,并且更改这些标志位需要特权指令,它由CPU本身强制执行。这些标志位未被设置的方式是在中断服务程序期间。例如,任务计划程序在计时器ISR中运行,因此它具有特权,并且可以更新页面表以匹配即将开始运行的进程。 ISR完成后,标志再次被设置为无特权。 – 2011-05-01 13:09:11

+0

除了安装定时器ISR和系统调用处理程序的引导过程早期以外,每个特权例程都可以通过中断(硬件中断或软件中断(syscall))来实现。只有特权例程才能安装中断处理程序。 – 2011-05-01 13:11:09

阅读关于保护

硬件视图 的环: 1)是在作为不同的(比如说0 =内核,1 =用户)的控制寄存器中的位。 2)硬件访问设备通常在用户模式下不可用。 3)某些指令仅在内核模式下可用。 4)只能在内核模式下修改页表。 5)中断控制器只能在内核模式下修改。 6)其他硬件控制寄存器(如系统时间,定时器控制等)仅在内核模式下可用 。 7)内核内存在用户模式下不可用。

抄自cs162 p套