我是如何学习写一个操作系统(一):开篇

2,147 阅读2分钟

前言

有人说程序员的三大浪漫分别是编译原理、操作系统和计算机网络

在之前完成了一两个小软件和网站后遇见了编译原理,也不知道为什么就傻傻的学,还写了一个从零写编译器的系列学习笔记,不过都是小打小闹,只能算作摸到了一点点入门的门槛。再后来想深入学习的时候,因为暑假在家很多书买来的话再带去学校很麻烦,就索性找了一本操作系统的书,也不懂原理就撸了一个玩具型的操作系统

几句感概

在身边同学都在埋头在各种Web方向,做出各种酷炫的东西,也深深觉得自己Web方向的技术栈太浅浅,之前利用React全家桶+Electron和node做后台的一个聊天软件,以现在来看略显幼稚,另外的Java虽然是我的第二门语言可是到现在也不算上得台面。下学期就大三了,越临近就业就越焦虑,下学期可能会更侧重应用方向吧。

写这个系列的原因

因为跟着书上撸的操作系统属于小的玩具型的操作系统,所以很多涉及到操作系统比较深入的原理都没有进行学习,所以这个系列想作为自己学习操作系统的记录,也就是对原理性的学习和结合实现一个玩具型的操作系统

FragileOS

FragileOS就是之前实现的一个玩具型操作系统,之前叫这个名字是因为它真的很Fragile,代码结构不好,功能不多,原型基本是来自别人的(后面会提到)

代码在github上已经分享出来了:FragileOS

主要界面

正式开始

这个学习笔记可能用到的有四本书:

  • 《x86汇编语言:从实模式到保护模式》
  • 《操作系统:精髓与设计原理》
  • 《OrangeS:一个操作系统的实现》
  • 《30天自制操作系统》

第一本和第三本第四本在之前实现那个玩具型操作系统起了很大的作用,但是第三本只看了一点,第二本则是根据别人的推荐来的。所以战线很长很长,希望能坚持下来

环境准备

  • VirtualBox 6.0

    一个开源的虚拟机,开发的操作系统就运行在这之上

  • GCC 8.1.0

  • NASM 2.07

    汇编器

  • objconv

    反汇编器

希望能够坚持下去吧