操作系统课程设计60800new_第1页
操作系统课程设计60800new_第2页
操作系统课程设计60800new_第3页
操作系统课程设计60800new_第4页
操作系统课程设计60800new_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Harbin Institute of Technology at Weihai操作系统课程设计报告设计题目: 自己动手写操作系统 院 系: 计算机科学与技术学院 班 级: 0504101 学 号: 050410126 设 计 者: 安文龙 哈尔滨工业大学(威海)二零零八年七月1II哈尔滨工业大学(威海)课程设计报告(论文)1设计目标:1.在PC机上安装虚拟机,在虚拟机上在安装Red Hat Linux软件。2.制作一个小型操作系统2参考书目:自己动手写操作系统作者:于渊出版社:电子工业出版社。下文中所提到的书除特别说明,都为这本自己动手写操作系统。3.设计过程3.1.1 搭建虚拟机 首先,创

2、建虚拟机: 自定义(Custom)继承(Legacy,这样生成的虚拟机可以使用低版本的VM打开),Linux(操作系统种类,选Other Linux 2.6.x kernel),指定虚拟机名称以及在硬盘上存放的路径,指定虚拟机内存大小,虚拟机使用的网络类型(NAT,装完后直接获得IP),IO控制器(默认即可),创建虚拟磁盘,选择虚拟磁盘类型IDE,虚拟磁盘容量给出虚拟磁盘文件名,点击完成开始创建虚拟磁盘并分配空间,这个过程需要几分钟的时间,结束后完成创建新的虚拟机的过程其次,对虚拟机的磁盘进行分区3.1.2 安装Red Hat Linux 下载Red Hat 9.0,在虚拟机中安装。如图示:安

3、装过程中注意选择系统语言,时区以及所需安装的软件包等内容。3.2.1环境搭建万事开头难,回想一个月前我刚刚学习LINUX内核知识,每一步都是那么的难走。首先是开发环境。按书中所说,在硬件方面,一台计算机(有软驱),空白软盘。现在(2006-10-12)看看自己周围,想找一个有软驱的电脑还真是不容易,不过即然有虚拟光驱的存在,想找找虚拟软驱也不会有什么难的。vFloppyV1.5这就是一款虚拟软驱的软件。软件,汇编编译器选择NASM,可在/中搜索并下载到。其它工具在书附光盘中有提供,以后使用中再一点点学。3.2.2“10分钟完成的操作系统”-org07c

4、00h;告诉编译器程序加载到7c00处movax,csmovds,axmoves,axcallDispStr;调用显示字符串例程jmp$;无限循环DispStr:movax,BootMessagemovbp,ax;ES:BP=串地址movcx,16;CX=串长度movax,01301h;AH=13,AL=01hmovbx,000ch;页号为0(BH=0)黑底红字(BL=0Ch,高亮)movdl,0int10h;10h号中断retBootMessage:dbHello,OSworld!times510-($-$)db0;填充剩余空间,使生成的二进制代码恰好为512字节dw0xaa55;结束标志-

5、也许自信心就是这么建立起来的:我用书中提供的一个名为FloppyWriter的工具把这段代码编译并拷贝到软盘(镜像)中,并通过虚拟软驱启动电脑。计算机没有像以往一样提示我插入系统启动盘,而是显示了红色的“Hello,OSworld!”。我兴奋不已,于是重新回到了Windows下面,将这段代码改了一下:BootMessage:dbSoloisthebest!哈哈,第一步走的很顺利,一个有我自己属名的计算机引导盘。虽然,它看上去还什么都做不了。这一小段代码怎么可能是会是一个“操作系统”。我对引导扇区这个名词早有耳闻,可是它的内部究竟是怎样的。有了在实践中找出的问题,我对理论知识产生了兴趣。3.2.

6、3计算机的启动过程“计算机电源被打开时,它会先进行加电自检(post),然后寻找启动盘(或许就是我刚刚写的那个东西?),如果是从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它以0xAA55结束,则BIOS认为这是一个引导扇区,也就是我们说的BootSector。好了,一旦BIOS发现了BootSector,就会将这扇区的内容装载到内存的0000:7c00处,然后跳转到0000:7c00处将控制权彻底交给这段引导代码。由此开始,计算机就受我们所写的操作系统来控制了。”刚刚运行代码时,我不明不白了改了一个字符串,不过现在回过头来对比看看代码,和上面这段文字,仿佛有很多地方都开使变得明朗

7、起来,我已经迫不急代的想知道那段代码究竟做了什么。3.2.4代码解释现在,我不得不承认我汇编没有好好学了,上面这段代码,我是弄了好久才看懂的。程序的主体是从第行到第行,通过三个mov指令初始化ds和es两个段寄存吕指向与cs相同的段,然后调用了DispStr子函数来显示一个字符串,最后通过jmp$进入无限循环。$:表示当前语句所在的地址$:表示当前语句所在的段地址最后还想说说这两句代码:times510-($-$)db0dw0xaa55“填充剩余空间,使生成的二进制代码恰好为512字节”为什么是512呢?因为BIOS加载的BootSector的大小固定为512字节,并且以511和512两字节内

8、容是否为AA55来判断引导扇区,所以,通过times510-($-$)db0填充值,并设置511和512两个字节的值为AA55。这样,便构造了一个引导扇区。3.2.5搭建虚拟环境如果每次写完一段代码都要重启电脑,那开发操作系统的时间可大多浪费在重启电脑上了。选择一个虚拟机还是很有必要的。常用的虚拟机有VMware、VirtualPC.我用的是VMware。512字节毕竟还是太小了很明显,一个引导扇区只有512字节,不管怎样的操作系统都不可能在这么小的空间内做什么大的文章。所以,在如何引导了计算机这一问题解决了之后,我们应该想想,怎样能够突破512字节的限制。4学习总结对操作系统的兴趣由来已久,只是一直未能找到入门之径。操作系统教材是个令人生畏的东西,它可以告诉人有什么,却不能告诉人为什么,从那里了解的操作系统有如盲人摸到的象,得到各个部分,却不能拥有整体,加之缺乏实践的支持,理论显得苍白空洞。如Linux般的开源操作系统,虽然可以让人坐拥全部源码,但一来规模庞大,让人不知从何入手,二来源码背后更多的是业务操作系统和硬件知识,不了解业务的人很难凭一己之力破解源码的奥秘。客观如此,更重要的还是主观的不努力。自己动手写操作系统则为我打开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论