首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux模块/驱动程序属于内核空间还是用户空间?

问linux模块/驱动程序属于内核空间还是用户空间?
EN

Unix & Linux用户
提问于 2013-04-22 15:00:30
回答 3查看 1.9K关注 0票数 3

一些文章说模块/驱动程序属于内核空间,因为它参与了内核的形成;(参考文献:http://www.freesoftwaremagazine.com/articles/drivers_linux)

而其他人则表示,只有Ring0(与硬件直接交互)才能被称为内核空间(排除模块/驱动程序,就像它们在Ring2上那样)。(参考:http://jaseywang.me/2011/01/04/vfs-kernel-space-user-space-2/)

有人能告诉我哪种观点是正确的吗?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2013-04-22 16:27:17

在AMD64和克隆,以及ix86上,Linux只使用了ring 0和3,其他普通的体系结构都没有“环”,所以完全使用它们是完全不可移植的。此外,Linux是一体式的。整个环的想法是能够在环0上运行微内核,让服务进程在更高的环上运行,这样它们就不会搞乱微内核,最后在最高的环上运行用户空间,这样就不会造成太大的破坏。

票数 4
EN

Unix & Linux用户

发布于 2013-04-22 15:12:42

你能提供一个推荐信吗?我假设您在谈论Linux,据我所知,Linux只使用Rings 0(内核)和3(用户)。

编辑:

我认为这取决于操作系统的设计。您可以使用内部环,比如说,微内核体系结构。您是在询问特定的系统(例如Linux)吗?我相信只有在特定的操作系统中才有可能回答这个问题。然而,在大多数情况下,基于x86的OSes只使用“内核”(0)和“用户”(3)。

票数 1
EN

Unix & Linux用户

发布于 2016-07-12 16:02:01

对于常规操作系统(不是在虚拟化下运行),内核空间和ring0在特权方面是同义词。然而,我必须分别解释它们,以突出它们所存在的差异,以及它们的共性。

Kernel space - OS通常有两种执行模式:内核空间和用户空间。内核空间是操作系统的特权代码,如调度程序、设备驱动程序等。它的任务是管理整个系统,并确保它以稳定的方式运行。用户空间包含使用内核空间提供的功能的进程,如web浏览器等。

Rings -英特尔处理器有4种特权级别的操作.这些叫做戒指。环0是最有特权的,而第3环是最少的。计算机内存的任何区域都可以用这些级别来标记。如果内存区域被ring0标记为访问,那么只有驻留在ring0中的代码才能访问它,所有环都可以访问标记为ring3访问的内存区域。这提供了一种机制,以确保如果在较低权限级别(较高环)运行较少信任的代码,在较高权限级别(较低环)运行更多可信代码,则前者无法影响后者。可以以编程方式设置哪个环(特权级别)的代码。

为了简化设计,并使代码可移植(像ARM这样的非英特尔CPU没有四环架构),大多数操作系统只使用4个环中的两个。它们通常是ring0和ring3。内核在ring0中运行,并构成内核空间(注意,如果明天OS开发人员让内核在ring1中运行,而不是ring0,那么ring1将构成内核空间)。应用程序运行在ring3中,构成用户空间。

这是大多数操作系统遵循的惯例。但是,如果我是OS开发人员,我可以自由地以任何我想要的方式使用圆环架构。考虑以下情况:

(KS=Kernel空间、US=User空间、DD=Device驱动程序或内核模块、rX=环X)

  1. r0中的KS,r3中的US -最常用。例如:Linux、Windows等。
  2. 在r1中使用KS,在r3中使用US -虚拟化设置,其中虚拟机管理程序在ring0中运行.
  3. 在r0中使用KS,在r1中使用DD,在r3中使用US -一些研究项目使用这种配置来保护内核不受错误设备驱动程序的影响。
  4. r0中的KS,r3中的DD,r3中的US -微内核使用这种配置。
  5. r0中的KS,r0中的美国--所有东西都在同一个戒指上。一些研究操作系统,如微软的奇点使用这种配置。使用其他机制保护KS不受我们的影响。(较早的操作系统,如MS DOS、Windows 98等使用了此功能。KS没有受到美国的保护,因此操作系统经常崩溃。)
  6. r3中的KS,r0中的美国-荒谬。给予我们更多的特权,将允许我们腐败KS。从未见过这样的配置,但如果我想编写这样的操作系统,没有什么能阻止我这样做。

注意:我在编写时做了很少的简化,比如将x86体系结构称为Intel。现在不要费心于复杂的事情。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/73298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档