问题标签 [usermode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
29 浏览

operating-system - 当一个主体为空的C程序执行时,它是否只涉及用户模式?

通常,当程序开始执行时,它从用户模式开始,然后根据代码的主体,如果需要进入内核/系统模式,并最终以合法退出的用户模式退出。但请考虑以下 C 程序prog1.c

我认为这个程序/进程只在用户模式下运行。特别是,我也认为这个程序/进程永远不会涉及任何内核模式。但想知道专家的意见。

谢谢,SS

0 投票
3 回答
911 浏览

io - I/O 等指令如何在用户模式下工作?

我很好奇,因为我正在阅读这本操作系统书籍,其中提到

“用户程序始终在用户模式下运行,它只允许指令的子集 [...]。通常,所有涉及 I/O 和内存保护的指令都不允许在用户模式下运行。为了从操作系统获取服务,用户程序必须进行系统调用,它会陷入内核并调用操作系统。”

如果在用户模式下通常不允许 I/O,但假设我有一个 C++ 或 Java 程序要求输入,或者让我们说任何程序中的搜索栏之类的其他东西。每当我选择搜索栏(意味着我会写一些东西)时,就会调用一条 TRAP 指令来调用操作系统(因为操作系统在内核中运行)以便能够访问 I/O,即键盘?我不确定我是否正确遵循或我做错了什么。

用户模式下不允许 I/O,但您在操作系统中为应用程序使用输入,甚至操作系统本身也有键盘命令。如果您可以使用键盘命令,则意味着操作系统随时准备好进行 I/O。然后是关于 I/O 指令在用户模式下被禁止的原始声明。

我很抱歉我的无知,但我对这些术语以及用户和内核之间的区别有点困惑。我知道操作系统在内核模式下运行,应用程序在操作系统中运行,所以最终应用程序确实可以访问 I/O。

0 投票
0 回答
399 浏览

linux - 如何启用用户外壳?

我正在检查用户权限

我想解锁帐户。

如何用usermod或以任何其他方式做到这一点?

0 投票
1 回答
513 浏览

c - 如何将可变大小数组从 Windows 内核驱动程序传递给用户模式进程?

我正在学习 Windows 内核编程,我想知道如何将字节数组从内核驱动程序传递到我的用户模式应用程序,内核驱动程序在哪里发起调用?

如果我要在用户模式进程中执行此操作(例如,从服务到 GUI 应用程序),我会使用命名管道或共享内存以及命名事件和命名互斥体进行同步。但是我不知道在内核驱动程序方面该做什么。

这是我的实际示例:我有一个内核回调函数,可以随时使用STRING调用。然后,我需要将其中的字符串传递给我当前正在运行的用户模式进程并发出警报。

0 投票
1 回答
397 浏览

arm - 使用 arm LDM 指令将数据传输到用户模式寄存器

我正在尝试使用 LDM 指令从 cortex-a5 芯片上的 svc 模式恢复用户模式寄存器。我参考了 LDM 指令的技术指南,语法是:

' ^ ' 如果指定(在用户或系统以外的模式下)表示将采取两种可能的特殊操作之一:

  • 数据被传输到用户模式寄存器而不是当前模式寄存器(在 Reglist 不包含 PC 的情况下)。
  • 如果 Reglist 确实包含 PC,则会发生正常的多寄存器传输,并将 SPSR 复制到 CPSR 中。这用于从异常处理程序返回。

这是汇编代码:

代码执行后,发生pre-fetch abort异常,下面是寄存器信息:

r1的值为0x600000d3,表示之前CPU处于SVC模式,r0的值为0x00000010,所以执行“movs pc, r3”后,CPU会进入用户态。CPSR[4:0]的值为0x10,表示CPU运行在用户态,因此CPU模式切换成功。{r7, r8} 的值是正确的,但是,{sp, lr} 是错误的。

谁能解释我的代码有什么问题?提前致谢。

0 投票
0 回答
355 浏览

gdb - RISCV 用户模式断点支持需要更多“硬件”来支持 GDB

刚刚阅读完 RISCV 规范,更具体地说是“第二卷:RISC-V 特权架构”,并对 GDB(或任何其他调试器)应该如何工作有疑问。

基本上有两种编译标准 GDB 的方法:基于硬件或基于操作系统。

一个区别是“单步指令”(si 命令) - 对于基于操作系统,它是通过在可能遵循的每个可能指令(下一个程序集)上放置软件断点(用“断点”汇编指令替换汇编指令)来实现的如果当前是条件分支,则可能是另一个指令)。这忽略了可能的中断、页面错误、操作系统请求……

对于基于硬件的 GDB,没有任何东西是隐藏的,因此无法使用软件“下一条指令断点”:可能存在中断或异常,然后 GDB 将在该处理程序的入口处停止。

如果 RISC-V 也应该支持“用户模式中断”,它将有同样的问题,在用户模式下执行“单个汇编指令步骤”可能不知道下一个要替换的汇编指令是什么,而 GDB 用户可能不想跳过/隐藏中断处理。

然后需要一些“硬件”支持来中断硬件周期计数器,有点像定时器的“实时寄存器及其比较值寄存器”。

0 投票
1 回答
27 浏览

tfs - 需要签署用户模式驱动程序但找不到匹配的交叉证书 - Windows 和 TFS 构建

我收到了用户模式 ​​USB 即插即用驱动程序的源代码和来自 Go Daddy 的证书,并被指示为源代码设置 TFS 构建并使驱动程序“签名”。从来没有这样做过,而且这里没有其他人这样做过,我一直在搜索互联网,特别是 Microsoft 页面,到目前为止,我发现的所有说明都与内核模式驱动程序有关。此页面至少提到“用户模式” - 一次。 为公开发布签署驱动程序 但是在提到必须签署内核模式和用户模式驱动程序之后,页面的其余部分将重点介绍如何签署内核模式驱动程序。所以我心想:“也许用户模式和内核模式的指令是一样的。” 因此,我尝试按照说明进行操作。

首先,我没有获得带有证书的私钥文件,但偶然发现我可以使用 certmgr 而不是使用 Pvk2Pfx 生成个人信息交换 (pfx) 证书。所以我现在有一个 pfx 证书,但是说明说我需要获得一个交叉证书。我按照说明进行操作,但找不到具有相同指纹的 Go Daddy 交叉证书。

当我在 certmgr 中查看根颁发机构证书时:颁发者:Go Daddy 根证书颁发机构 - G2 指纹:47 be ab c9 ....

但是当我按照说明获取交叉证书时,虽然我确实找到了 Go Daddy 的交叉证书,但没有一个匹配的指纹。

除非,我完全误解了,构建服务器需要交叉证书才能构建驱动程序包并对其进行签名。我错了吗?我一定是误会了什么。我哪里错了?

TIA,达尔文

0 投票
3 回答
394 浏览

unix - 用户模式和内核模式:不同的程序同时进行

是否有可能一个进程同时在内核模式下运行而另一个在用户模式下运行?

我知道,这不是编码问题,但如果有人知道答案,请指导我。

0 投票
1 回答
280 浏览

windbg - Windbg:USER模式转储,windows事件是否设置

我正在尝试调试转储,我的 USER 模式 STOPPED_PENDING 服务,只是检查服务停止事件“MySvcStopEvent”是否设置,我得到事件句柄,试图转储句柄详细信息,

无法弄清楚是否设置了事件?

0 投票
0 回答
383 浏览

c - 如何从内核空间重定向命令的标准输出

我需要使用 linux 用户模式帮助器 api 重定向从内核空间调用的命令的标准输出。下面以“echo”命令为例。这不起作用。

我需要运行的命令不支持将文件名作为输入参数直接将输出写入文件的方法,因此我需要这样做。