文档教程知识库【免费下载链接】CS-Base图解计算机网络、操作系统、计算机组成、数据库共 1000 张图 50 万字破除晦涩难懂的计算机基础知识让天下没有难懂的八股文 在线阅读https://xiaolincoding.com项目地址https://gitcode.com/GitHub_Trending/cs/CS-Base点击查看免费下载导读操作系统常被称为计算机世界的「Super Man」——它默默为程序完成了大量精妙工作以至于我们几乎察觉不到它的存在。本指南基于 CS-Base 仓库《图解系统》的 学习心得章节为你梳理一套经过验证的操作系统学习路线先掌握内存管理 → 进程管理 → 文件系统管理 → 输入输出设备管理四大模块的主线再深入调度算法、上下文切换、页缓存等核心高地最后配合经典视频与书籍完成从入门到深化的闭环。读完本文你将建立起可落地的学习计划并能借助仓库内 16W 字 400 张图的图解章节逐一攻克每个知识点。为什么操作系统值得认真学操作系统为了我们做了非常厉害的事情正是因为它的存在我们才能在多任务环境下安心地写代码、跑程序而无需关心 CPU 如何切换进程、内存如何分配回收、文件如何落盘。通过学习操作系统不仅能深刻体会到计算机科学家设计思想的精妙很多思想如缓存、分层、调度、隔离还可以直接迁移到日常开发工作中。CS-Base 仓库的《图解系统》正是围绕这一目标展开的根据 os/README.md整个系列共有16W 字 400 张图系统图解了操作系统的进程管理、内存管理、文件系统、设备管理、网络系统五大结构其中进程管理和网络系统篇幅最多。它既适合小白入门也可以作为面试突击手册——操作系统是面试的高频考点而这份图解系列把「厚厚的书」拆解成一张张图、一个个直击重点的章节。学习主线四大模块与推荐学习顺序学操作系统最重要的不是盲目翻书而是按模块有主次地推进。原文档明确推荐的学习顺序是内存管理—— 最重要、最难也和其他模块关联性最大的模块先把它搞定后续模块会轻松很多进程管理—— 承接内存管理的地址空间概念理解进程、线程与调度文件系统管理—— 理解数据如何持久化、如何组织与索引输入输出设备管理—— 理解设备中断、驱动与 I/O 的底层协作。这一顺序在仓库目录结构中也能得到印证os/3_memory/ 排在 os/4_process/、os/6_file_system/、os/7_device/ 之前且内存管理章节既讲解虚拟内存的来历为什么要有虚拟内存又延伸到 malloc 分配malloc 是如何分配内存的与内存回收内存满了会发生什么。内存管理一切的地基内存管理是理解整个操作系统工作的起点。核心问题是为什么要有虚拟内存单片机时代 CPU 直接操作物理地址两个程序同时运行会互相覆盖数据而立刻崩溃。操作系统的解法是为每个进程分配独立的一套「虚拟地址」并通过 CPU 芯片中的内存管理单元MMU完成虚拟地址到物理地址的映射详见 为什么要有虚拟内存。映射关系有两种经典方案内存分段按程序的逻辑分段代码段、数据段、栈段、堆段分离但会产生外部内存碎片且内存交换时需要整段写入磁盘效率低内存分页把虚拟和物理内存空间切成固定大小的页Linux 下每页4KB通过页表映射解决了外部碎片问题同时交换时只需换出少数几个页效率高。分页方案进一步衍生出两个必须掌握的子主题多级页表单级页表在 32 位环境下每个进程需要约4MB内存存页表100 个进程就是400MB。利用局部性原理二级分页在只有 20% 页表项被用到时页表占用可压缩到约0.804MB64 位系统则演化为 PGD/PUD/PMD/PTE 四级分页TLB转址旁路缓存多级页表换来空间节约却增加了地址转换的时间开销。于是 CPU 芯片中加入 TLB 缓存最常访问的页表项CPU 寻址先查 TLB命中率极高。进程管理调度与切换的艺术进程是运行中的程序是资源分配的单位线程是进程内的一条执行流程是CPU 调度的单位详见 进程、线程基础知识。学习本模块时重点理解进程状态机运行、就绪、阻塞三基本状态加上创建、结束以及换出到外存后的挂起状态构成完整的七态变迁PCB进程控制块进程存在的唯一标识通过链表把相同状态的进程组织成就绪队列、阻塞队列上下文切换进程切换发生在内核态既要切换用户空间资源虚拟内存、栈、全局变量又要切换内核空间资源内核堆栈、寄存器开销大而同一进程内的线程切换无需切换虚拟内存详见下文专门小节。文件系统管理一切皆文件文件系统负责把用户的文件持久化到磁盘。Linux 最经典的一句话是「一切皆文件」——普通文件、目录、块设备、管道、socket 都统一交给文件系统管理详见 文件系统全家桶。核心概念有三个索引节点inode记录文件元信息inode 编号、大小、权限、时间戳、数据在磁盘的位置是文件的唯一标识存储于磁盘目录项dentry记录文件名与索引节点指针由内核维护、缓存在内存一个文件可有多个别名硬链接逻辑块磁盘读写最小单位是512B的扇区文件系统把多个扇区组成4KB的逻辑块提高读写效率。输入输出设备管理中断驱动的世界以 键盘敲入 A 字母时操作系统期间发生了什么 为例I/O 设备管理贯穿「硬件中断 → 内核中断处理 → 驱动 → 用户态响应」的完整链路是理解软中断参考 什么是软中断与设备驱动协作的绝佳入口。一个贯穿始终的核心理念虚拟 向下屏蔽差异向上提供统一学习过程中会遇到很多「虚拟」概念如虚拟内存、虚拟文件系统。它们的本质是一样的向下屏蔽差异向上提供统一的东西以方便程序员使用。以仓库中的两个典型章节为例虚拟内存屏蔽了物理内存碎片化、进程间地址冲突等差异向上为每个进程提供统一、连续、独立的 4GB32 位地址空间程序员只关心自己的虚拟地址即可为什么要有虚拟内存虚拟文件系统VFS文件系统种类众多磁盘文件系统 Ext2/3/4、XFS内存文件系统/proc、/sys网络文件系统 NFS、SMB 等操作系统在用户层与文件系统层之间引入 VFS 中间层定义统一的数据结构和标准接口程序员无需了解底层文件系统原理文件系统全家桶。理解这一点后再遇到任何「虚拟 XX」都可以先问它屏蔽了什么差异向上提供了什么统一接口这能帮你快速抓住本质。值得深挖的三大知识高地原文档特别强调学习过程中应重视三个「现象级」知识点背后的设计动机仓库中均有对应图解章节展开。1. 调度算法数据结构与算法的魅力操作系统里到处是调度算法重要的是理解「因为什么问题而引入新算法」的演进过程详见 进程调度/页面置换/磁盘调度算法进程调度CPU 调度从先来先服务FCFS对长作业有利、不适合 I/O 繁忙型、最短作业优先SJF易致长作业饥饿、高响应比优先HRRN用「响应比 (等待时间 要求服务时间) / 要求服务时间」权衡长短作业到时间片轮转RR时间片通常20ms~50ms为合理折中、最高优先级HPF、多级反馈队列综合 RR 与 HPF多级队列 优先级越高时间片越短 新进程反馈抢占页面置换从最佳置换OPT用「未来」评判只作衡量基准实际无法实现、先进先出FIFO、最近最久未使用LRU用「历史」近似未来但维护全链表开销大、时钟算法Clock环形链表 访问位兼顾效果与实现成本、最不常用LFU访问计数器 定期衰减解决只重频率不重时间的问题磁盘调度寻道时间是磁盘访问最耗时的部分。以磁道序列98, 183, 37, 122, 14, 124, 65, 67、初始磁头在 53 磁道为例FCFS 移动640磁道最短寻道时间优先SSF移动236磁道但可能产生饥饿扫描算法SCAN电梯算法单向移动消除饥饿但中间磁道响应偏多循环扫描C-SCAN只响应单方向请求使各磁道响应频率更平均LOOK/C-LOOK 则优化为「只移动到最远请求位置即反向」而不必扫到磁盘边缘。2. 进程与线程上下文切换为什么线程更快原文档指出进程与线程最大的区别在于上下文切换过程中线程不用切换虚拟内存——因为同一进程内的线程共享虚拟内存空间就单这一点线程切换的性能开销就比进程减少了很多。其底层原因结合 为什么要有虚拟内存 的 TLB 小节是虚拟内存与物理内存的映射关系需要查询页表而页表查询很慢因此常用地址映射关系会缓存在TLB中。一旦发生进程切换TLB 缓存的地址映射关系就会失效命中率降低虚拟地址转物理地址的过程变慢。而同一进程内线程切换共享同一页表TLB 无需失效重建。详细对比见 进程、线程基础知识 的「线程的上下文切换」小节。3. 磁盘高速缓冲区read/write 并非直接写盘学完操作系统你不会再傻傻地认为read/write之后数据就直接写到硬盘了也不会觉得多次read/write性能很低——因为操作系统有「磁盘高速缓冲区」替我们做了缓存工作预读数据、缓存最近访问的数据、用 I/O 调度算法合并和排队磁盘调度 I/O这一切都是为了减少操作系统对磁盘的访问频率。仓库中 进程写文件时进程发生了崩溃已写入的数据会丢失吗 一文专门剖析了页缓存Page Cache的行为与写入路径是理解该机制的最佳入口。一个常见误区操作系统 ≠ Linux初学操作系统时容易犯的错误是把「操作系统」等同于「Linux」。需要明确操作系统课程讲的是集合大多数操作系统实现的思想与具体实现的 Linux 操作系统多少会有差别。仓库中 Linux 内核 vs Windows 内核 一文正是这种「思想 vs 实现」差异的典型例子Windows 内核偏向宏内核与图形化、按版本机制管理内核Linux 内核则是宏内核 模块化、一切皆文件、按内核版本迭代。建议的学习策略是先掌握操作系统的基本知识思想层再选择 Linux 内核相关资料看具体实现实现层这样学起来才能事半功倍。入门系列视频 书籍双轨并行对于没学过操作系统的小白原文档的建议是不要直接闷头看书很容易几分钟就放弃。推荐的入门方式是视频与书籍结合视频《操作系统-清华大学》由清华大学向勇、陈渝老师授课授课顺序恰好就是「内存管理 → 进程管理 → 文件系统管理 → 输入输出设备管理」可在 B 站搜索该课程标题含「操作系统」与「清华大学」关键词即可定位它的讲解比较精炼适合快速建立整体框架书籍搭配《现代操作系统》看完视频对应章节后再读该书对应章节视频 书本交叉印证比直接啃书效果好得多进阶视频《操作系统-哈工大》李治军老师授课讲解更细节会从Linux 内核代码角度带你进一步理解操作系统并善用生活小例子帮助理解可在 B 站搜索同名课程。深入学习系列从 What 走向 How入门之后如果你觉得《现代操作系统》说得比较笼统原文档推荐两本更深入的读物《操作系统导论》这本书不仅告诉你 What还会告诉你How内容循序渐进、层层递进尤其内存管理和并发两个部分讲得很好。中文版本较难找到微信读书可免费阅读《深入理解计算机系统》CSAPP严格来说不算操作系统书而是以程序员视角理解计算机系统的综合性读物涉及操作系统、计算机组成、C 语言、汇编语言等知识。豆瓣评分高达 9.8 分它不把某个话题挖得过深过细而是讲清楚原理帮助读者建立对计算机系统各组件工作方式的理性认识锻炼一种「计算思维」。这两本书与仓库内容的配合方式读到虚拟内存时配合 深入理解 Linux 虚拟内存管理 与仓库内存章节读到并发时配合 多线程冲突了怎么办、怎么避免死锁、什么是悲观锁、乐观锁 等图解章节读到 I/O 与网络时配合 什么是零拷贝、I/O 多路复用select/poll/epoll、高性能网络模式Reactor 和 Proactor 完成「理论 → 实战」的衔接。学习方法总结把原文档的经验浓缩成四条行动准则按模块顺序推进内存管理 → 进程管理 → 文件系统管理 → 输入输出设备管理先啃最难也最核心的内存管理抓住「虚拟」的本质凡是「虚拟」概念都理解成「向下屏蔽差异、向上提供统一」用这个思维模型套用虚拟内存、VFS 等所有场景关注「为什么」而非只记「是什么」调度算法层出不穷重点在于理解每个算法因何问题而诞生、又带来了什么新问题这个演进过程才是学习的核心价值思想与实现分离先学操作系统通用思想再按需深入 Linux 内核实现配合图解章节 入门视频 经典书籍三管齐下。剩下更多的精妙设计中断、锁、网络协议栈、内存回收……就交给你在学习途中去探索和发现CS-Base 仓库的图解系列会一路相随。赞分享文档教程知识库【免费下载链接】CS-Base图解计算机网络、操作系统、计算机组成、数据库共 1000 张图 50 万字破除晦涩难懂的计算机基础知识让天下没有难懂的八股文 在线阅读https://xiaolincoding.com项目地址https://gitcode.com/GitHub_Trending/cs/CS-Base点击查看免费下载相关推荐CS-Base 图解计算机基础数据结构与算法、计组、操作系统、网络、MySQL、Redis 的系统学习路线CS Base 图解计算机基础数据结构与算法、计组、操作系统、网络、MySQL、Redis 的系统学习路线 本文是 CS Base小林 x 图解计算机基础文档教程知识库Vue Prism Editor核心功能解析语法高亮与行号显示实现原理Vue Prism Editor核心功能解析语法高亮与行号显示实现原理 Vue Prism Editor是一个轻量级的代码编辑器组件专门为Vue.js应用设图解系统死锁的四个必要条件、代码复现与 pstack/gdb 排查实战CS-Base 操作系统进程篇图解系统死锁的四个必要条件、代码复现与 pstack/gdb 排查实战CS Base 操作系统进程篇 本文是 CS Base《图解系统》进程管理章节的技术文档教程知识库上一篇CMake版本管理终极指南从CMakeVersion.cmake到代码中的版本宏定义下一篇MassTransit容器编排自动扩缩容基于自定义指标的策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考