linux-kernel相关内容

Mac OS X 和 BSD 的关系有多密切?

我读到 Mac OS X 和 bsd 是相关的.他们的关系有多密切.可以在 BSD 上调整和安装 Mac OS X 软件吗? 解决方案 回到 OS X 10.4 的时代,我花了一些时间未能为 OS X 编写 VFS.在那些日子里,内核的主要子系统,只有网络堆栈和 VFS 仍然是真正的 BSD.当时,甚至 VFS 也被部分重写以使其更加模块化(所有 BSD VFS 数据结构都变成了不透明的指 ..
发布时间:2022-01-04 22:37:54 服务器开发

双指针在linux内核Hash列表实现中的使用

我正在尝试了解链表和哈希表的 Linux 内核实现.实现的链接是这里.我理解链表实现.但是我对为什么在 hlist (**pprev) 中使用双指针有点困惑.hlist 的链接是这里.我知道 hlist 用于哈希表的实现,因为列表的头部只需要一个指针,它节省了空间.为什么不能使用单指针来完成(就像链表一样 *prev)?请帮帮我. 解决方案 原因可以在评论之一中找到: 547/*548 ..
发布时间:2022-01-04 22:37:48 服务器开发

Qt Creator、ptrace:不允许操作.什么是永久解决方案?

在 Qt creator 中调试 C++ 代码时出现以下错误 ptrace:不允许操作.无法附加到进程.确保没有其他调试器跟踪此过程.检查设置/proc/sys/kernel/yama/ptrace_scope有关更多详细信息,请参阅/etc/sysctl.d/10-ptrace.conf 这里找到了一个临时解决方案:尝试调试时收到错误在 QtProject 中 临时解决方案(重启后无效 ..
发布时间:2022-01-04 22:37:39 C/C++开发

测量 NUMA(非统一内存访问).没有可观察到的不对称性.为什么?

我曾尝试测量 NUMA 的非对称内存访问效果,但失败了. 实验 在 Intel Xeon X5570 @ 2.93GHz、2 个 CPU、8 个内核上执行. 在固定到核心 0 的线程上,我使用 numa_alloc_local 在核心 0 的 NUMA 节点上分配了一个大小为 10,000,000 字节的数组 x.然后我遍历数组 x 50 次并读取和写入数组中的每个字节.测量执行 ..
发布时间:2022-01-04 22:37:34 服务器开发

Linux reboot() 系统调用的幻数

Linux 编程接口在第 3 章中有一个练习是这样的: 当使用 Linux 特定的 reboot()重新启动系统的系统调用,第二个参数,magic2,必须是指定为一组魔法之一数字(例如,LINUX_REBOOT_MAGIC2).这些有什么意义数字?(将它们转换为十六进制提供了线索.) 手册页告诉我们 magic2 可以是 LINUX_REBOOT_MAGIC2 (672274793)、 ..
发布时间:2022-01-04 22:37:24 服务器开发

什么是内存映射页和匿名页?

我无法理解 linux 中的内存映射页面和匿名页面.有人可以用一个例子来解释它吗?与它们相关的内核数据结构是什么? 解决方案 正确的术语是内存映射文件和匿名映射.当提到内存映射时,通常指的是 mmap(2).使用 mmap 有 2 个类别.一类是共享映射与私有映射.另一个类别是文件与匿名映射.混合在一起,您将获得以下 4 种组合: 私人文件映射 共享文件映射 私人匿名映射 共享 ..
发布时间:2022-01-04 22:37:17 服务器开发

linux 内核中的 schedule()+switch_to() 函数实际上是如何工作的?

我试图了解 linux 内核中的调度过程实际上是如何工作的.我的问题不是关于调度算法.它是关于函数 schedule() 和 switch_to() 是如何工作的. 我会试着解释一下.我看到了: 当进程用完时间片时,标志 need_resched 由 scheduler_tick() 设置.内核检查标志,看到它已设置,并调用 schedule()(与问题 1 相关)切换到新进程.这个标 ..
发布时间:2022-01-04 22:37:07 其他开发

spin_lock_irqsave 与 spin_lock_irq

在 SMP 机器上,我们必须使用中断上下文中的 spin_lock_irqsave 而不是 spin_lock_irq. 为什么我们要保存标志(包含 IF)? 还有其他中断例程可以打断我们吗? 解决方案 如果在您的代码开始锁定之前已经禁用了中断,则当您调用 spin_unlock_irq 时,您将在可能不需要的情况下强制重新启用中断方式.相反,如果您还通过 spin_lock_ ..
发布时间:2022-01-04 22:37:00 其他开发

配置ARP年龄超时

我正在尝试配置 ARP 年龄超时.我想我应该将 /proc/sys/net/ipv4/neigh/default/base_reachable_time_ms 设置为所需的超时时间.但是,尽管我将其设置为 30000 毫秒(30 秒),但仍需要将近 10 分钟的时间才能将条目从 ARP 缓存中删除.在阅读了几篇文章后,我发现还有一些影响超时的设置: /proc/sys/net/ipv4/neig ..
发布时间:2022-01-04 22:36:49 服务器开发

如何 nl80211 库 &cfg80211 工作吗?

我想详细了解 nl80211 和 cfg80211 的工作原理.函数流,nl80211 如何与wpa_supplicant、iw 等网络工具交互. 请给我推荐一些有用的链接或书籍以供参考. 解决方案 为了能够从用户空间控制无线驱动程序,使用了内核和用户空间之间的一些 IPC 通信进程. 最初使用了带有供应商相关 API 的 ioctl. 1996 年,Jean Tourril ..
发布时间:2022-01-04 22:36:42 其他开发

为什么Linux内核在全系统模式下看不到gem5模拟器中的缓存大小?

我想在我的 gem5 模拟器中调整缓存大小,看看它如何影响程序的性能,并可能在运行时调整程序. 作为健全性检查,我尝试检查我使用的命令行参数是否有效,因此我尝试了以下建议的各种方法:https://superuser.com/questions/55776/finding-l2-cache-size-in-linux/1298808#1298808 cat/sys/devices/syst ..
发布时间:2022-01-04 22:36:37 其他开发

如果我只有设备缓冲区 (PCIe) 的物理地址,如何将此缓冲区映射到用户空间?

如果我只有通过 PCI-Express BAR(基地址寄存器)映射到设备缓冲区的内存缓冲区的物理地址,我如何将该缓冲区映射到用户空间? 例如,代码在 Linux 内核中通常应该是什么样子? unsigned long long phys_addr = ...;//获取设备物理地址unsigned long long size_buff = ...l//获取设备大小 buff//... mm ..
发布时间:2022-01-04 22:36:29 服务器开发

不能在内核模块生成文件中使用通配符

我对 Makefile 和内核模块非常熟悉,但最近我在我的 Makefile 中遇到了一个没有任何意义的问题——使用通配符.为了证明这一点,我正在从头开始编译一个 hello world 内核模块.目录结构是这样的: hello_mod/|- - 你好ç|--- 生成文件 这是实际的makefile: CFILES := $(wildcard hello.c*)#CFILES := hell ..
发布时间:2022-01-04 22:36:22 服务器开发

内核头文件是否取决于处理器类型、供应商等?

我已经从 kernel.org 下载了 Linux 内核的源代码并通过调用创建了头文件 make ARCH=arm headers_check 我有一个嵌入式平台,我问自己这是否足够,因为我没有供应商提供的头文件.头文件的依赖是什么?在我看来,头文件是特定于硬件的,我希望它们取决于 CPU 类型等.仅通过 ARCH=arm 指定架构就足够了吗?arm系统的供应商是否有可能为Linux内核创建自 ..
发布时间:2022-01-04 22:36:13 其他开发

在 Linux 内核中发送 UDP 数据包

对于一个项目,我试图从 Linux 内核空间发送 UDP 数据包.我目前正在将我的代码“硬编码"到内核中(我认为这不是最好/最简洁的方式),但我正在尝试进行一个简单的测试(发送“测试").应该提到的是,我是内核黑客的新手 - 我对许多原则和技术并不了解! 每次我的代码运行时,系统都会挂起,我必须重新启动 - 没有鼠标/键盘响应,滚动和大写锁定键指示灯一起闪烁 - 我不确定这是什么意思,但我假 ..
发布时间:2022-01-04 22:36:06 其他开发

类似 netfilter 的内核模块来获取源地址和目标地址

我阅读了 本指南编写内核模块来做简单的网络过滤. 首先,我不知道下面的文字是什么意思,入站和出站数据包(按传输层)有什么区别? 当一个数据包从线路进入时,它从物理层传输,数据链路层,网络层向上,因此它可能不会通过netfilter 中为 skb_transport_header 定义的函数. 其次,我讨厌幻数,我想用 Linux 内核实用程序中的任何函数(源文件). 任何帮 ..
发布时间:2022-01-04 22:36:00 服务器开发

用于 Linux 内核的线程感知 gdb

我正在使用连接到虚拟机串行端口的 gdb 来调试 linux 内核. 我想知道,是否有任何补丁/插件可以让 gdb 理解一些 linux 内核的数据结构并使其“线程感知"? 我的意思是在 gdb 下我可以看到有多少内核线程,它们的状态,以及每个线程的堆栈信息. 解决方案 libvmi https://github.com/libvmi/libvmi 该项目执行“Li ..
发布时间:2022-01-04 22:35:52 其他开发

内核空间是否映射到 Linux x86 上的用户空间?

似乎在Windows 32位上,内核会从总共4G的用户虚拟内存空间中预留1G的虚拟内存,并将部分的内核空间映射到这1G空间中. 所以我的问题是: 在 32 位 Linux 上有没有类似的情况? 如果是这样,我们如何才能看到整个内存布局? 我觉得 cat/proc/pid/map 只能看到某个进程的用户空间布局.. 谢谢! 解决方案 其实在 32 位 Windo ..

如何为旧的 linux 发行版构建应用程序,并避免 FATAL: kernel too old 错误?

我在 linux 上分发了我的应用程序的静态链接二进制版本.但是,在使用 2.4 内核的系统上,我在启动时遇到段错误,并显示消息:“致命:内核太旧." 如何轻松地启动并运行带有 2.4 内核的版本?我需要的一些库甚至在 2003 年左右的旧 linux 发行版上都不可用.是否有 apt-get 安装或可以让我轻松定位旧内核的东西? 解决方案 最简单的方法就是安装 VirtualBox ..
发布时间:2022-01-04 22:35:28 服务器开发