重生小说网 > 科幻小说 > 黑客传说 > 第182章 操作系统计划(下)
    许毅并不打算编写基于linux核心代码的操作系统因为他认为虽然linux遵循gpl开源协议但实际上是存在隐蔽的知道产权陷阱的。实际上linux的原作者linustonva1ds始终都没有放弃对核心程序版权的要求也就是说只要linus愿意他可以在任何时间收回linux的开放协议将其重新变为独家的专利事实上linus将linux转向gpl协议也经历了这样一个过程。这里很明显存在一个非常重要的问题----如果有朝一日linus将操作系统的内核重新封闭起来那基于那个核心的所有软件产业都得率上一个大跟头。

    这并不是危言耸听仔细分析linux核心的一部分被判定存在侵权的可能性的确存在。事实上linux的代码侵具有多种潜在的可能性而且linux的开机制和代码审核流程并不像自从问世起就遭受版权问题磨练的fneebsd等开放源代氩僮飨低衬茄辖鳌?br>

    自己动手丰衣足食最可*的还是自己编写。

    许毅知道自己一个人的能力有限所以他要做的工作主要是一个引导作用。就同linus一样挑一个头让大家一起参与到这个项目中来。不过目前到底有多少国人在研究这个许毅也不清楚不过总体估计。人数应该不会太多而且大多数人应该还处于一个非常低的水平很多技术并没有掌握。他在网络上搜索了一下相关网站中文方面几乎没有任何一个有关这类信息的网站。只有一个汇编网站稍微提到了一下这方面的资料。这也就意味着并不是许毅现在提出这样一个项目大家立刻就能参与到这个计划中来更为重要的是还兼任着一个教学地目的培养大家的兴趣让大家通过研究相关代码增长这方面的知识。

    和苏兰一起将波士顿玩了个遍之后许毅再次安静了下来他觉得这件事应该着手进行了。不能再拖。

    许毅并不指望刚开始就能编出一个越linux或者indos的操作系统来他现在没有这个能力他只是决定先做出一个实现了简单功能地操作系统一个能够独立在裸机上运行的操作系统。

    linux系统下有一整套可以用来进行操作系统开的工具非常方便。许毅先用汇编写一个boot1oaden程序。这个小程序很重要正如其名boot即启动的意思。loaden意为装载器linux下的boot1oaden是gnub或1i1oindos则是一个名为nt1dn的程序。这个程序的作用是用来把操作系统内核的二进制代码从磁盘复制到内存中(只有在内存中才能得到执行)。还用来设置一些系统初始化的信息。因为许毅打算编写的操作系统是32位地所以它还有一个功能----将系统从16位的实模式跳转进入32位的保护模式。(电脑刚启动的时候是16痊的被称为实模式rm)

    电脑刚启动的时候程序的指针ip是指向bios程序地所以先执行的是bios系统(这是一个固化在flash芯片中的小程序)它负责监测系统地所有资源并把状态如内存大小、硬盘有多少等等存入内存中指定的位置在bios的最后它会检查所有可以启动的磁盘设备如果找到要启动的磁盘(bios中的启动顺序)的第o磁道第一个扇区地511和512字节写着ox55和oxaa数据(可启动标志)。bios就会将该扇区的512字节内容复制进内存的ox7coo处并跳转到该处执行。这也就是为什么所有磁盘(包括软盘和硬盘)的第o磁道的第一扇区为启动扇区的原因如果该扇区出现了物理损坏那么这个磁盘将永远无法作为启动盘使用。

    简单来说boot1oaden程序地作用就是充当中间联络人将操作系统“请”到内存当中去执行。

    由于许毅用的编译器是gcc而gcc并不能直接生成16位的代码所以许毅只能用汇编语言来编写这个boot1oaden了等机器进入32位的保护模式之后许毅再用netbsp;实际上有了这个程序就能够将系统启动了。可以在里面直接通过中断来操作显卡例如直接往显存地址中移进去一个字母中显示器中就会打印出这个字母这相当于是一个最为简单的操作系统了只不地这个操作系统能够完成的功能非常简单只是在显示器中显示一个字母b而已。但是这个就已经可以在裸机上成功运行了。要想复杂一点就是另外编写内核代码用一个跳转语句跳到内核代码的入口地址这样就可以进入其他操作了。(通常是一个大循环这样除百是人工退出不然它就会一直这样运行着)

    许毅已经有这样的简单系统的编写经验所以现在编写起来也是轻车熟路的一路编写下来基本上没有遇到什么大的阻碍只是偶尔有些地方忘记了一些细节到网络上查到了相关资料就搞定了。

    只有见到实在的东西才能够调动大家的积极性。

    许毅最后不但在里面实现了文件系统还完成了最基本的图形界面支持ps/2鼠标技能vega2o另外还支持符合indos标准的16位bmp格式支持标准1o1键盘中英点阵字库和8oo*6oo的16位色显模式最后许毅甚至在里面实现了一个简单的推箱子游戏(就是一个十字型的窗口一个上人在中间四周都是箱子)

    许毅在虚拟机中运行着这个小型操作系统四步完成那个拄箱子游戏心中颇有成就感。

    总得来说这个操作系统已经初具雏形文件系统、内存管理、中断调用、gdt、idt等等全部都已经实现。

    许毅在黑客学院专门新开辟了一个操作系统专区悄悄地将这个命名为stuoss的操作系统源代码传了上去另外贴上一些屏幕截图。最后还详细写了一个怎么利用虚拟机来运行这个操作系统的教程。

    黑客学院的操作系统板块悄悄开张了事前没有任何通知。大家也已经习惯了这样在以前那些后来增加的板块都是这样开张的。看到新板块大家都表现出了极大的兴趣因为每次开始一个新版块都会有新的东西出来。前两次的板块还分了两个分站出去这次又会怎么样呢?

    stuos操作系统?!大家有些奇怪stuos是一个什么操作系统甚至还专门开了一个板块?在黑客学院中已经有linux操作系统和indos操作系统专区了其他操作系统因为使用人数过少而搞了一个综合的区域。

    怀着疑惑的心情大家点开了这个新开设的板块里面只有几个新的贴子大家先点开了那个顶置高亮显示的帖子。

    stuos竟然是xyz编写的!他终于要开始编写操作系统了吗?!

    大家在惊讶之余却又理所当然。实际上这个问题已经被很多人提出过了。现在黑客学院几乎集中了全国的优秀的计算机人才早就该组织一个这样的项目了编写中国自己的操作系统。

    大家看到了帖子中的屏幕截图显然被那些华丽的效果给震住了他们没想到xyz不声不响的就弄出了个图形操作系统!

    无论是对这方面感兴趣还是不感兴趣的人都纷纷下载了那个镜像包都按照帖子中描述的步骤开始进行虚拟机模拟他们要亲自观看效果。

    最后有不少人看到了运行的效果不过他们有些小失望因为现这个系统原来并没有想像中的那样好只是实现了一个桌面和一个小游戏。

    当然失望的人自然是那些外行人那些对这方面感兴趣的人则不同他们饶有兴致地开始阅读许毅写出来的相关教程和源代码。因为考虑到教学目的这些源代码都写得非常规范使用模块化格式在重要的地方都做了必要的注释大家看起来非常轻松。

    其中讲述的很多资料现在都非常难找到就算是找到了没有人帮助也很难看懂。现在许毅结合实例讲解其中的相关知识让大家感到非常高兴。这个操作系统涉及的知识并不是很复杂大家在总体上有了一个大致的概念极大地刺激了他们想要进一步学习相关知识的神经。原来一向都非常神秘的操作系统是这样编写出来的!大家按照教程中的步骤很顺利地完成了自己的第一个boot1oaden看着虚拟机显示器中大迎出来的“he11oon1d!”他们心中的激动之情无以言表。

    ……

    于是黑客学院中刮起了一阵操作系统学习风潮很多人搞入到这个项目的学习和开上来。