三年前,小方离开了某互联网大厂加入了一个外企,之后工作和生活相对balance,我开始在技术上做了一些收拢。我选择了底层技术原理方向深挖。
我之所以做这样的决定是:
意识到工作是永远做不完,工作只是谋生的手段之一,而不是生活的全部的意义
年龄变大,需要兼顾身体和家庭
技术更新换代带快,新式技术和框架层出不穷,一味地追求新技术,永远只能浮于表明,也没法培养自己的核心技术能力,而基础技术原理长期适用和实用
中美科技竞争越来越激烈,国家对掌握基础和核心技术的人才越来越重视,需求越来越多,尤其是国产信创大环境背景下
希望我的一些思考能对其他读者,尤其是担忧自己三十五岁危机的技术同学,有一些启发。
在 2024年 我深入地把linux 5.x的内核代码关于网络协议栈等部分深入地阅读和调试了一遍。在学习内核的过程中也发现了一些好书,其中有一本爱不释手,已经过去的春节一边阅读,一边翻译,现在它终于完工了,我把它做成专栏放在小方说服务器开发知识星球中供小伙伴阅读,专栏这两天将会上线,这个专栏的主要是linux内核调试和新模块开发,特点是非常细致,行文娓娓道来,如同与一位老友喝茶聊天,对新手学习和入门linux内核调试和开发非常友好,更让人惊喜的是,其使用的linux内核源码版本为5.x代码,非常新。毕竟讲操作系统原理和linux低版本内核的资料和书籍太多了,而新的内核变化如此之多,操作系统的理论知识我们也学的太多了,纸上得来终觉浅,与实际试一试差别很大。
以下是详细目录:
安装64位Linux虚拟机
开启x86系统的虚拟化扩展支持
为磁盘分配足够空间
安装Oracle VirtualBox Guest Additions
试用树莓派(Raspberry Pi)
localmodconfig方法优化内核配置localmodconfig方法make menuconfig用户界面优化我们的内核配置make menuconfig用户界面的示例用法Kconfig*文件Kconfig文件中创建新菜单项apt安装软件包ERR_PTR和PTR_ERR宏__init和__exit关键字printk()函数printk使用内核内存环形缓冲区
内核日志记录和systemd的journalctl
使用printk日志级别
pr_<foo>便利宏pr_debug()内核消息限制printk实例的速率
从用户空间生成内核消息
通过pr_fmt宏标准化printk输出
可移植性和printk格式说明符
proc文件系统可调参数查看任务结构
使用current访问 task 结构
确定上下文
current使用 task 结构printk进行安全编码深入分析“Hello, world” C程序
printf() API64位Linux系统上的虚拟内存分割
procmap进程VAS可视化实用程序/proc/PID/maps输出vsyscall页面procfs直接查看进程内存映射dmesg在树莓派上查看内核段procmap查看内核VAS页分配器的基本工作原理
空闲列表组织
页分配器的工作过程
分析一些场景
页分配器内部 - 更多细节
学习如何使用页分配器API
lowlevel_mem_lkm内核模块深入研究GFP标志
kmalloc的slab缓存/proc/buddyinfo伪文件检查ksize()测试slab分配 - 案例1ksize()测试slab分配 - 案例2vmalloc系列APIvmalloc()的相关函数kmalloc()和vmalloc() API的快速比较vm.overcommit设置为2,关闭过度提交vm.overcommit设置为0,开启过度提交(默认设置)perf可视化流程理解模块化调度类
查询调度类
关于完全公平调度器(CFS,Completely Fair Scheduler)和虚拟运行时(vruntime)值的说明
trace-cmd可视化流程trace-cmd进行可视化trace-cmd record记录示例会话trace-cmd report(命令行界面)进行报告和解释taskset(1)设置CPU亲和性cyclictest测量调度延迟cyclictest(和其他所需软件包)i++trylock变体atomic_t和refcount_t接口 649refcount_t与较旧的atomic_t接口 650atomic_t和refcount_t接口 652refcount_t的示例 654读写自旋锁接口 667
注意事项 669
读写信号量 670
lockdep - 尽早捕获锁问题 687lockdep捕获死锁错误 690lockdep捕获自死锁错误 690lockdep捕获AB - BA死锁 695lockdep - 注释和问题 700lockdep注释 700lockdep问题 701加入星球方式:
专栏对全体小方说服务器开发知识星球球友开发,加入星球后,看置顶帖子即可阅读。
星球提供五大服务:
优问优答
不定期的技术直播和录像
优质源码分享和指导
模拟面试、职业解惑和简历review
星球专属技术专栏。
小方说服务器开发知识星球详细介绍点击这里。
如果你还不是球友,原价325一年,现在可以通过下面的优惠券扫码加入,立省40元:

老球友续费扫码如下(可在半价的基础上再优惠20元):

推荐阅读