operating-system - 操作系统权限级别与硬件权限级别

标签 operating-system cpu-architecture instruction-set

操作系统权限级别和底层硬件权限级别有什么区别?所有系统调用都会导致内核陷入陷阱吗?为什么系统调用会导致陷阱?是因为汇编代码中存在诸如 IN 之类的特权指令吗?

最佳答案

直接回答您的问题:

What is the difference between OS privilege levels and privilege levels of the underlying hardware?

硬件必须支持必须在代码级别强制执行的特权(即特权指令)。许多操作系统安全级别(即访问特定硬件设备的权限)不需要硬件支持来验证该特定功能,但它至少需要硬件支持来阻止代码访问设备。因此,简而言之,操作系统实现特权级别的能力取决于底层硬件,但两者不必相同。

Do all system calls cause a trap to the kernel? Why do system calls cause a trap? Is it because of privileged instructions such as IN in their assembly code?

这基本上是正确的。陷阱是非特权代码可以转换到特权级别的自然机制。例如,如果用户程序需要访问某些硬件,则 IN 和 OUT 具有特权,因此它必须“捕获”到内核,然后内核将执行所需的操作并返回。

关于operating-system - 操作系统权限级别与硬件权限级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221330/

相关文章:

multithreading - 彼得森的解决方案如何解决有界等待?

linux - page fault exception 抛出时,OS 是如何定位磁盘上还没有加载到内存中的内容的?

x86 - x86 cpu有什么样的地址指令?

assembly - 现代x86处理器中的指令融合是什么?

assembly - 页边界上的 pdp8 mri 指令

gcc - mtune 实际上是如何工作的?

c++ - 在 C++ 中,使用 std::min 或 if 分支来限制值是否更好?

linux - 我的意思是用户 ID 不能同时在两台不同的机器上进行身份验证。我怎样才能控制这个?我正在将 SQUID 与 Apache 服务器平台一起使用。?

operating-system - 神秘的 Fork() 调用输出?

linux - 如何更好地配置 linux/CPU 以运行大型软件 (NUMA)