,估计也没有多少人会理。没有足够的财力支特也是重要一个原因,当初他们那个小组就是因为太业余,成员都还有其他的主要工作这才导致后来主要成员离开,项目夭析。
可以说,编写自己的操作系统是许毅一直的一个心愿,所以他才会花那么多时间去研究操作系统,所以他才会注意和发现这么多系统漏洞。这点和他成为一个越级黑客有着必然的联系。
Linux确实是一款不错的操作系统,因为其开源特性得到了跟多专业人士的支持,但是它在推广方面做得并不好,界面也不够友好,相对于普通用户来说,操作不够傻瓜,所以这么长时间来,一直被微软的windows系统压制得抬不起头来。
在易用性方面,许毅还是非常推崇微软的windows系统的,微软在这方面做得无疑是最好的,界面非常友好,操作也简明,就算是刚开始什么不懂的菜乌,凭借自己的小聪明也能在短时间内使用得很顺畅。
windows在图形化方面的成就是Linux系统所不能比似的,它在设计的时候,完全是站在用户的角度考虑问题,这点非常值得借鉴。
不过对于专业人士来说,实际上使用Linux的效率比windows还要高,有时候他们直接使用命令行抗行命令比用鼠标去点击图标要快上很多,因为在Linux中,shell中的命令功能都是非常强大的。另外,最吸引人的,还是他们可以自己定制自己的操作系统。
尽管许毅很喜欢Linux,但是他最终还是没有给Linux提供跨时代的关键代码,这点完全是他出于自己的私心,因为Linux发展太快,可能对他以后要着手开发的系统很不利。在卖给微软系统漏洞的时候,他也基于这个原因考虑过,不过那些漏洞对微软的内核推动作用不大,只是一些他们没注意到的安全缺陷而已,并不影响windows系统的大跨步前进。
现在,windows98出现了,许毅在考虑自己的这个计划是不是该执行了。但是最近他沉迷于研究人工智能,沉迷于自己建立的那套全新的人工智能理论体系中不能自拔,并没有多少精力花在这个上面。
说起许毅现在正在渐渐完善的人工智能理论,他现在还真有点小郁闷,因为这些研究还只是停留在理论上,还不能进行实践。最主要的原因是这个理论实际上还没有真正建立起来,剩下地基没有打好。他的这套理论的建立过程本身就违反了理论体系建立的通常规律。一般的理论休系的建立,往往是首先假设几条永远正确的公理,然后在这些公理的基础上进行发散,推导出一系列衍生的推论或定理。也就是说,它们的建立过程遵循一个从下到上的过程。但是许毅的这个理论体系所经历的切是一个从上到下的过程,即许毅首先提出了上层的一些假设,然后逐渐往下反推,寻找最底层的支撑公理。不过令许毅感到欣慰的是,他的研究暂时还没有遇到什么大的阻碍,一直在往下面进行着,到达最底部只是时间问题。
正文 第182章
许毅并不打算编写基于Linux核心代码的操作系统,因为他认为,虽然Linux遵循GPL开源协议,但实际上是存在隐蔽的知道产权陷阱的。实际上Linux的原作者LinusTonvalds始终都没有放弃对核心程序版权的要求,也就是说,只要Linus愿意,他可以在任何时间收回Linux的开放协议,将其重新变为独家的专利,事实上Linus将Linux转向GPL协议也经历了这样一个过程。这里,很明显存在一个非常重要的问题——如果有朝一日,Linus将操作系统的内核重新封闭起来,那基于那个核心的所有软件产业都得率上一个大跟头。
这并不是危言耸听,仔细分析,Linux核心的一部分被判定存在侵权的可能性的确存在。事实上,Linux的代码侵具有多种潜在的可能性,而且Linux的开发机制和代码审核流程并不像自从问世起就遭受版权问题磨练的FneeBSD等开放源代码操作系统那样严谨。
自己动手,丰衣足食,最可*的还是自己编写。
许毅知道自己一个人的能力有限,所以他要做的工作,主要是一个引导作用。就发同Linus一样,挑一个头,让大家一起参与到这个项目中来。不过目前到底有多少国人在研究这个,许毅也不清楚,不过总体估计。人数应该不会太多,而且,大多数人应该还处于一个非常低的水平,很多技术并没有掌握。他在网络上搜索了一下相关网站,中文方面几乎没有任何一个有关这类信息的网站。只有一个汇编网站稍微提到了一下这方面的资料。这也就意味着,并不是许毅现在提出这样一个项目,大家立刻就能参与到这个计划中来,更为重要的是,还兼任着一个教学地目的,培养大家的兴趣,让大家通过研究相关代码,增长这方面的知识。
和苏兰一起将波士顿玩了个遍之后,许毅再次安静了下来,他觉得这件事应该着手进行了。不能再拖。
许毅并不指望刚开始就能编出一个超越Linux或者Windows的操作系统来,他现在没有这个能力,他只是决定先做出一个实现了简单功能地操作系统,一个能够独立在裸机上运行的操作系统。
Linux系统下有一整套可以用来进行操作系统开发的工具,非常方便。许毅首先用汇编写一个Bootloaden程序。这个小程序很重要,正如其名,Boot即启动的意思。Loaden意为装载器,Linux下的bootloaden是gnub或lilo,windows则是一个名为ntldn的程序。这个程序的作用是用来把操作系统内核的二进制代码从磁盘复制到内存中(只有在内存中才能得到执行)。还用来设置一些系统初始化的信息。因为许毅打算编写的操作系统是32位地,所以它还有一个功能——将系统从16位的实模式跳转进入32位的保护模式。(电脑刚启动的时候是16痊的,被称为实模式RM)
电脑刚启动的时候,程序的指针IP是指向BIOS程序地,所以首先执行的是BIOS系统(这是一个固化在FLASH芯片中的小程序),它负责监测系统地所有资源,并把状态,如内存大小、硬盘有多少等等,存入内存中指定的位置,在BIOS的最后,它会检查所有可以启动的磁盘设备,如果找到要启动的磁盘(BIOS中的启动顺序)的第0磁道,第一个扇区地511和512字节写着0x55和0xaa数据(可启动标志)。BIOS就会将该扇区的512字节内容复制进内存的ox7c00处,并跳转到该处执行。这也就是为什么所有磁盘(包括软盘和硬盘)的第0磁道的第一扇区为启动扇区的原因,如果该扇区出现了物理损坏,那么这个磁盘将永远无法作为启动盘使用。
简单来说,bootloaden程序地作用就是充当中间联络人,将操作系统“请”到内存当中去执行。
由于许毅用的编译器是GCC,而GCC并不能直接生成16位的代码,所以许毅只能用汇编语言来编写这个bootloaden了,等机器进入32位的保护模式之后,许毅再用C语言来开发其他内核代码。
实际上,有了这个程序,就能够将系统启动了。可以在里面直接通过中断来操作显卡,例如直接往显存地址中移进去一个字母中,显示器中就会打印出这个字母,这相当于是一个最为简单的操作系统了,只不地这个操作系统能够完成的功能非常简单,只是在显示器中显示一个字母B而已。但是,这个就已经可以在裸机上成功运行了。要想复杂一点,就是另外编写内核代码,用一个跳转语句,跳到内核代码的入口地址,这样就可以进入其他操作了。(通常是一个大循环,这样除百是人工退出,不然它就会一直这样运行着)
许毅已经有这样的简单系统的编写经验,所以现在编写起来也是轻车熟路的,一路编写下来,基本上没有遇到什么大的阻碍,只是偶尔有些地方忘记了一些细节,到网络上查到了相关资料就搞定了。
只有见到实在的东西才能够调动大家的积极性。
许毅最后不但在里面实现了文件系统,还完成了最基本的图形界面,支持PS2鼠标,技能VEGA20另外还支持符合windows标准的16位BMP格式,支持标准101键盘,中英点阵字库和800*600的16位色显模式,最后,许毅甚至在里面实现了一个简单的推箱子游戏(就是一个十字型的窗口,一个上人在中间四周都是箱子)
许毅在虚拟机中运行着这个小型操作系统,四步完成那个拄箱子游戏,心中颇有成就感。
总得来说,这个操作系统已经初具雏形,文件系统、内存管理、中断调用、GDT、IDT等等全部都已经实现。
许毅在黑客学院专门新开辟了一个操作系统专区,悄悄地将这个命名为StuOSS的操作系统源代码传了上去,另外贴上一些屏幕截图。最后还详细写了一个怎么利用虚拟机来运行这个操作系统的教程。
https://www.du8.org https://www.shuhuangxs.com www.baquge.ccabxsw.net dingdianshu.com bxwx9.net
kenshu.tw pashuba.com quanshu.la
tlxsw.cc qudushu.net zaidudu.org
duyidu.org baquge.cc kenshuge.cc
qushumi.com xepzw.com 3dllc.net