这个回答,说明Python中类的命名不是因为特权,here让我困惑。
- 如何在 Python 中访问较低的环?
- 是用于访问较低级别环的低级别 io 吗?
- 如果是,我可以用它访问哪些戒指?
- 语句
“此函数用于低级 I/O。”是指低级环还是其他东西? - C 往往是操作系统编程中的主要语言。当 Python 中有 OS 类时,是否意味着我可以通过该类访问 C 代码?
- 假设我正在玩奇怪的机器语言代码,我想以某种方式理解它的含义。 Python 中是否有一些工具可以用来分析这些东西?如果没有,有没有什么方法可以让我仍然使用 Python 来控制一些控制奇怪机器语言的工具? [评论中建议的 ctypes]
- 如果 Python 与低级特权的东西无关,它是否仍然提供一些包装器来控制特权?
请您参考如下方法:
Windows 和 Linux 都将 ring 0 用于内核代码,将 ring 3 用于用户进程。这样做的好处是用户进程可以相互隔离,即使一个进程崩溃了,系统也能继续运行。相比之下,ring 0 代码中的错误可能会导致整个机器崩溃。
环 0 代码如此重要的原因之一是它可以直接访问硬件。相比之下,当用户模式(ring 3)进程需要从磁盘读取一些数据时:
- 进程执行一条特殊指令告诉CPU它要进行系统调用
- CPU切换到ring 0并开始执行内核代码
- 内核检查进程是否被允许执行操作
- 如果允许,则执行操作
- 内核告诉 CPU 它已经完成
- CPU 切换回 ring 3 并将控制权交还给进程
属于“特权”用户(例如 root/Administrator)的进程在 ring 3 中运行,就像任何其他用户模式代码一样;唯一的区别是第 3 步的检查总是成功的。这是一件好事,因为:
- root 拥有的进程可以在不关闭整个系统的情况下崩溃
- 许多用户模式功能在内核中不可用,例如可交换内存,私有(private)地址空间
至于在较低环中运行 Python 代码——内核模式是一个非常不同的环境,Python 解释器根本不是为在其中运行而设计的,例如分配内存的过程完全不同。
在您引用的另一个问题中,os.open() 和 open() 最终都会生成 open()系统调用,检查是否允许进程打开相应文件并执行实际操作。
