强制C程序在内核模式下运行一段时间

问题描述 投票:0回答:2

我想在进程处于内核模式时测试一些东西。完全处于内核模式的 10-15 秒时间应该足够了。

有没有办法强制用C编写的程序在内核模式下运行一段时间?对巨大缓冲区进行单个

read
系统调用可以吗?

c linux-kernel operating-system kernel
2个回答
0
投票

没有办法强制正在运行的程序在内核模式下运行。 在内核模式下有更多可用权限。这意味着 程序可以执行它无法执行的特殊指令 用户模式。 显然,据我所知,没有办法强制用户模式下的程序 切换到内核模式,因为它会损害安全性:想象一下, 每个进程都可以切换到用户模式,恶意 代码可能会通过更改页表、更改 CPU 设置、关闭中断等导致灾难。

“切换”到内核模式的唯一有效方法是执行系统调用。 这将导致内核陷入陷阱,并且在执行一些内核代码后 控制权将返回给用户代码。然而,我认为这不是你所想的 问过。


0
投票

在内核模式下运行常规用户程序的一个选项是Kernel-Mode-Linux。从该链接:

内核模式 Linux是一项使我们能够在内核模式下执行用户程序的技术。在内核模式Linux中,用户程序可以作为具有内核模式特权级别的用户进程来执行。在内核模式下执行用户程序的好处是用户程序可以直接访问内核地址空间。因此,例如,用户程序可以非常快速地调用系统调用,因为不需要通过使用昂贵的软件中断或上下文切换来在内核模式和用户模式之间切换。与内核模块不同,用户程序作为普通进程执行(除了其特权级别),因此调度和分页照常执行。

© www.soinside.com 2019 - 2024. All rights reserved.