我对修改内核内部结构、应用补丁、处理设备驱动程序和模块感兴趣,为了我个人的乐趣。
是否有针对内核黑客的综合资源,供有经验的程序员使用?
我基本上是想弄清楚如何从头开始制作一个 GUI,除了 linux 内核和 C 编程之外什么都没有。
我不打算从头开始创建 GUI 桌面环境,但我想创建一些桌面应用程序,并且在我搜索知识的过程中,我能找到的所有信息都是关于 GUI API 和工具包的。我想知道,至少我对 Linux GUI 是如何制作的基本原理的理解,如何在不使用任何 API 或工具包的情况下制作 GUI 环境或 GUI 应用程序。
我想知道例如:
现有的 API 和工具包通过对内核的系统调用工作(内核负责在最低级别以像素或其他方式构建 GUI 图像)
这些工具包执行简单地将信息传递给屏幕驱动程序的系统调用(是否有发送所有屏幕驱动程序都遵守的信息的标准格式,或者 GUI API 是否需要能够根据特定的屏幕/驱动程序以多种格式输出此信息? ) 并且如果这大致正确,原始的 linux 内核是否通常只以 8 位字符的形式将信息发送到屏幕?
我真的很想了解 linux 内核之间发生了什么,以及我在屏幕上看到的内容(通过软件和硬件的控制/信息流,如果您知道,信息采用什么格式等)。我非常感谢详细的解释,我知道这可能很难解释得足够详细,但我认为这样的解释对于其他好奇和学习的人来说将是一个很好的资源。对于上下文,我是一名 3 年级的 Comp sci 学生,他最近开始在我的系统编程课程中使用 C 进行编程,并且我对 linux 和编程有中级(或者我会描述它)的理解。再次感谢所有帮助我的人!!!
如何要求ps只显示用户进程而不显示内核线程?
看到这个问题,明白我的意思......
一些答案中使用了“subreaper”这个词。搜索谷歌也会出现“刚刚使用”这个词的条目。
我如何理解什么是“子收割者”?
我听说 FIFO 是命名管道。它们具有完全相同的语义。另一方面,我认为 Unix 域套接字与管道非常相似(尽管我从未使用过它)。所以我想知道它们是否都指的是 Linux 内核中的相同实现。任何的想法?
我开始在 Linux 内核邮件列表上的礼仪上下文中考虑这个问题。作为世界上最著名、可以说是最成功和最重要的自由软件项目,Linux 内核受到了很多媒体的关注。项目创始人兼领导者 Linus Torvalds 在这里显然不需要介绍。
Linus 偶尔会因为他在 LKML 上的火爆而引起争议。他自己承认,这些火焰经常与破坏用户空间有关。这让我想到了我的问题。
我可以从历史的角度来解释为什么破坏用户空间是一件坏事吗?据我了解,破坏用户空间需要在应用程序级别进行修复,但如果它改进了内核代码,这是一件坏事吗?
据我了解,Linus 声明的政策是不破坏用户空间胜过其他一切,包括代码质量。为什么这如此重要,这种政策的利弊是什么?
(这种一贯适用的政策显然有一些缺点,因为 Linus 偶尔会与他在 LKML 上的高级副手在这个话题上发生“分歧”。据我所知,他在这件事上总是有自己的方式。)
有没有办法告诉 Linux 内核只将一定比例的内存用于缓冲区缓存?我知道/proc/sys/vm/drop_caches可以用来临时清除缓存,但是否有任何永久设置可以防止它增长到超过主内存的 50%?
我想这样做的原因是,我有一台运行 Ceph OSD 的服务器,它不断地从磁盘提供数据,并设法在几个小时内用完整个物理内存作为缓冲区缓存。同时,我需要运行将分配大量(数十 GB)物理内存的应用程序。与流行的看法相反(请参阅关于几乎所有有关缓冲区缓存的问题的建议),通过丢弃干净的缓存条目来自动释放内存不是即时的:当缓冲区缓存已满时,启动我的应用程序可能需要长达一分钟的时间( *),而在清除缓存后(使用echo 3 > /proc/sys/vm/drop_caches),相同的应用程序几乎立即启动。
(*) 根据 Vtune 在一个名为pageblock_pfn_to_page. 这个功能似乎与查找大页面所需的内存压缩有关,这让我相信实际上是碎片化的问题。
我知道如果我想编译我自己的 Linux 内核,我需要 Linux 内核头文件,但它们到底有什么用?
我发现下面/usr/src/似乎有几十个 C 头文件。但是它们的目的是什么,它们不是直接包含在内核源代码中吗?
我想尝试使用我的发行版提供的内核以外的内核——或者来自其他地方,或者是我定制的。这是困难还是危险?
我从哪里开始?
我必须禁用某些事件以避免在我的台式机中挂起后立即唤醒,并且我通过反复试验来实现(效果很好,所以这不是问题)。但我想知道......例如在我的笔记本电脑中,我有一个很长的列表/proc/acpi/wakeup:
[...]
RP03 S4 *disabled
PXSX S4 *disabled
RP04 S4 *disabled pci:0000:00:1c.3
PXSX S4 *enabled pci:0000:03:00.0
RP06 S4 *disabled
[...]
Run Code Online (Sandbox Code Playgroud)
我四处搜索,找不到解释第一列中具有 4 个字母代码含义的列表的地方。我想象在它们之后带有设备名称的事件是由该设备链接/生成的,但我对其余的大部分都不知所措......减去疯狂的猜测。
例如,我怎么知道事件RP06是什么?有没有清单?或者该代码是特定于供应商的?