编程导航教程

首页

操作系统学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)

2024-05-11 15:09
阅读 1.7w
下载文档
评论
问答
笔记
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
大纲
    1

    编程导航学习网站:学编程、做项目、拿 Offer!

    企业高频面试题库:开始刷题,面试遇原题!

    精选简历模板大全:1 分钟搞定简历!

    AI 资源导航网站:获取最新 AI 黑科技!

    1 对 1 模拟面试:随时随地提升面试能力

    操作系统求职高频面试题:开始刷题

    开篇介绍

    操作系统是管理计算机硬件和软件资源的计算机程序,是计算机系统中 最基本 的系统软件。

    为什么要学操作系统?

    学习操作系统,一方面能帮助我们了解程序执行的原理、熟悉更多计算机的概念(比如内存、CPU、文件系统、磁盘);另一方面,操作系统中的结构设计、算法设计、解决问题的思路和方案都非常优秀,可以帮助我们开拓思路,从而在自己编写程序、设计算法时有了更多的选择和考量(比如死锁问题的处理)。

    此外,操作系统也是 考研和面试的重点,如果是大学期间的小伙伴,在课堂上就要认真学习。

    学习条件

    1. 至少学过一门编程语言(否则学操作系统时一些代码演示可能看不懂)
    2. 急着找工作的同学可以先不学,等面试前直接看一些题目即可

    学习路线图

    操作系统学习路线思维导图

    整体学习建议

    1)理论为主,重在理解:操作系统具有极强的理论性,学习过程中难免会感觉枯燥,因此在初学时不建议强行去背诵一些知识,跟着视频过一遍、能够描述出操作系统大概涉及哪些知识点就好(结合思维导图去学习)。在面试 / 考研前再根据自己的时间去记忆题目就好。

    2)理解算法思想:在学习操作系统内的算法(比如 CPU 进程调度、内存页面置换、磁盘调度)时,要理解每个算法的概念、特点、优势和劣势、应用场景,因为我们在程序设计时极有可能应用这些算法来解决问题,比如 LRU 算法。

    3)适当动手实践:在学习过程中,可能会接触到部分算法和源码(比如生产者 - 消费者问题),时间允许的话可以试着自己实现一遍,加深理解。

    4)善用 AI 辅助学习:遇到不理解的操作系统概念或原理,可以问 AI 工具(如 ChatGPT、DeepSeek)让它用通俗的语言解释,或者让它举个生活中的例子。更多 AI 工具推荐可以看 AI 导航。

    AI资源大全网站

    5)先概念后源码:不建议一开始就看复杂的书籍(比如《现代操作系统》、《深入理解计算机系统》等),先跟着视频过一遍概念,有了基础再去深入源码。

    知识体系

    学习重点

    • 进程管理(重中之重,面试高频)
    • 内存管理(重点,面试高频)
    • 文件管理
    • 磁盘管理
    • 设备管理

    知识点大全

    基本概念

    • 操作系统的作用
    • 操作系统的体系结构(内核概念)
    • 处理器状态(用户态、核心态)
    • 系统调用
    • 中断和异常

    进程管理【重点】

    • 进程和线程
      • 基本概念
      • 进程 / 线程状态及转换
    • CPU 进程调度算法
      • 先来先服务(FCFS)
      • 短作业优先(SJF)
      • 最短剩余时间优先(SRTN)
      • 高响应比优先(HRRN)
      • 时间片轮转
      • 优先级调度
      • 多级反馈队列
    • 进程同步和互斥
      • 信号量机制
      • 生产者 - 消费者模型
      • 读者 - 写者问题
      • 哲学家进餐问题
    • 进程通讯机制
    • 死锁
      • 死锁产生的条件
      • 死锁预防和避免
      • 死锁检测和恢复

    内存管理【重点】

    • 基本概念
      • 内存、内存管理、地址空间
    • 覆盖和交换
    • 内存分配和回收
      • 连续内存分配(单一连续分配、内存碎片、固定/动态分区分配)
      • 非连续内存分配(分段、分页、段页式存储管理)
      • 页表(二级页表、多级页表、反向页表)
      • 地址变换机构(基本、基于快表)
    • 虚拟内存
      • 基本概念、局部性原理
      • 实现(请求分段、请求分页、请求段页式)
      • 页面置换算法(最佳置换、FIFO、LRU、CLOCK等)
      • 页面分配策略

    文件管理

    • 基本概念(文件系统、文件、目录、文件描述符)
    • 文件逻辑结构和物理结构
    • 文件操作

    磁盘管理

    • 磁盘结构
    • 磁盘调度算法(FCFS、SSTF、SCAN、CSCAN)

    设备管理

    • 基本概念(I / O 设备、I / O 设备分类)
    • I / O 控制
    • 缓冲区管理

    学习路线

    本学习路线适用于所有从 0 开始学操作系统、了解操作系统核心概念、希望快速提升基础能力的同学。但如果要从事操作系统底层开发的话,这份路线还不够,需要深入理解 Linux 等操作系统的设计,并进行大量的编码练习。关于 Linux 的详细学习,可以查看 Linux 服务器学习路线。

    阶段 1:预热(可选)

    学习目标:通过轻松精简的视频或书籍来简单了解计算机、操作系统相关的概念。

    学习建议

    该阶段可跳过,或者和之后的阶段同时进行。

    在任何时候,都可以在课外时间利用一些轻松精简的视频或书籍来帮助我们简单了解计算机、操作系统相关的概念。

    学习资源

    • ⭐ 《计算机科学速成课》视频:仅观看 P 1 - 10、P 18 - 20 即可,科普向

    阶段 2:基础学习(概念)

    学习目标:了解操作系统的基本概念,对其体系结构有个全面的认识,不必纠结于源码。

    学习建议

    1)重点突出:操作系统的学习侧重于理论,主要分为六大部分:基本概念、进程管理、内存管理、文件管理、磁盘管理、设备管理。其中,最重要的是进程管理和内存管理。这两部分和我们编写程序相关(比如并发编程、死锁、内存分配),因此也是面试时的高频考点。

    2)跟着视频学习:建议跟着完整的视频教程学习,最好不要一开始就看复杂的书籍。能力很强的同学也可以跳过本阶段,直接去看下个阶段的视频教程。

    3)选择大学教授课程:对于操作系统这种经典理论,不建议看培训机构的课程(也基本没有),还是大学教授讲的课更专业严谨一些。

    学习资源

    • ⭐ 《王道计算机考研 - 操作系统》视频课:毕竟是考研课,这门课讲的非常清晰、受众广泛,哪怕不是计算机专业的同学(跨考)也能看懂。视频中老师整理了大量的思维导图,也能培养大家的体系化思维

    其他资源

    在学习某个知识点遇到问题时可以翻阅以下资料

    • 《认识操作系统》操作系统知识点梳理 PDF 提取码: 92ow
    • 《图解系统》PDF 提取码: 92ow
    • 浙江大学课程攻略共享计划【操作系统】资料:包含 PPT 课件、教材、习题解答、课程实验、自测题目、历年考卷等

    阶段 3:深入学习

    学习目标:结合源码来讲解分析操作系统的实现,并且通过一些实验加强了解。

    学习建议

    1)时间充裕再学:对于时间紧、只是想找工作的同学,本阶段可直接跳过。

    2)选一门课即可:上个阶段推荐的课程侧重于基本概念(理论知识),不涉及源码。而这个阶段推荐的课程资源更细节、同时包含了一些实验帮助大家更好地深入理解操作系统。

    3)配合书籍学习:如果想进一步巩固知识,可以在看视频的同时去阅读一些计算机经典书籍。

    4)动手做实验:看了视频教程后,如果还想进一步学习,可以跟着教程来尝试自己动手制作一个简易的操作系统(MiniOS),帮助你真正理解操作系统的设计实现。

    学习资源

    视频课程(选一门看即可,首推清华大学):

    • ⭐ 清华大学计算机操作系统原理:实验环境及源码:https://github.com/yusong-shen/mooc_os_lab
    • 南京大学操作系统原理:相关资料见该视频评论区

    经典书籍:

    • 《现代操作系统》 提取码: 92ow
    • 《深入理解计算机系统》 提取码: 92ow。对应课程视频:https://www.bilibili.com/video/av31289365
    • 《操作系统:精髓与设计原理》 提取码: 92ow

    动手制作操作系统:

    国外教程推荐 MIT 6.828 和难度相对低一些的 MIT 6.S081,这是两门经典的实验课:

    • MIT 6.828
    • MIT 6.S081:中文翻译版:https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/,B 站视频中英文字幕版:https://www.bilibili.com/video/BV19k4y1C7kA
    • 源码中文版:https://github.com/yourtion/30dayMakeOS

    GitHub 操作系统实战项目:

    • ⭐ remzi-arpacidusseau/ostep-projects:5k+ stars,配套《操作系统导论》的实战项目,包括进程调度、并发、文件系统等,包含测试框架
    • hhuOS/hhuOS:200+ stars,C++和汇编编写的小型x86操作系统,持续更新中(2025年),适合学习OS各个方面的实现
    • asterinas/asterinas:800+ stars,Rust编写的安全、快速OS内核,提供Linux兼容ABI
    • DragonOS-Community/DragonOS:900+ stars,从零开始自研内核的操作系统,兼容Linux,持续活跃更新中(2024-2025)

    阶段 4:备战面试

    学习目标:掌握操作系统高频面试题,顺利通过面试。

    学习建议

    1)重点复习:找工作前强烈建议背诵一些面试题。当然,如果你能结合自己编程的实际经验去记忆和回答就更好了。

    2)突出进程管理:操作系统面试的重点主要是进程管理 + 内存管理,进程管理又是重点中的重点。

    3)多刷面试题:使用 面试鸭 刷题,支持按公司、题型、难度筛选。

    ⭐ 操作系统面试题 - 面试鸭

    4)多看真实面经:真实面经大全,了解不同公司对操作系统的考察重点。

    更多求职干货:

    • 鱼皮的保姆级求职指南
    • 鱼皮的保姆级写简历指南
    • 编程导航的求职干货分享
    • 老鱼简历 - 写简历工具
    • 真实面经大全
    • 几百场真实面试视频
    • 1 对 1 AI 模拟面试
    • 面试题讲解视频 - 面试鸭 B 站账号

    经典面试题

    1. 进程和线程的区别?【高频】
    2. 进程调度算法有哪些?
    3. 常见的进程通信方式?
    4. 有哪些进程同步的方法?
    5. 什么是死锁,什么情况下会出现死锁(必要条件)?怎么预防和处理?【高频】
    6. 介绍常见的内存页面置换算法
    7. 什么是中断?
    8. 什么是系统调用?
    9. 操作系统如何进行内存管理?
    10. 什么是虚拟内存?
    11. 什么是局部性原理?
    12. 什么是缓冲区溢出?

    还有很多和 Linux 操作系统相关的题目,此处暂不列举。

    面试题库

    • ⭐ 操作系统面试题 - 面试鸭

    加油小伙伴们 💪🏻!

    程序员必备资源

    1)程序员学习交流圈:极客教程、实战项目、求职宝典

    2)程序员面试八股文:实习/校招/社招高频考点、企业真题解析

    3)程序员写简历神器:专业模板、丰富例句、直通面试

    4)AI 知识资源大全:前沿技术、最新 AI 资讯、提示词大全

    5)1 对 1 模拟面试:实习/校招/社招面试拿 Offer 必备