闲来无事,想把之前学习操作系统的一些知识整理下,看了几十本操作系统的书好像都忘得差不多了,最近打算自己动手来实现一个简易操作系统,主要还是为了知行合一。
我的学习之旅
为了能够转岗 WXG 所以当时在 PCG 的时候大概花了一年的时间,当时除了工作主要就是看操作系统、JAVA 虚拟机、Android 虚拟机相关的书籍。有很多记不得了,我大概推荐一些(有印象的),排序不分先后:
《编码:隐匿在计算机软硬件背后的语言》
《穿越计算机的迷雾(第二版)》
《汇编语言》
《x86汇编语言:从实模式到保护模式(第二版)》
《计算机组成原理》
《Unix环境高级编程》
《操作系统导论》
《深入理解计算机系统》
《TCP/IP详解》
《程序员的自我修养:链接、装载与库》
《Linux是怎样工作的》
《操作系统真象还原》
《30天自制操作系统》
《一个64位操作系统的设计与实现》
《Linux内核完全注释》
《Linux内核设计艺术》
《Linux内核深度解析》
当时应该还看了跟 CPU 电路相关的一些书籍,已经找不到了。初中那会读书不努力,普高考不上只能去读职业高中,我高中就是学电子电工的,所以学习硬件知识也不费什么劲。我 bilibili 也找了一些视频推荐给大家:
一个8位二进制CPU的设计和实现
x86 汇编语言
操作系统实现
后续规划
今年的计划,上半年把操作系统的代码和文章一点点补完,下半年把 Java 虚拟机的代码和文章一点点补完。我目前只是整理和学习,因此代码我只能确保能跑起来没啥问题,肯定会有一些 bug ,性能、算法、深度和广度等各个方面肯定比不上 linux。
除了工作那我就只能早上、中午、晚上、周六日来写代码和文章,不知道我顶不顶得住,也不知道有没有那么多时间,先立一个 flag,先把我的 github 的仓库先贴出来: miniOS
去年我计划是录制分享 C++ 和 OC 的视频,今年先写一年的代码先,明年我还想周末直播一点点再敲一遍, 3 年的时间应该能知行合一。bilibili 我的 C++ 视频先烂尾了。
一些心得
操作系统涉及的内容太多了,涉及硬件、编译器、编程语言、数据结构和算法,因此学习操作系统我们还是要有一个学习目标,为什么学?想学习哪些?想学到什么程度?像我是做客户端开发的,我的侧重点就不太一样,有些同学可能是做嵌入式开发的可能又不一样。
做一天和尚轻松撞一天钟,我学习操作系统主要还是为了让自己工作没有压力,虽然当时主要是为了活水 WXG。能不能快速写出技术文档,能不能快速把需求做完,写的代码有没有问题,运行速度到底快不快,出问题能不能立即反应过来,我们其实还是可以做一些思考。我做过 Android 开发做过 iOS 开发中间还做过 Win 开发,写过 Java 写过 C/C++ 写过 OC ,发现只要我们的代码是运行在操作系统上,那么本质上不会有任何区别。
这是我的来时路我记录下来,很多同学可能觉得汇编很难、C/C++ 很难,说实话我以前一直这么认为,但当我们静下心来去学习了解,发现其实并没什么技术含量,只能说以前我们不了解而已,只能说我没花时间而已。我们并没有任何原创的东西,所以并不会有任何难度,都是站在前辈的基础上看书问 AI 看 Linux 源码,其实最难的还是创新。