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

前言

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

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

几句感概

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

写这个系列的缘由

由于跟着书上撸的操做系统属于小的玩具型的操做系统,因此不少涉及到操做系统比较深刻的原理都没有进行学习,因此这个系列想做为本身学习操做系统的记录,也就是对原理性的学习和结合实现一个玩具型的操做系统程序员

FragileOS

FragileOS就是以前实现的一个玩具型操做系统,以前叫这个名字是由于它真的很Fragile,代码结构很差,功能很少,原型基本是来自别人的(后面会提到)github

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

主要界面学习

正式开始

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

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

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

环境准备

  • VirtualBox 6.0计算机网络

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

  • GCC 8.1.0

  • NASM 2.07

    汇编器

  • objconv

    反汇编器

但愿可以坚持下去吧

相关文章
相关标签/搜索