kernel - 用户程序的内核模式
问题描述
我知道内核模式是一种特权,因此在内核模式下,所有硬件功能和指令集中的所有指令都可用。我也知道,当我们进行过程调用(比如 read())时,它又会进行系统调用。但在此之前它会陷入内核模式。我想知道如果每个用户程序都可以在内核模式下运行,因为所有过程调用和系统调用都对用户程序可用,那么内核模式将有什么用处。
解决方案
操作系统的硬件、文件和其他安全关键部分的问题在于,它们只能以正确的方式操作,否则操作系统会被损坏(或发生其他坏事)。
如果没有内核-用户分离,应用程序本身会提供与操作系统关键部分一起使用的代码。此代码可以是任何. 因此,格式错误的应用程序可能会损坏操作系统。
在内核-用户分离的情况下,应用程序接触硬件的唯一方法是系统调用。这允许仅运行与操作系统的安全关键部分一起使用的有限代码。应用程序无法修改该代码。
因此,在正确编写处理系统调用的代码后,操作系统可以保护其关键部分免受格式错误的应用程序的影响。
推荐阅读
- r - R:将字符串“成对”拆分为可变数量的元素
- promise - 在 ReasonML 中从 Js.Promise 转换为 `reason-promise`
- r - 如何根据另一个向量的值改变一个向量的值?
- python - 使用 Tkinter 按钮命令
- javascript - 本地存储/复选框/不显示值
- angular - 单击表格单元格时,更改为选择框
- javascript - Phaser 3 循环依赖问题
- typescript - `as const` 替代缩小数组文字元组,以避免 `readonly` 修饰符
- rust - 没有代码重复的单个测试中的多次恐慌
- php - 嵌套的 foreach 循环不拆分 Laravel 中的集合数据