【课程介绍】
操作系统(Operating System)作为一门计算机专业大学必修课,更是计算机领域的本源知识。任何编程语言学下去都会碰到操作系统知识,比如 Java 的虚拟机、Go 语言的协程与通道、Node.js 的 I/O 模型等。
如今在任何一家中大型互联网公司,操作系统相关的内容,都已经成为你涨薪、过面试的高频必考内容,比如 Linux 指令、中断、多线程、并发、性能、内存管理、系统稳定性、文件系统、容器和虚拟化等,知识都来源于操作系统。
【课程目录】
目录 /共51节
开篇词
开篇词 | 为什么大厂面试必考操作系统?
课前必读 | 构建知识体系,可以这样做!
模块一:(前置知识)计算机组成原理
01 | 计算机是什么:“如何把程序写好”这个问题是可计算的吗?
02 | 程序的执行:相比 32 位,64 位的优势是什么?(上)
03 | 程序的执行:相比 32 位,64 位的优势是什么?(下)
04 | 构造复杂的程序:将一个递归函数转成非递归函数的通用方法
05 | 存储器分级:L1 Cache 比内存和 SSD 快多少倍?
加餐 | 练习题详解(一)
模块二: Linux 指令入门
06 | 目录结构和文件管理指令:rm / -rf 指令的作用是?
07 | 进程、重定向和管道指令:xargs 指令的作用是?
08 | 用户和权限管理指令: 请简述 Linux 权限划分的原则?
09 | Linux 中的网络指令:如何查看一个域名有哪些 NS 记录?
10 | 软件的安装: 编译安装和包管理器安装有什么优势和劣势?
11 | 高级技巧之日志分析:利用 Linux 指令分析 Web 日志
12 | 高级技巧之集群部署:利用 Linux 指令同时在多台机器部署程序
加餐 | 练习题详解(二)
模块三:操作系统基础知识
13 | 操作系统内核:Linux 内核和 Windows 内核有什么区别?
14 | 用户态和内核态:用户态线程和内核态线程有什么区别?
15 | 中断和中断向量:Java/js 等语言为什么可以捕获到键盘输入?
16 | Win/Mac/Unix/Linux 的区别和联系:为什么 Debian 漏洞排名第一还这么多人用?
加餐 | 练习题详解(三)
模块四: 进程和线程
17 | 进程和线程:进程的开销比线程大在了哪里?
18 | 锁、信号量和分布式锁:如何控制同一时间只有 2 个线程运行?
19 | 乐观锁、区块链:除了上锁还有哪些并发控制方法?
20 | 线程的调度:线程调度都有哪些方法?
21 | 哲学家就餐问题:什么情况下会触发饥饿和死锁?
22 | 进程间通信: 进程间通信都有哪些方法?
23 | 分析服务的特性:我的服务应该开多少个进程、多少个线程?
加餐 | 练习题详解(四)
模块五:内存管理
24 | 虚拟内存 :一个程序最多能使用多少内存?
25 | 内存管理单元: 什么情况下使用大内存分页?
26 | 缓存置换算法: LRU 用什么数据结构实现更合理?
27 | 内存回收上篇:如何解决内存的循环引用问题?
28 | 内存回收下篇:三色标记-清除算法是怎么回事?
加餐 | 练习题详解(五)
模块六:文件系统
29 | Linux 下的各个目录有什么作用?
30 | 文件系统的底层实现:FAT、NTFS 和 Ext3 有什么区别?
31 | 数据库文件系统实例:MySQL 中 B 树和 B+ 树有什么区别?
32 | HDFS 介绍:分布式文件系统是怎么回事?
加餐 | 练习题详解(六)
模块七: 网络与安全
33 | 互联网协议群(TCP/IP):多路复用是怎么回事?
34 | UDP 协议:UDP 和 TCP 相比快在哪里?
35 | Linux 的 I/O 模式:select/poll/epoll 有什么区别?
36 | 公私钥体系和网络安全:什么是中间人攻击?
加餐 | 练习题详解(七)
模块八:虚拟化和其他
37 | 虚拟化技术介绍:VMware 和 Docker 的区别?
38 | 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?
39 | Linux 架构优秀在哪里?
40 | 商业操作系统:电商操作系统是不是一个噱头?
加餐 | 练习题详解(八)
结束语
结束语 | 论程序员的发展——信仰、选择和博弈