概念
问题
- 为何系统会出现 load 值高 cpu 利用率却不高的情况?
- 为何会有那么多僵尸进程?
- 某些场景下如何快速创建进程的 snapshot ?
- 如何高效利用 CPU Cache Line(利用 Cache Friendly 的数据结构)?
- 如何避免 False Sharing ?
- 并发情况下如何避免死锁?
- zero-copy 为何高效?
- 单纯的 context switch 都是 micro second 级的,为何频繁的线程调度会导致性能低下?
- 各种锁(互斥锁、自旋锁、读写锁)的适用场景等。
虚拟地址
操作系统可以看做是一个资源管理者
虚拟内存:虚拟内存可以认为是一些byte数组,读写都必须指定具体的地址 address。每个进程都有自己的虚拟地址空间,操作系统会将这些虚拟地址空间映射到真实的物理地址
PID:线程标识
并发
程序执行a=a+1需要三个指令
1.将a的值加载到寄存器
2.对a执行+1的操作
3.将a的值写到内存
在多线程并发的条件下,a=a+1的操作不是原子的,所以会发生很多意料之外的事情
persistence持久化
文件系统:操作系统中管理磁盘的软件叫做文件系统
操作系统
最关键的一点是根据实际情况做权衡
1.避免恶意或者意外导致的崩溃
2.操作系统不应该停止运行,所以需要保证可用性reliability
3.其他的目标包括:energy-efficiency更省电、mobility更便携 等