这个答案指出Python中类的命名不是由于特殊特权而完成的,here https://stackoverflow.com/questions/5602439/reasons-behind-naming-in-easy-to-confuse-pythons-classes-such-as-os-and-sys/5602549#5602549让我困惑。
- 如何在Python中访问下环?
- 低层io是用来访问低层环的吗?
- 如果是,我可以使用哪些戒指?
- 是声明
"This function is intended for low-level I/O."
指的是较低级别的戒指还是其他东西?
- C 往往是操作系统编程中的重要语言。当Python中有OS类时,是否意味着我可以通过该类访问C代码?
- 假设我正在使用奇怪的机器语言代码,并且我想以某种方式理解它的含义。 Python 中有一些工具可以用来分析这些东西吗?如果没有,我是否仍然可以使用Python来控制某些控制奇怪机器语言的工具? [评论中建议的ctypes]
- 如果Python与低级特权无关,它是否还提供一些包装器来控制特权?
Windows和Linux都使用ring 0作为内核代码,使用ring 3作为用户进程。这样做的好处是用户进程可以相互隔离,因此即使某个进程崩溃,系统仍能继续运行。相比之下,ring 0 代码中的错误可能会导致整个机器崩溃。
中的一个reasonsRing 0 代码非常关键,因为它可以直接访问硬件。相比之下,当用户模式(环 3)进程需要从磁盘读取一些数据时:
- 该进程执行一条特殊指令,告诉CPU它想要进行系统调用
- CPU切换到ring 0并开始执行内核代码
- 内核检查是否允许该进程执行该操作
- 如果允许,则执行操作
- 内核告诉CPU它已经完成
- CPU切换回环3并将控制权返回给进程
属于“特权”用户(例如 root/管理员)的进程在环 3 中运行,就像任何其他用户模式代码一样;唯一的区别是第 3 步的检查总是成功。这是一件好事,因为:
- root 拥有的进程可能会崩溃,而不会导致整个系统崩溃
- 许多用户模式功能在内核中不可用,例如可交换内存、私有地址空间
至于在较低的环中运行 Python 代码 - 内核模式是一个非常不同的环境,并且 Python 解释器根本不适合在其中运行,例如分配内存的过程是完全不同.
在您提到的另一个问题中,两者os.open()
and open()
最终使open() http://linux.die.net/man/2/open系统调用,检查是否允许进程打开相应的文件并执行实际操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)