【问题标题】:How does windows implement user mode /kernel mode?windows如何实现用户模式/内核模式?
【发布时间】:2011-04-27 16:04:31
【问题描述】:

从程序方面来说,是怎么做的?

如何避免用户态程序加载内核模块并调用其函数?

【问题讨论】:

标签: windows kernel


【解决方案1】:

Virtual memory.

非特权进程根本无法访问内核数据结构和代码,因为没有相应的页表条目。并且 CPU 会阻止非特权进程交换页表。

【讨论】:

  • 它如何知道进程是否具有特权?这必须通过某种标志来完成,但是操作系统如何确保进程不会伪造标志本身?
  • @kern:进程没有特权。当切换到用户模式任务时,操作系统会在 CPU 中设置一些标志位,更改这些标志位需要特权指令,它是由 CPU 本身强制执行的。这些标志位未设置的方式是在中断服务程序期间。例如,任务调度程序运行在定时器 ISR 中,因此它具有特权并且可以更新页表以匹配即将开始运行的进程。当 ISR 完成时,这些标志再次设置为非特权。
  • 每个特权例程都通过中断到达,无论是硬件中断还是软件中断(系统调用),除了在启动过程的早期安装定时器 ISR 和系统调用处理程序时。而且只有特权例程可以安装中断处理程序。
【解决方案2】:

了解保护之戒

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

复制自 cs162 p 集

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2013-10-04
    • 2012-04-15
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多