学习 Linux 内核前,有必要过一遍《unix 环境高级编程》(APUE)吗?

267 天前
 amiwrong123
因为有这么一种说法“如果都不知道 linux 提供了什么功能,又怎么可能看懂它的源代码”。

我觉得是有一定道理的。我现在个人想深入理解 linux 内核,不过这是一个比较长的计划。所以现在有这些问题:
- 学习 linux 内核前,过一遍 APUE 是有必要的吗?
- APUE 的哪些内容,是我应该作为的重点内容?
2117 次点击
所在节点    程序员
12 条回复
idontnowhat2say
267 天前
我觉得很有必要,过了之后学习 linux 内核感觉更轻松点。
Noicdi
267 天前
不回答问题,题外话:
我觉得过 apue 这种书太累了,所以一般都是碰到什么接口或者问题会去书里定向查;但是书里也有一些很有价值的东西(不是接口说明这种内容),不把书过一遍也不知道能挖到什么宝。
所以一直处于过书和不过的叠加态。

再推荐一本《 Linux/unix 系统编程手册》,从系统编程到网络编程,很全面我认为。
agagega
267 天前
更好的选择可能是过一遍 Rust 的 rustix 库,了解类 Unix 系统提供的 API 可以怎么用怎么封装,以及不同系统之间的差别
ben666
267 天前
不需要,但是要有一些基本的操作系统概念,找一个感兴趣的主题看。
刚开始可以看一些讲 linux kernel 的书
Understanding the Linux Kernel
understanding linux network internals

有一些比较独立的内核模块如四层负载均衡 LVS ,资料比较多,入手比较容易,也比较做实验、方便调试。
在做实验的时候可以用 dperf 打流 https://dperf.org/
enchilada2020
267 天前
op 是做系统开发的吗?深入理解 Linux 内核的目的是什么呢?
aeon113
267 天前
我觉得不需要,apue 的东西太多了,而且 kernel 里很多代码,比如中断,比如 swap ,也不是直接向用户态提供服务的

相反我觉得先看一遍"现代操作系统"对你理解 kernel 会有很大帮助

https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Modern%20Operating%20Systems.pdf
julyclyde
267 天前
你确定你需要看内核?
mioktiar56
267 天前
等你看完了这些书,你就发现看这些书是浪费时间
GeekGao
267 天前
我觉得如果从来没了解过 unix 、linux 的 C 编程,可以读 apue ,这样能更好的理解 ABI 用户态的编程,打通思路。
虽然打通思路后也未必能上手 kernel 的代码分析。。。。
wjx0912
267 天前
个人觉得没必要,这是一本字典,需要的时候查一查。从头到尾看其实效率很低的
NessajCN
267 天前
Linux 提供的是跟硬件交互的功能
更具体一点它是把硬件抽象成文件,把交互抽象成写入/读取文件
然后开发者就可以专注于软件对硬件的操控设计,而不用太考虑具体实现方式
https://makelinux.github.io/kernel/map/
基本看懂这张图也就够了
tool2d
267 天前
那个编程艺术作者都说了,书里 90%的问题,正常人一辈子都遇不到。

看书不如和 GPT 互怼几句,只有先遇到问题,才能被理解和消化为知识积累。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX