kernel相关内容

如何解决cpufreqset错误

我想更改CPU频率。我已经安装了cpufurtils。 命令“cpufreq-info”为我提供信息 cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: drive ..
发布时间:2022-08-07 22:54:11 其他开发

为什么QEMU在填写PML4的上半部分时返回错误的地址?

我正在编写一个使用UEFI引导的小型x86-64操作系统。我试图通过将内核的可执行文件移到0x800000000000来使内核成为更高的半内核。此地址应该在PML4的中间。基本上,我应该填写PML4的第256项来处理这较高的一半。我试图这样做,但我的代码出现了三重错误。由于我在QEMU上测试内核并使用gdb进行调试,因此我在gdb中使用monitor info mem来查看虚拟地址到物理地址的映射 ..
发布时间:2022-08-02 23:14:07 其他开发

有没有办法在没有底层操作系统的情况下驱动当今的计算机网卡?

我想写一个IO密集型应用程序,没有底层操作系统,运行在x86体系结构上,并驱动任何现代网络接口控制器。 通过查看Linux的驱动程序源代码,我知道驱动Intel e1000e千兆控制器需要数千行代码。我认为这样的代码很难从Linux源代码中提取出来。 您知道有什么解决方案/项目提供驱动当今计算机(包括其网卡)的方法,可能是通过包装Linux驱动程序吗? 非常感谢 推荐答案 ..
发布时间:2022-07-02 15:16:38 服务器开发

内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间有什么不同

让我把我的理解。 假设我们有一个系统的32位内存地址空间。因此进程可以访问4 GB范围内的任何内存 如果我们系统中的RAM为4 GB,则内核将其分为1:3。1 GB用于内核,其余3 GB用于用户空间进程。 用户空间进程只能访问该3 GB内存中的系统内存,并且它获得的地址由页表确定。 内核逻辑地址是仅为内核保留的1 GB(大约896MB)内存。这样做正确吗? 内核虚拟地 ..

如何区分内核中的软锁定和用户空间中的软锁定?

我有下面的禁闭室。这是否表明SLEC_TEST PID5207是攻击者,或者只是因为内核中的当前宏仍然指向使系统调用我的驱动程序的用户空间进程?此外-IRQ事件戳0...IRQ事件戳到底代表什么?这不可能是自启动以来的中断次数...88798秒后肯定超过了0... 系统是单处理器,已禁用CONFIG_SMP。 [88798.449628] BUG: soft lockup - CPU# ..
发布时间:2022-04-05 09:13:21 服务器开发

是否在引导时将CPU频率指定为Linux的内核CMD_LINE参数?

我将笔记本电脑的i5CPU换成了i7CPU,这样它就可以运行得更快。 但是因为i7的功率更大了,温度也比以前高了,所以我的笔记本电脑经常死机。所以,我使用cpupower来指定CPU的最高频率,它是有效的。 现在,我的问题是“有没有办法在引导时将CPU频率指定为Linux内核的cmd_line参数?”,这样我就可以确保系统稳定而正确地引导了。 顺便说一句,如果新的CPU运行在2.5 GHz的最高 ..
发布时间:2022-02-26 10:57:41 服务器开发

如何从外部模块导出符号?

我在内核源代码树之外编码。有两个模块,第一个模块printt有一个函数printtty()将字符串打印到当前tty,第二个模块hello在初始化时调用printtty()。 我在printt模块中添加了EXPORT_SYMBOL(printtty),insmod ./printt.ko之后printtty()的信息可以在/proc/kallsyms中看到。 模块hello的make进程 ..
发布时间:2022-02-26 10:56:36 服务器开发

内核高内存

在操作系统设计中,内核通常映射到较高的虚拟内存地址,从而获得对较高内存部分的控制。下面的空间是给在用户空间运行的应用程序的,Linux 3/1 virtual address split中很好地描述了这一点。 我想知道的是,为什么做出这个设计决定,或者为什么内核不使用内存的较低部分?这对我来说不是很清楚,或者可能是我监督了什么。 编辑:此问题涉及虚拟地址,而不是物理地址。 推荐答 ..
发布时间:2022-02-26 10:55:21 其他开发

识别Unix域套接字连接另一端

我正在尝试找出哪个进程持有Unix域套接字的另一端。在一些strace输出中,我确定了一个给定的文件描述符,该文件描述符与我当前正在调试的问题有关,我想知道哪个进程在问题的另一端。由于该套接字有多个连接,因此简单地使用路径名是行不通的。 lsof为我提供以下信息: dbus-daem 4175 mvg 10u unix 0xffff8803e256d9c0 0t0 ..
发布时间:2022-02-26 10:52:11 服务器开发

内核源代码项目的include/uapi中有什么内容

有人能给我一份文档来描述内核源文件夹的结构、功能和组织方式吗? 具体地说,文件夹include/uapi/**有什么用? 谢谢。 api uapi文件夹应该包含内核的用户空间推荐答案。然后,在内核安装时,uapi include文件成为顶级/usr/include/linux/files。(我不完全清楚还有哪些例外情况。) 理论上,其他标头则是内核私有的。这允许将以前混合 ..
发布时间:2022-02-26 10:48:33 其他开发

使用GCC编译时,函数和变量前面是否会有&;_&;?

我正在学习使用GCC在linux环境下开发操作系统。我从Bran的内核开发中了解到,在编译C中的所有函数和变量名时,其相应的汇编源文件中的前面都有一个“_”(下划线)。 但是当我翻阅编译后的C程序的汇编源程序时,我甚至找不到“_main”函数。 我执行了以下操作。 cpp sample.c sample.i GCC-S样本I. 推荐答案 早期确实如此。给定的C函数foo将在 ..
发布时间:2022-02-23 19:50:46 其他开发

本地主机上 UDP 的可靠性

我知道 UDP 本质上是不可靠的,但是当连接到 localhost 时,我希望内核以不同的方式处理连接,因为一切都可以在内部处理.那么在这种特殊情况下,UDP 是否被认为是一种可靠的协议,或者如果缓冲区溢出,内核仍然可能会丢弃一些数据包? 解决方案 我重复一个 相关问题的上一个答案.为了保持便携性,请始终预计您的 UDP 套接字可能会丢弃数据包或接收乱序数据. ..
发布时间:2022-01-22 16:49:42 其他开发

每个进程是否存在内核堆栈?

每个用户空间进程是否存在内核堆栈和用户空间堆栈?如果两个堆栈都存在,那么每个用户空间进程应该有 2 个堆栈指针,对吧? 解决方案 在 Linux 中,每个任务(用户空间或内核线程)都有一个 8kb 或 4kb 的内核堆栈,具体取决于内核配置.确实有单独的堆栈指针,但是,在任何给定时间,CPU 中都只有一个;如果用户空间代码正在运行,则用于异常或中断的内核堆栈指针由任务状态段指定,如果内核代 ..
发布时间:2022-01-22 12:57:18 服务器开发

内核栈和用户栈有什么区别?

在同一个程序中使用两个不同的堆栈有什么需要?Trap 如何将当前程序栈从用户栈变为内核栈?完成系统调用后如何返回用户栈? 每个进程都有内核和用户栈吗? 解决方案 (基本上)有一个“内核栈".每个 CPU.存在一个“用户堆栈".对于每个进程,尽管每个线程都有自己的堆栈,包括用户线程和内核线程. “陷阱如何改变堆栈"其实很简单. CPU 因中断而改变进程或“模式".中断的发生 ..
发布时间:2022-01-22 12:47:01 其他开发

Linux 内核中的队列

我一直在寻找有关队列的通用内核实现的信息,即先进先出数据结构.我认为可能有一个,因为它可能是常用的东西,并且有一个链接列表的标准(以 list_head 结构的形式).是否有一些我找不到的标准队列实现,或者只是使用链表作为队列并希望最好的做法可能是常见的做法? 解决方案 没错,Linux内核通常使用链表来实现队列.这是有道理的,因为链表提供了所需的行为.请参阅 kernel/workque ..
发布时间:2022-01-21 12:19:16 服务器开发

如何对 Linux 内核进行反优化并使用 -O0 进行编译?

我想阅读和理解 Linux 内核的内存管理(尤其是碎片整理\压缩\迁移). 所以,我关闭了 .config 中的大小优化(当然是使用 make menuconfig)并编译...这让我仍然拥有一个优化的内核. 注意: 当我说优化内核时,我的意思是当我使用 gdb 并告诉它 next 它会跳来跳去.我不希望这样,我希望能够像处理简单的 hello world 一样逐行执行代码. 接 ..
发布时间:2022-01-20 20:11:52 服务器开发

在内核模块中发送 UDP 数据包

背景:我是 UCSB 计算机工程专业的四年级学生.我参加了网络和操作系统课程.我在用户空间中创建了一个程序,它将 UDP 数据包广播到子网并在自组织网络中接收 UDP 数据包.我想要完成的是将这个程序转换为一个内核模块,该模块将在带有 Angstrom Linux 的 ARM 嵌入式系统上运行,内核版本 2.6.39(x86 到 ARM 架构的交叉编译是另一天的问题).迁移到内核的原因是为了摆脱用 ..
发布时间:2022-01-19 16:31:34 其他开发

如何解释 ARM 的 SMC 调用?

我一直在阅读 Android 的内核,以了解 CPU 内核(又名 DVFS、DCVS)的动态电源管理是如何完成的.我找到的代码 here 对以下函数进行一些调用(定义 here) 依次调用 SMC 汇编指令. ARM 有一个文档解释了 SMC 调用约定,但我无法使用它来理解以下功能.如何进一步跟踪 SMC 指令,以根据其输入操作数查看它实际执行的操作? s32 scm_call_atomi ..
发布时间:2022-01-17 14:21:41 其他开发