2020.01.25 @inpm.cy@gmail.com

目的 or 意义

如何应对高并发场景? 如何解决数据一致性问题? 如何设计复杂业务的架构? …

如果对于上面三个问题,你能够有思路并且有一定的项目经验,那你的水平大概已经达到P7及以上。从这三个问题里面,我提炼了一些关键词:

多线程、内存管理、文件系统、进程通信、锁机制、中断、线程池调度、容器化…

以上内容都能通过学习操作系统来补全,并且还能为你带来:

  • 理解**能力**:理解语言设计的底层思想、设计原理
  • 架构设计:增强系统鲁棒性,灵活运用操作系统微架构思想,做好CPU、内存管理,发挥极致性能
  • 运维开发:做集群管理、日志分析
  • 涨薪资本:资深面试,一开口就知道水平高低了

回到标题,所以我们的目的 or 意义是什么呢?相信你内心已经有答案了…

循序渐进构建知识体系

操作系统内核本质也是一个程序,可以理解为一个进程 那么思考一下,进程的本质又是什么?

循序渐进构建知识体系的第一步就是:学习进程
那么进程的本质可以理解为:程序的**执行**副本,操作系统分配资源的依据
**
围绕进程,可以发现:

  • 多线程:比如处理用户操作、网络、渲染等
  • 内存:比如存程序指令、需要堆栈执行数据
  • 文件/磁盘,比如 I/O读写, 多级缓存、数据持久化
  • 通信,其中一种途径就是网络
  • 容器,希望能单独部署管理

所以以进程为核心,重学操作系统会涵盖以下内容:

  • 计算机组成原理:CPU、内存、寄存器、总线等
  • Linux指令、内核:文件查找、日志分析、性能监控、集群管理、用户态和内核态、中断向量等
  • 进程和线程:多线程编程、互斥和乐观锁、饥饿和死锁、调度算法、进程通信等
  • 内存管理、文件系统:内存分配和回收、缓存置换、逃逸分析、B+树以及Hadoop的HDFS等
  • 网络与安全:TCP和UDP协议、I/O模型、公私钥加密体系等
  • 容器化:虚拟化原理、Docker和Kubernetes等

学而不思则罔**,思而不学则殆**
共勉