操作系统实战 45 讲
彭东
网名 LMOS,Intel 傲腾项目关键开发者
65203 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 60 讲
尝尝鲜:从一个Hello到另一个Hello (2讲)
特别放送 (1讲)
操作系统实战 45 讲
15
15
1.0x
00:00/11:00
登录|注册

开篇词 | 为什么要学写一个操作系统?

讲述:陈晨大小:10.05M时长:11:00
通过专栏带领学习
理论基础与实践并重
独立开发操作系统
从C教程到操作系统
运维、测试
高性能计算
前端性能调优
后端工程师
对运维、测试同学的重要性
对各种工程师的应用
操作系统是所有软件的基础
内存管理、进程管理、I/O管理、文件管理、通信管理
从固件程序手中抢过计算机并初始化
同步机制:信号量与自旋锁
CPU、MMU、内存、Cache
对国家信息安全的重要性
涉及的核心知识
职业生涯的长远帮助
对Linux内核更深入的理解
学会系统级别的软件编程技巧
提升操作系统架构设计能力
拥有自己的操作系统内核
逐步讲解各部门的实现过程和细节
从了解计算机资源开始
学习方法
作者学习经历
应用场景
重要性
独立开发两套操作系统内核
专注于操作系统内核研发
内核层面开发工作
《深度探索嵌入式操作系统》作者
Intel 傲腾项目开发者
网名LMOS
彭东
对国家信息安全的重要性
涉及的核心知识
职业生涯的长远帮助
对Linux内核更深入的理解
学会系统级别的软件编程技巧
提升操作系统架构设计能力
拥有自己的操作系统内核
组合部门形成操作系统
建设中枢的各级部门
夺权
设计基本法
了解计算机资源
学习成果
课程安排
操作系统很难,我能学得会么?
每个工程师都有必要学好操作系统吗?
作者经历
作者介绍
你能获得什么?
课程怎么安排的?
为什么要学写一个操作系统?

该思维导图由 AI 生成,仅供参考

你好,我是彭东,网名 LMOS,欢迎加入我的专栏,跟我一起开启操作系统的修炼之路。
先来介绍一下我自己。我是 Intel 傲腾项目开发者之一,也是《深度探索嵌入式操作系统》这本书的作者。
我曾经为 Intel 做过内核层面的开发工作,也对 Linux、BSD、SunOS 等开源操作系统,还有 Windows 的 NT 内核很熟悉。这十几年来,我一直专注于操作系统内核研发。
LMOS(基于 x86 平台支持多进程、多 CPU、虚拟化等技术的全 64 位操作系统内核)跟 LMOSEM(基于 ARM 处理器平台的嵌入式操作系统内核)是我独立开发的两套全新的操作系统内核,其中 LMOS 的代码规模达到了数十万行,两个系统现在仍在更新。
当时是基于兴趣和学习的目的开始了这两套操作系统,在这个过程中,我遇到了各种各样的技术问题,解决了诸多疑难杂症,总结了大量的开发操作系统的方法和经验。非常希望能在这个专栏与你一起交流。

每个工程师都有必要学好操作系统吗?

经常会有同学问我这样一些问题:我是一个做应用层开发的工程师,有必要学习操作系统吗?我的日常工作中,好像用不到什么深奥的操作系统内核知识,而且大学时已经学过了操作系统课程,还有必要再学吗?
对于这些问题,我的答案当然是“有必要”。至于理由么,请听我慢慢为你道来。
你是否也跟我一样,曾经在一个数千万行代码的大项目中茫然失措?一次次徘徊在内存为什么会泄漏、服务进程为什么会 dang 掉、文件为什么打不开等一系列“基础”问题的漩涡中?
你是否惊叹于 Nginx 的高并发性?是不是感觉 Golang 的垃圾回收器真的很垃圾?除了这样的感叹,你也许还好奇过这样一些问题:MySQL 的 I/O 性能还能不能再提升?网络服务为什么会掉线?Redis 中经典的 Reactor 设计模式靠什么技术支撑?Node.js 的 I/O 模型长什么模样……
如果你也追问过上面的这些问题,那这会儿我也差不多可以给充满求知欲的你指一条“明路”了。这些都将在后面的学习中,找到答案。

为什么说操作系统很重要?

首先我们都知道,操作系统是所有软件的基础,所有上层软件都要依赖于操作系统提供的各种机制,才能运行。
而我在工作中也认识了很多技术大牛,根据我的观察,他们的基本功往往十分扎实,这对他们的架构视野、技术成长都十分有帮助。
如果你是后端工程师,在做高性能服务端编程的时候,内存、进程、线程、I/O 相关的知识就会经常用到。还有,在做一些前端层面的性能调优时,操作系统相关的一些知识更是必不可少。
除了 Web 开发,做高性能计算超级计算机的时候,操作系统内核相关的开发能力也至关重要。其实,即使单纯的操作系统内核相关的开发能力,对于工程师来说也是绕不过的基本功。
对于运维、测试同学,你要维护和测试的任何产品,其实是基于操作系统的。比如给服务配置多大的内存、多大的缓存空间?怎样根据操作系统给出的信息,判断服务器的问题出现在哪里。随着你对操作系统的深入理解和掌握,你才能透过现象看本质,排查监控思路也会更开阔。
除了工作,操作系统离我们的生活也并不遥远,甚至可以说是息息相关。要知道,操作系统其实不仅仅局限于手机和电脑,你的智能手表、机顶盒、路由器,甚至各种家电中都运行着各种各样的操作系统。
可以说,操作系统作为计算机的灵魂,眼前的工作、日常的生活,甚至这个行业未来的“诗与远方”都离不开它。

操作系统很难,我能学得会么?

但即使是大学时期就学过操作系统的同学,也可能会感觉学得云里雾里。更别说非科班的一些人,难度更甚,甚至高不可攀。那为什么我这么有信心,给你讲好操作系统这门课呢?这还要从我自己的学习经历说起。
跟许多人一样,我看的第一本 C 教程就是那本“老谭 C”。看了之后,除了能写出那个家喻户晓的“hello world”程序,其它什么也干不了。接着我又开始折腾 C++、Java,结果如出一辙,还是只能写个“hello world”程序。
还好我有互联网,它让我发现了数据结构与算法,经过一番学习,后来我总算可以写一些小功能的软件了,但或许那根本就称不上功能。既然如此,我就继续折腾,继续学习微机原理、汇编语言这些内容。
最后我终于发现,操作系统才是我最想写的软件。我像着了魔一样,一切操作系统、硬件层相关的书籍都找来看。
有了这么多的“输入”,我就想啊,既然是写操作系统,为什么不能把这些想法用代码实现出来,放在真正的计算机上验证一下呢?
LMOS 的雏形至此诞生。从第一行引导代码开始,一次又一次代码重构,一次又一次地面对莫名的死机而绝望,倒逼我不断改进,最终才有了现在的 LMOS。因为一个人从零开始,独立开发操作系统这种行为有点疯狂,我索性就用 LMOS(liberty,madness,operating,system)来命名了我的操作系统。
经过我这几年的独立开发,现在 LMOS 已经发布了 8 个测试版本。先后从 32 位单 CPU 架构发展到 64 位多 CPU 架构,现在的 LMOS 已经是多进程、多线程、多 CPU、支持虚拟内存的 x86_64 体系下的全 64 位操作系统内核,代码量已经有 10 万多行了
后来,我又没忍住自己的好奇心,写了个嵌入式操作系统——LMOSEM。由于有了先前的功底,加上 ARM 体系很简单,所以我再学习和实现嵌入式操作系统时,就感觉驾轻就熟了。
经过跋山涉水,我再回头来看,很容易就发现了为什么操作系统很难学。
操作系统需要你有大量的知识储备,但是现在大多的课程、学习资料,往往都是根据目前已有的一些操作系统,做局部解读。所以,我们学的时候,前后的知识是无法串联在一起的。结果就会越看越迷惑,不去查吧,看不懂,再去搜索又加重了学习负担,最后只能遗憾放弃。
那怎样学习操作系统才是最高效的呢?理论基础是要补充的,但相对来说,实践更为重要。我认为,千里之行还得始于足下。
所以,通过这个专栏,我会带你从无到有实现一个自己的操作系统。
我会使用大量的插图代码和风趣幽默的段子,来帮助你更好地理解操作系统内核的本质。同时在介绍每个内核组件实现时,都会先给你说明白为什么,带着你基于设计理解去动手实现;然后,再给你详细描述 Linux 内核对应的实现,做前后对比。这样既能让你边学边练,又能帮你从“上帝视角”审视 Linux 内核。

我们课程怎么安排的?

操作系统作为计算机王国的权力中枢,我们的课程就是讲解如何实现它。
为此,我们将从了解计算机王国的资源开始,如 CPU、MMU、内存和 Cache。其次要为这个权力中枢设计基本法,即各种同步机制,如信号量与自旋锁。接着进行夺权,从固件程序的手中抢过计算机并进行初始化,其中包含初始化 CPU、内存、中断、显示等。
然后,开始建设中枢的各级部门,它们分别是内存管理部门、进程管理部门、I/O 管理部门、文件管理部门、通信管理部门。最后将这些部门组合在一起,就形成了计算机王国的权力中枢——操作系统。
操作系统课程图解
我们的课程就是按照上述逻辑,依次为你讲解这些部门的实现过程和细节。每节课都配有可以工作的代码,让你能跟着课程一步步实现。你也可以直接使用我提供的代码一步步调试,直到最终实现一个基于 x86 平台的 64 位多进程的操作系统——Cosmos
操作系统核心子部门

你能获得什么?

走这样一条“明路”,一步一个脚印,最终你会到达这样一个目的地:拥有一个属于自己的操作系统内核,同时收获对 Linux 内核更深入的理解。
学完这门课,你会明显提升操作系统架构设计能力,并且可以学会系统级别的软件编程技巧。我相信,这对你拓展技术深度和广度是大有裨益的。之后你在日常开发中遇到问题的时候,就可以尝试用更多维度的能力去解决问题了。
同时,由于操作系统内核是有核心竞争力的高技术含量软件,这能给你职业生涯的成长带来长远的帮助。如今,在任何一家中大型互联网公司都使用大量的 Linux 服务器。
操作系统相关的内容,已经成为你涨薪、晋升的必考项,比如 Linux 内核相关的技术,中断、I/O、网络、多线程、并发、性能、内存管理、系统稳定性、文件系统、容器和虚拟化等等,这些核心知识都来源于操作系统。
而跳出个人,从大局观出发的话,计算机作为 20 世纪以来人类最伟大的发明之一,已经深入人们生活的方方面面,而计算机系统作为国家级战略基础软件,却受制于人,这关系到整个国家的信息安全,也关系到互联网信息行业以及其它相关基础行业的前途和未来。
而要改变这一困局,就要从培养技术人才开始。对于我们工程师来说,树高叶茂,系于根深,只有不断升级自己的认知,才能让你的技术之路行稳致远。
下面,我给出一个简化的操作系统知识体系图,也是后面课程涉及到的所有知识点。尽管图中只是最简短的一些词汇,但随着课程的展开,你会发现图中的每一小块,都犹如一片汪洋。
现在让我们一起带着好奇,带着梦想,向星辰大海进发!
课程交流群点这里加入。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

学习操作系统对工程师至关重要,LMOS的专栏将带领读者从零开始实现一个基于x86平台的64位多进程操作系统。通过学习,读者将拥有自己的操作系统内核,提升操作系统架构设计能力,学会系统级别的软件编程技巧,深入理解Linux内核。此外,操作系统相关知识已成为涨薪、晋升的必考项,对个人职业生涯和国家信息安全都具有重要意义。LMOS的课程将涵盖操作系统知识体系图中的所有知识点,为读者提供系统学习操作系统的机会,让他们能够掌握实际操作系统开发的技能。

2021-05-10503人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《操作系统实战 45 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(194)

  • 最新
  • 精选
  • ARK
    置顶
    学校这学期学了操作系统,感觉只会纸上写,不能在计算机中实现.现在暑假跟着大佬学习一波!

    作者回复: 纸上写 也不错

    2021-07-10
    7
  • snailsong
    置顶
    求大神带飞哇,我一个小白就会点c和c++,有点os方面的理论基础,能上手嘛,感觉太硬怕啃不动

    编辑回复: 有C语言基础你的压力不会大的,加油~

    2021-05-12
    2
    14
  • SS
    置顶
    会不会讲些常见的驱动?感觉工作半年了只会调几个参数,背后的原理是一窍不通😞😞

    作者回复: 有的 有的

    2021-05-11
    8
  • 超级励辰
    置顶
    刚刚转行到操作系统 向着星辰大海出发吧

    作者回复: 欢迎加入谢谢,加油!

    2021-05-11
    9
  • 宏典
    置顶
    这是基于x86架构的吧,x86体系结构相关的不熟影响大吗? 从事嵌入式领域,接触的都是arm riscv这些。 谢谢。

    作者回复: 影响不大

    2021-05-11
    2
    10
  • 7oty
    置顶
    有github地址吗?关注一波

    编辑回复: 7oty你好,LMOS考虑到Github有时候不能正常访问,所以放到了国内开源项目的托管网站Gitee上,链接:https://gitee.com/lmos/cosmos

    2021-05-11
    4
    76
  • 吴小智
    置顶
    才45讲,够吗

    作者回复: 你好,够了,这个篇幅下实现一个自己的可运行操作系统是足够的

    2021-05-10
    3
    46
  • 乡村爱情代言人-刘能
    置顶
    老早就在想学习相光知识,请问零基础能学吗

    作者回复: 你好,你若有C语言基础 将毫无压力

    2021-05-10
    6
    7
  • zhanyd
    上车了,哈哈,老师能推荐点教材或学习资料吗?

    编辑回复: 欢迎加入学习,跟着课程循序渐进学习就好,也欢迎多多留言活动。 如果有余力,资料还可以参考这些。 1 王爽老师的《汇编语言》 2 李忠老师的《X86汇编语言:从实模式到保护模式》 3《计算机组成与设计:软硬件接口》 4 《UNIX传奇:历史与回忆》(兴趣拓展向)

    2021-05-14
    11
    33
  • 陈诚
    个人觉得这种动手实践的小OS内核特别有助于知其所以然,而单纯分析现有OS,很容易陷入知其然。还是要从设计的角度去理解,不然就像逆向工程,从代码倒推设计意图,效率低下且痛苦

    作者回复: 是的 你说的非常正确,这种痛苦我就经历过

    2021-05-11
    3
    28
收起评论
大纲
固定大纲
每个工程师都有必要学好操作系统吗?
为什么说操作系统很重要?
操作系统很难,我能学得会么?
我们课程怎么安排的?
你能获得什么?
显示
设置
留言
99+
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部