第182章 操作系统计划(下)

许毅并不打算编写基于linux核心代码的操作系统,因为他认为,虽然linux遵循gpl开源协议,但实际上是存在隐蔽的知识产权陷阱的。实际上,linux的原作者linustorvalds始终都没有放弃对核心程序版权的要求,也就是说,只要linus愿意,他可以在任何时间收回linux的开放协议,将其重新变为独家的专利。或者,他完全有自由随时修正软件的许可证条款,将一些限制写入协议中,事实上linus将linux转向gpl协议也经历了这样一个过程。这里,很明显地存在一个非常重要的问题――如果有朝一日,linus将操作系统的内核重新封闭起来,那基于那个核心的所有软件产业都得摔上一个大跟头。

这并不是危言耸听,仔细分析,linux核心的一部分被判定存在侵权的可能性的确存在。事实上,linux的代码侵权具有多种潜在的可能性,而且linux的开发机制和代码审核流程并不像自从问世起就遭受版权问题磨练的freebsd等开放源代码操作系统那样严谨。

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

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

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

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

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

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

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

由于许毅用的编译器是gcc,而gcc并不能直接生成16为的代码,所以许毅只能用汇编语言来编写这个bootloader了,等机器进入32位的保护模式之后,许毅再用c语言来开发其他内核代码。

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

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

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

许毅最后不但在里面实现了文件系统,还完成了最基本的图形界面,支持ps/2鼠标,支持13800100.com 另外还支持符合windows标准的16为bmp格式,支持标准101键盘,中英点阵字库和800600的16为色显模式,最后,许毅甚至在里面实现了一个简单的推箱子游戏(就是一个十字型的窗口,一个小人在中间四周都是箱子)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

删除 第183章 类人智能

第183章 类人智能

stuos系统的发展方向是“在内核上按照国际规范支持双字节,提供gui和命令行模式下两种中文支持环境,一个彻底的中文os如果有可能,则可以兼容unix/linux和windows的文件格式,可以不加修改地运行至少是大多数已经存在的windows和unix/linux软件像win nt 一样提供完全的gui界面,最大限度地简化操作”。

它仍然是开源的,遵守gpl协议,这样做是为了让这个项目更好地发展起来着想,只有开源才能吸引到更多的人投入到这个操作系统的开发上来。同时,这也符合黑客共享、免费和自由的精神。

事实上,许毅始终都没有打算过将这个操作系统商业化,他发起这个项目,目的就是为了培养人才,积累技术。“stu”可以理解为“study”和“student”,即这个操作系统本身就是为了教学目的,是一个学习型操作系统。

在stuos公布之后,引起了国际上很多人的关注,他们纷纷猜测,xyz这次又有什么大动作了?难道真的被他搞出来一个gui操作系统?有了之前的经验,就算真的搞出来一个功能强大的操作系统,大家在心里上也能接受。于是,他们到黑客学院将源代码下载下来,然后仔细研读,结果却令那些内行人大为失望。这根本就没有什么技术含量嘛!用到的技术都是一些众所周知的基本技术,唯一有点看头的仅仅是里面支持中文汉字的特性。那些高手对这个项目真的有些不屑,在他们看来,这感觉就是小孩子的玩物,他们在学习技术的早期就已经玩过了,现在已经抛到一边,研究更加高级的技术去了。所以国外的那些高手大部分都是凑了个热闹,后来对此就没再关心了。

真正关心这个项目的还是中国的技术人员。这个项目在提出的初期本来就具有民族性质了,也无怪乎别人不怎么热心。但身为中国的技术人员,他们对这件事是绝对支持的。可以说,编写中国自己的操作系统是很多人的一个梦想,曾经年少时都为之疯狂过、努力过、无奈过。有人默默研究,发现自己一个人的力量实在有限,于是到网络上寻求帮助,但响应者甚少。主要原因是菜鸟觉得这个技术太复杂太高深,只能站在外围摇旗呐喊。高手则往往有自己的计划,他们自己也在做同样的事情,不愿放弃自己的项目转而去支持别人的项目。于是,大家都在重复劳动,碰到问题得不到解决,老是在原地踏步,最终导致项目夭折。

现在已经不像是以前那样,名不见经传的linus公布一个实现了简单功能的操作系统就能得到全世界的高手的支持,现在很多技术都公开了,甚至有专门的教程,入门容易了,大家发现,原来基本的也就那么回事,于是便开始自己动手编写自己的os,可是往往只能实现几个简单的功能就再也进行不下去了。入门容易,要想真正发展起来却是难上加难,这就是操作系统编写领域的现状。

所以说,要想发起一个这样的项目并得到大家的支持,发起者一定要有实力,有名气,不然还真没多少人会来鸟你。

无疑地,许毅已经具备了这两个条件,实力摆在那,名气就更不用说,上次在mit和0day的代表一战,他已经彻底成为中国计算机技术方面的领袖人物。

可以说,许毅现在随便抛出一个什么项目,绝对会有大部分人会无条件地支持,而不会去管这个项目到底是什么内容。更别说操作系统这么大的一个项目了。

所以说,stuos公布之后,这个版块立刻成为黑客学院最热门的版块之一,每天n多人发帖求教这方面的知识。许毅在刚开始的时候都耐心地向大家解释着有关方面的知识,并且还会向大家推荐要想看懂这部分代码需要掌握哪些知识,看哪些资料和书籍。

这个os的代码最初只有大约六千多行,设计的知识也不是很复杂,所以几天之后,就有人已经将源代码研究透彻,掌握了其中的关键算法,许毅随即将他们提为版主,让他们帮助自己回答新人的一些问题。另外,stuos代码编写小组也建立起来,经过许毅亲自把关,将真正有心、有潜力的成员吸收为小组成员,并且将后续的编写工作渐渐交到他们手中,直到最后他将这方面的工作全部移交完毕,让这个项目进入一种良性循环的独立运转状态,就算没有他的参与,他们也能健康而顺利地将这个项目进行下去。

终于可以松口气了,许毅欣慰地看着这个项目朝着预定的目标发展着,大感满意。心想看来名气大有时候也是一件好事,可以做到很多别人做不到的事情。

接下来,许毅终于又可以把精力放在人工智能的研究上来了。他最近决定将自己的这套理论命名为“类人智能”,以此来区别现在国际上流行的“人工智能”。

什么是人工智能?或者说现在的人工智能是怎么定义的?在这个概念上,研究人工智能的人各有自己的理解,他们都用自己的方法为它定义,但是这些定义都有着一个相同的特点――他们的人工智能把目标定位于做出一个和人类的智能有点像的东西,而不是完全模拟。也就是说,通常的研究只是部分地对人类的智能进行研究。

最早出现的人工智能是逻辑推理系统,它证明了著名的四色定理,它的原理就是把数理逻辑推理过程看成是思维方式,编程运行,以此作为人工智能。但数理逻辑推理仅仅是人类思维逻辑中形式逻辑的一种形式,只是人类智能的很小的一个组成部分。后来专家系统兴起了,以数理逻辑为基础,加入专家们的某些专业经验便成了专家系统。然而经验也只是人类作为判断依据的一种形式。再后来,人工神经网络大行其道,它的奇特之处在于,人们并不能确切的知道在解决问题过程中,神经网络是如何干的?但是问题确实就解决了。这与逻辑推理系统,系统的运行全靠人编程序的控制大大不同。但是认真地分析人工神经网络,它既不能实现人脑海量神经元的网络的模拟,又不能使这个网络产生分析、归纳、抽象这类能力。它所津津乐道的不过是一个分类。因此它也只是搞了一点像智能的东西而已。

以后的计算机学习理论、自然语言理解等等等等,研究的东西都只是人类智能的一部分,而不是整体。这样,问题就来了,我们仅仅研究人类智能的某一小部分功能,能够实现像人类智能一样的智能吗?许毅对此深表怀疑。从局部研究这些人工智能确实能够为人类做出贡献,制造出更方便的工具为人类服务,但是要想凭借这些理论来创造出和人类一样或者相似的智能来,或许本身就是一个错误。这是定位的错误,大家研究的起点就错了。

经过这么长时间的思考,许毅的理论焦点已经集中到这个问题上了,所以为了将自己的理论和传统的人工智能区别开来,他将其命名为“类人智能”,意为和人类智能非常相近的人工智能,而不是传统的那些和人类智能有点像的智能。

Prev | Next
Pg.: 1 ... 97 98 99 100 101 102 103 104 105 106 107 ... 139


Back to home | File page

Subscribe | Register | Login | N