系统与软件 · D3
Linux 系统编程
机器人的上位机就是一台 Linux。调度、内存、IO、中断,全都绕不开。
要学什么
- 进程/线程/调度策略、优先级与 CPU 亲和性
- 虚拟内存、页错误、缺页与 mlock 的关系
- IO 模型:阻塞、非阻塞、epoll;设备文件与 ioctl
- 诊断工具:top、perf、strace、ftrace、dmesg 各自看什么
四条路线需要多深
算法知道
系统软件精通
嵌入式电控用过
机械结构不需要
「精通」= 能从零推导 / 能手写实现 / 能判断别人的方案对不对;「用过」= 能调起来、能改参数;「知道」= 能听懂、能提问。
怎么算学会了
能定位一个「程序偶发卡顿 200ms」的问题并给出证据链,能解释 mlockall 解决的是什么问题。
常见错误
- 出问题只会重启,不会看 dmesg 和 perf,同一个故障反复出现
- 进程被 OOM 杀掉却以为是程序崩溃,因为没有看内核日志