一、硬件结构

1.2 存储器金字塔

存储器的层次结构

存储器的层次关系

存储器之间的实际价格和性能差距

总结

关注作者

1.3 如何写出让 CPU 跑得更快的代码?

CPU Cache 有多快?

CPU Cache 的数据结构和读取过程是什么样的?

如何写出让 CPU 跑得更快的代码?

总结

关注作者

1.4 CPU 缓存一致性

CPU Cache 的数据写入

缓存一致性问题

总线嗅探

MESI 协议

总结

关注作者

1.5 CPU 是如何执行任务的?

CPU 如何读写数据的?

CPU 如何选择线程的?

总结

关注作者

1.6 软中断

中断是什么?

什么是软中断?

如何定位软中断 CPU 使用率过高的问题?

总结

关注作者

1.7 为什么 0.1 + 0.2 不等于 0.3 ?

为什么负数要用补码表示?

十进制小数与二进制的转换

计算机是怎么存小数的?

0.1 + 0.2 == 0.3 ?

总结

二、操作系统结构

2.1 Linux 内核 vs Windows 内核

内核

Linux 的设计

Windows 设计

总结

关注作者

三、内存管理

3.1 虚拟内存

虚拟内存

内存分段

内存分页

段页式内存管理

Linux 内存管理

四、进程与线程

4.2 进程间通信

管道

消息队列

共享内存

信号量

信号

Socket

总结

4.3 多线程同步

竞争与协作

互斥与同步的实现和使用

经典同步问题

关注作者

4.4 死锁

死锁的概念

模拟死锁问题的产生

利用工具排查死锁问题

避免死锁问题的发生

总结

关注作者

4.5 悲观锁与乐观锁

互斥锁与自旋锁:谁更轻松自如?

读写锁:读和写还有优先级区分?

乐观锁与悲观锁:做事的心态有何不同?

总结

关注作者

五、调度算法

5.1 进程调度/页面置换/磁盘调度算法

进程调度算法

内存页面置换算法

磁盘调度算法

扫描算法

关注作者

六、 文件系统

6.1 文件系统

文件系统的基本组成

虚拟文件系统

文件的使用

文件的存储

空闲空间管理

文件系统的结构

目录的存储

软链接和硬链接

文件 I/O

关注作者

七、设备管理

7.1 键盘敲入A 字母时,操作系统期间发生了什么?

设备控制器

I/O 控制方式

设备驱动程序

通用块层

存储系统 I/O 软件分层

键盘敲入字母时,期间发生了什么?

关注作者

八、网络系统

8.1 Linux 系统是如何收发网络包的?

网络模型

Linux 网络协议栈

Linux 接收网络包的流程

Linux 发送网络包的流程

总结

关注作者

8.2 零拷贝

为什么要有 DMA 技术?

传统的文件传输有多糟糕?

如何优化文件传输的性能?

如何实现零拷贝?

PageCache 有什么作用?

大文件传输用什么方式实现?

总结

8.3 I/O 多路复用:select/poll/epoll

最基本的 Socket 模型

如何服务更多的用户?

多进程模型

多线程模型

I/O 多路复用

select/poll

epoll

总结

关注作者

8.4 高性能网络模式:Reactor 和 Proactor

演进

Reactor

Proactor

总结

关注作者

九、Linux 命令

9.1 如何查看网络的性能指标?

性能指标有哪些?

网络配置如何看?

socket 信息如何查看?

网络吞吐率和 PPS 如何查看?

连通性和延时如何查看?

关注作者

9.2 如何从日志分析 PV、UV?

别急着开始

慎用 cat

PV 分析

PV 分组

UV 分析

UV 分组

终端分析

分析 TOP3 的请求