- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在学习有关 Windows 驱动程序开发的基础知识,我一直在寻找术语 Ring 0 和 Ring 3。这些是指什么?它们与内核模式和用户模式相同吗?
最佳答案
Linux x86 环使用概述
了解环在 Linux 中的使用方式将使您对它们的设计目的有一个很好的了解。
在 x86 保护模式下,CPU 始终处于 4 个环之一。 Linux内核只使用0和3:
Privl
对环进行编码。CS = 0
表示 GDT 的第一个条目当前对于正在执行的代码是事件的。in
和 out
等IO指令,因此具有任意的硬件访问权限。int 0x80
or syscall
来向内核发出信号。 x86-64 Linux 系统调用 hello world 示例:.data
hello_world:
.ascii "hello world\n"
hello_world_len = . - hello_world
.text
.global _start
_start:
/* write */
mov $1, %rax
mov $1, %rdi
mov $hello_world, %rsi
mov $hello_world_len, %rdx
syscall
/* exit */
mov $60, %rax
mov $0, %rdi
syscall
编译并运行:
as -o hello_world.o hello_world.S
ld -o hello_world.out hello_world.o
./hello_world.out
GitHub upstream。
exec
时(或内核 will start /init
时),内核 prepares the registers and memory 切换到新用户态进程的入口点,然后ring3svc
指令(SuperVisor Call)输入,以前称为 swi
before unified assembly ,这是用于进行 Linux 系统调用的指令。 Hello world ARMv8 示例:.text
.global _start
_start:
/* write */
mov x0, 1
ldr x1, =msg
ldr x2, =len
mov x8, 64
svc 0
/* exit */
mov x0, 0
mov x8, 93
svc 0
msg:
.ascii "hello syscall v8\n"
len = . - msg
GitHub upstream。sudo apt-get install qemu-user gcc-arm-linux-gnueabihf
arm-linux-gnueabihf-as -o hello.o hello.S
arm-linux-gnueabihf-ld -o hello hello.o
qemu-arm hello
这是一个具体的裸机示例 registers an SVC handler and does an SVC call 。hvc
指令(HyperVisor 调用)输入。smc
指令输入(安全模式调用)E2H
of register HCR_EL2
等于 1 时,则启用了 VHE,并且:
HCR_EL2.TGE == 1
时,我们是一个普通的主机用户程序。使用 sudo
可以像往常一样破坏主机。 HCR_EL2.TGE == 0
我们是 guest 操作系统时(例如,当你 run an Ubuntu OS inside QEMU KVM inside the host Ubuntu 。做 sudo
不能破坏主机的错误,除非有/41231412314123141413232314123231432123223123231431223123231412223181812222101818121223123231224181812122221812122241222181812213341142MRS
指令查询:what is the current execution mode/exception level, etc?An implementation might not include all of the Exception levels. All implementations must include EL0 and EL1.EL2 and EL3 are optional.
关于operating-system - 在操作系统的上下文中,Ring 0 和 Ring 3 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18717016/
我想知道 dpdk 是如何绕过内核的。用户空间应用程序如何访问 NIC 空间。 dpdk访问网卡用什么工具?我知道,dpdk 使用 uio_pci_generic 或 igb_uio 或 vfio-p
我一直在学习有关 Windows 驱动程序开发的基础知识,我一直在寻找术语 Ring 0 和 Ring 3。这些是指什么?它们与内核模式和用户模式相同吗? 最佳答案 Linux x86 环使用概述 了
我被引导相信 Pedestal 是 Ring 的替代品,但是从所有示例中我看到 Pedestal 实际上使用了 Ring。这是最令人困惑的!我是否需要了解并了解 Ring 的工作原理才能有效使用 Pe
我复制了一些在 compojure 1.1.18 和其他旧库中工作的旧代码,但使用最新版本我无法让它工作。 这是我的 minimal example code复制自 the minimal examp
为什么 golang 中的列表/环类型为单个项目使用额外的结构 Element/Ring 而不是 interface{} ?我假设有一些好处,但我看不到。 编辑:我的意思是询问 api,而不是关于在实
FileNotFoundException Could not locate ring/util/request__init.class or ring/util/request.clj on cla
使用 Ring 的 Jetty 适配器,如果我的请求太大,我会收到 413: FULL HEAD 错误。我将它追踪到一个名为 headerbuffersize 的属性,但是当我尝试在 run-jett
上下文 我刚刚得到http://blog.jayfields.com/2011/02/clojure-web-socket-introduction.html工作。 我还可以使用ring + comp
我正在尝试创建文本文件的精确副本,并且我正在使用循环缓冲区。 我使用的写入方法是: void addItem(CircularBuffer *cBuff, BufferItem *cbItem) {
void sema_down (struct semaphore *sema) { old_level = intr_disable (); while (sema->value == 0)
我的问题是,如果已经读取了 Ring 请求的正文,我该如何惯用地读取它? 这是背景。我正在为 Ring 应用程序编写一个错误处理程序。当发生错误时,我想记录错误,包括重现和修复错误可能需要的所有相关信
我正在制作一个 Messenger 机器人,并使用 Ring 作为我的 http 框架。 有时我想在机器人发送的消息之间应用延迟。我的期望是使用 Thread/sleep 是安全的,因为这将使事件线程
我在 Emacs 中有以下代码可以删除突出显示区域中的换行符: (defun remove-newlines-in-region () "Removes all newlines in the r
我是 Ring(以及一般的 Clojure 服务器端编程)新手。我有一个基于 Ring 的应用程序,在“开发模式”下运行良好,即它可以监听 localhost:3000 并做出适当的响应。作为部署此应
如何生成监听给定端口的独立环 uberjar ? 开发时,我使用以下 leiningen/ring 命令启动我的应用程序,我可以在其中指定端口: lein with-profile dev ring
我在 Emacs 中有以下代码可以删除突出显示区域中的换行符: (defun remove-newlines-in-region () "Removes all newlines in the r
我有一个任务 - 电话响起时立即更改铃声音量。例如:检测到有来电后,我需要将铃声音量设置为 0(静音),并且还应禁用振动器(如果尚未禁用)。然后当我需要执行另一个代码时会有延迟(startComput
我需要创建带间隙的圆形。 我正在创建一个代表时钟的进度条。 12 个间隙,每个间隙分配给小时数。 这正是我想要实现的目标。 (死星上的外环) 到目前为止,这是我的代码: 在activity.xml
我已经定义了一个简单的环形可绘制对象,将其用作按钮背景。这是我的做法: /> 我在相对布局中使用它,如: round_button 是我定义圆环的 xm
根据这个相关问题(Boost Polygon Serialization)。我正在尝试使用 Boost 序列化多边形。我现在遇到的问题是,我正在尝试使用自定义 X、Y、点的多边形来编译示例,但编译器在
我是一名优秀的程序员,十分优秀!