,现在win98已经是完全支特USB接口了。
很多人抢在第一时间来体验这款比win98优秀很多的操作系统。不过许毅切没什么兴趣,正所谓“曾经沦海难为水除却巫山不是云”,许毅休验过比这高级得很多的操作系统。自然对这个没有兴趣了。
不管是windows还是linux。目前都在快速成长之中,许毅又想起中国国内在这个领域的发展,实在是心中永远的一个痛。
国产操作系统这个口号喊了十多年了,可是仍旧不见成果出来。后来出了个红旗Linux,可惜是基于Linux内核地,而且还做得差强人意,就算打上民族大旗都没什么人支特。里面的技术可以说跟少有创新,基本上是抄来抄去。
后来,中国863计划好不容易出了个麒麟操作系统。当时出来之后大家奔走相告,都说中国终于有了自己的操作系统,具有xx等新特性,都是自主创新地云云,可是大家还没高兴太久。随即就爆出了丑闻一麒拚操作系统被指涉嫌抄袭!网上,一个网友发表文章《麒麟操作系统内核与FreeBSD5。3内核地相似性达到了99。45%》,指出其中的很多关键代码都是将别人的开源代码经过简单的修改而拿来用的,而且还遮遮掩掩,声称这是他们自己研发的。
这件事伤了无数国产操作系统忠实支持者的心,作为投资7000万元的国家“863”软件重大专项研发成果,作为由国防科技大学、中软公司、联想公司、浪潮公司务民族恒星公司五家单位合作研制的开愿服务器操作系统,换回来地竟然只是一个基于公版开源内核的“抄袭作品”!
此事立刻在国内软件领域引起轩然大波。麒麟事件,揭开了中国开源软件投资问题的一角,国内开始对国产开源产品产生了众多质疑。同时,大家追查起来发
现,中国扶持Linux已经七年光阴,在这七年当中,中国每年投入到Linux方面的钱都有几亿人民币的规模,但是七年投资换回来什么?大家惊讶地发现,在国际Linux内核程序实际发工作,参与开发地就只有被称为中国Linux之父的龚敏一人,但是他开发的大约三千多行Linux内核代码最终也没有被采用。也就是说到那个时候为止,中国人实际上还没有写过一行Linux核代码。
麒麟事件的发生,终于让大家彻底对国产操作系统失望,其中也包括当时身为程序员的项斌。受这件事刺激,项斌还参加了网络上一个操作系统开发小组,进行过这方面的底层开发,可惜的是,这个小组内部最终出现了问题,项目刚开了个头就夭析了。
实际上,中国是有很多业余操作系统爱好者的,他们都在各自地进行着这方面的研究和开发尝试,不过由于资料的缺失和务件的制约,他们通常停留在一个比较低的水平上,编出来的系统,最多也就实现了一些简单的功能,类似于DOS操作来统。
中国不是没有人才,但缺少的只是一个施展他们才智的舞台。许毅回到这里之后,就曾经动过开发中国自己的操作系统的心思。不过最终还是没有着手进行。一来是因为他当时还有别的事情,自己的“温饱”问题还没有彻底解决,令外的原因是他那个时候并没有什么号召力,就算提出一个这样的项目,估计也没有多少人会理。没有足够的财力支特也是重要一个原因,当初他们那个小组就是因为太业余,成员都还有其他的主要工作这才导致后来主要成员离开,项目夭析。
可以说,编写自己的操作系统是许毅一直的一个心愿,所以他才会花那么多时间去研究操作系统,所以他才会注意和发现这么多系统漏洞。这点和他成为一个越级黑客有着必然的联系。
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而已。但是,这个就已经可以在裸机上成功运行了。要想复杂一点,就是另外编写内核代码,用一个跳转语句,跳到内核代码的入口地址,这样就可以进入其他操作了。(通常是一个大循环,这样除百是人工退出,不然它就会一直这样运行着)
许毅已经有这样的简单系统的编写经验,所以现在编写起来也是轻车熟路的,一路编写下来,基本上没有遇到什么大的阻碍,只是偶尔有些地方忘记了一些细节,到网络上查到了相关资料就搞定了。
只有见到实在的东西才能够调动大家的积极性。
许毅最后不但在里面实现了文件系统,还完成了最基本的图形界面,支持PS/2鼠标,技能VEGA20另外还支持符合windows标准的16位BMP格式,支