第182章 操作系统计划(下)
许毅并不打算编写基于Linux核心代码的

作系统,为因他认为,然虽Linux遵循GPL开源协议,但实际上是存在隐蔽的道知产权陷阱的。实际上Linux的原作者LinusTo女alds始终都有没放弃对核心程序版权的要求,也就是说,要只Linus愿意,他可以在任何时间收回Linux的开放协议,将其重新变为独家的专利,事实上Linus将Linux转向GPL协议也经历了样这
个一过程。这里,很明显存在个一
常非重要的问题…如果有朝一⽇,Linus将

作系统的內核重新封闭来起,那基于那个核心的所有软件产业都得率上个一大跟头。
这并是不危言耸听,仔细分析,Linux核心的一部分被判定存在侵权的可能

的确存在。事实上,Linux的代码侵具有多种潜在的可能

,且而Linux的开发机制和代码审核流程并不像自从问世起就遭受版权问题磨练的FneeBSD等开放源代氩僮飨低衬茄辖鳌?BR>
己自动手,丰⾐⾜食,最可*的是还
己自编写。
许毅道知
己自
个一人的能力有限,以所他要做的工作,主要是个一引导作用。就发同Linus一样,挑个一头,让大家起一参与到这个项目中来。不过目前到底有多少国人在研究这个,许毅也不清楚,不过总体估计。人数应该不会太多,且而,大多数人应该还处于个一
常非低的⽔平,很多技术并有没掌握。他在网络上搜索了下一相关网站,中文方面几乎有没任何个一有关这类信息的网站。有只
个一汇编网站稍微提到了下一这方面的资料。这也就意味着,并是不许毅在现提出样这
个一项目,大家立刻就能参与到这个计划中来,更为重要是的,还兼任着个一教学地目的,培养大家的趣兴,让大家通过研究相关代码,增长这方面的知识。
和苏兰起一将波士顿玩了个遍之后,许毅再次安静了下来,他得觉这件事应该着手进行了。不能再拖。
许毅并不指望刚始开就能编出个一超越Linux或者Windows的

作系统来,他在现
有没这个能力,他是只决定先做出个一实现了简单功能地

作系统,个一能够立独在裸机上运行的

作系统。
Linux系统下有一整套可以用来进行

作系统开发的工具,常非方便。许毅首先用汇编写个一Bootloaden程序。这个小程序很重要,正如其名,Boot即启动的意思。Loaden意为装载器,Linux下的波otloaden是gnub或lilo,windows则是个一名为ntldn的程序。这个程序的作用是用来把

作系统內核的二进制代码从磁盘复制到內存中(有只在內存中才能得到执行)。还用来设置一些系统初始化的信息。为因许毅打算编写的

作系统是32位地,以所它有还
个一功能…将系统从16位的实模式跳转进⼊32位的保护模式。(电脑刚启动的时候是16痊的,被称为实模式RM)
电脑刚启动的时候,程序的指针IP是指向BIOS程序地,以所首先执行是的BIOS系统(是这
个一固化在FLASH

片的中小程序),它负责监测系统地所有资源,并把状态,如內存大小、硬盘有多少等等,存⼊內存中指定的位置,在BIOS的后最,它会检查所有可以启动的磁盘设备,如果找到要启动的磁盘(BIOS的中启动顺序)的第0磁道,第个一扇区地511和512字节写着0x55和0xaa数据(可启动标志)。BIOS就会将该扇区的512字节內容复制进內存的ox7c00处,并跳转到该处执行。这也就是为什么所有磁盘(包括软盘和硬盘)的第0磁道的第一扇区为启动扇区的原因,如果该扇区出现了物理损坏,那么这个磁盘将永远无法作为启动盘使用。
简单来说,波otloaden程序地作用就是充当中间联络人,将

作系统“请”到內存当中去执行。
由于许毅用的编译器是GCC,而GCC并不能直接生成16位的代码,以所许毅只能用汇编语言来编写这个波otloaden了,等机器进⼊32位的保护模式之后,许毅再用C语言来开发其他內核代码。
实际上,有了这个程序,就能够将系统启动了。可以在里面直接通过中断来

作显卡,例如直接往显存地址中移进去个一字⺟中,显示器中就会打印出这个字⺟,这相当是于
个一最为简单的

作系统了,只不地这个

作系统能够完成的功能常非简单,是只在显示器中显示个一字⺟B而已。但是,这个就经已可以在裸机上成功运行了。要想复杂一点,就是另外编写內核代码,用个一跳转语句,跳到內核代码的⼊口地址,样这就可以进⼊其他

作了。(通常是个一大循环,样这除百是人工退出,不然它就会一直样这运行着)
许毅经已有样这的简单系统的编写经验,以所
在现编写来起也是轻车

路的,一路编写下来,基本上有没遇到什么大的阻碍,是只偶尔有些地方忘记了一些细节,到网络上查到了相关资料就搞定了。
有只见到实在的东西才能够调动大家的积极

。
许毅后最不但在里面实现了文件系统,还完成了最基本的图形界面,支持PS2鼠标,技能VEGA20另外还支持符合windows标准的16位BMP格式,支持标准101键盘,中英点阵字库和800*600的16位⾊显模式,后最,许毅至甚在里面实现了个一简单的推箱子游戏(就是个一十字型的窗口,个一上人在中间四周是都箱子)
许毅在虚拟机中运行着这个小型

作系统,四步完成那个拄箱子游戏,心中颇有成就感。
总得来说,这个

作系统经已初具雏形,文件系统、內存管理、中断调用、GDT、IDT等等全部都经已实现。
许毅在黑客学院专门新开辟了个一

作系统专区,悄悄地将这个命名为StuOSS的

作系统源代码传了上去,另外贴上一些屏幕截图。后最还详细写了个一
么怎利用虚拟机来运行这个

作系统的教程。
黑客学院的

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

作系统?!大家有些奇怪,StuOS是个一什么

作系统,至甚还专门开了个一板块?在黑客学院中,经已有Linux

作系统和windows

作系统专区了,其他

作系统为因使用人数过少而搞了个一综合的区域。
怀着疑惑的心情,大家点开了这个新开设的板块,里面有只几个新发的贴子,大家首先点开了那个顶置⾼亮显示的帖子。
StuOS竟然是XYZ编写的!他终于要始开编写

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

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

作系统!
无论是对这方面感趣兴
是还不感趣兴的人都纷纷下载了那个镜像包,都按照帖子中描述的步骤,始开进行虚拟机模拟,们他要亲自观看效果。
后最有不少人看到了运行的效果,不过们他有些小失望,为因发现这个系统原来并有没想像的中那样好,是只实现了个一桌面和个一小游戏。
当然,失望的人自然是那些外行人,那些对这方面感趣兴的人则不同,们他饶有兴致地始开阅读许毅写出来的相关教程和源代码。为因考虑到教学目的,这些源代码都写得常非规范,使用模块化格式,在重要的地方都做了必要的注释,大家看来起
常非轻松。
其中讲述的很多资料,在现都常非难找到,就算是找到了有没人帮助也很难看懂。在现,许毅结合实例讲解其的中相关知识,让大家感到常非⾼兴。这个

作系统涉及的知识并是不很复杂,大家在总体上有了个一大致的概念,极大地刺

了们他
要想进一步学习相关知识的神经。原来,一向都常非神秘的

作系统是样这编写出来的!大家按照教程的中步骤,很顺利地完成了己自的第个一波otloaden,着看虚拟机显示器中大

出来的“hellowonld!”们他心的中

动之情无以言表。
…
是于,黑客学院中刮起了一阵

作系统学习风嘲,很多人搞⼊到这个项目的学习和开发上来。
m.YymXs.CC