异想天开

What's the true meaning of light, Could you tell me why

第1节 引入

日期:2015-12-20 20:51:44
  
最后更新日期:2016-12-03 08:19:14
当我在读我第一次写的文档,发现了一个缺点-起承转合显得严肃。严肃的东西总给人一种难以亲近的感觉,我又想到了linus的自传名为《just for fun》,于是乎我改变了这种行文的风格。为了使读者阅读的时候体验流畅,基本上我不会停顿去修改,希望展现的是原滋原味。开始之前,你至少需要具备的知识:
1. 扎实的C语言基础;
2.使用汇编写过hell world程序。
废话少讲,切入正题吧。
当我们决定要扬帆起航时,除了内心的激动之外,我们肯定会为此做好充足准备。准备的作用就相当是一种心理效应,表明自己的虔诚,而这些可以用人品来解释。古代皇帝求雨前也要斋戒数日,呵呵,何尝不也是在利用人品啊。人品,如此重要。程序是不讲人品的,不过,似乎也可以间接反映。实现一个操作系统第一步就是搭建一个平台。老实说,我曾经纠结于此。我在哪里写我的代码,用什么编译代码,在哪里可以运行我的系统。而《自己动手写操作系统》这本书并没有讲到,当我跟着写了一点code后,对这个问题还是没有理解。一句话,没有一个明确的方向,没有一个清晰的目标。的确,自己找准自己的定位,努力实现自己的目标,不那么简单,现实中,我们更多的是当局者迷。希望本篇文档可以做一个很好的引导。我会尽力划分细的知识点,单元后有小结。但是知识点之间不可能是线性关系,所以必要时屏蔽某些当下看来并不重要的知识点,而直接给出一个结论,这里读者可以直接记下该结论,时机成熟时,会做进一步解释。同时采用积分驱动的策略,假设你的初始分数为0,掌握一个知识点,可以添加该知识点的分数,在你已经学过该知识点的情况下,犯了该知识点的错误,扣双倍的积分,第一次接触犯错误可以原谅,不扣分。呵呵,just for fun吧。
我们的目标:实现一个小型os。当你想到os时,你也许立马想到了win 7系统或者ubuntu系统。我们的目标就是做一个很小的,黑白的,命令行的os。相当于win 7的cmd或者ubantu的bash。我们的关注点在于基本理论,很多设计会尽量简单。还有一个问题,就是我们的系统是运行在哪里?这个有很多种选择,但这里的选择是用bochs虚拟机模拟。这样做的好处,开发方便,调试也方便。没错,这是我们的目标,在你脑海中,你可以清晰看到了么?
下一节 环境搭建
即将用到的知识:
linux操作系统使用经验,安装软件经验和以下命令。
tar命令-创建归档的工具,结合bzip2等压缩工具,可以创建后在压缩。
Make命令-用于处理makefile的项目编译集成工具。
知识点达标:
1. 对目录进行切换,显示,移动,改名,删除以及更改目录的拥有者(uid)和所属组(gid);
2. 挂载u盘;
3. 创建一个压缩的tar包和解压压缩的tar包;
4. 写一个简单的makefile。