实验一操作系统的引导.doc

实验一操作系统的引导.doc

ID:50837927

大小:124.50 KB

页数:12页

时间:2020-03-15

实验一操作系统的引导.doc_第1页
实验一操作系统的引导.doc_第2页
实验一操作系统的引导.doc_第3页
实验一操作系统的引导.doc_第4页
实验一操作系统的引导.doc_第5页
资源描述:

《实验一操作系统的引导.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验目的<编辑>·熟悉hit-oslab实验环境;·建立对操作系统引导过程的深入认识;·掌握操作系统的基本开发过程;·能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。实验内容<编辑>此次实验的基本内容是:1.阅读《Linux内核完全注释》的第6章,对计算机和Linux0.11的引导过程进行初步的了解;2.按照下面的要求改写0.11的引导程序bootsect.s3.有兴趣同学可以做做进入保护模式前的设置程序setup.s。改写bootsect.s主要完成如下功能:1.bootsect.s能在屏幕上打印一段提示信息“XXXisbooting...”,其中XXX是你给

2、自己的操作系统起的名字,例如LZJos、Sunix等(可以上论坛上秀秀谁的OS名字最帅,也可以显示一个特色logo,以表示自己操作系统的与众不同。)改写setup.s主要完成如下功能:1.bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行"NowweareinSETUP"。2.setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。3.setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。实验报告<编辑>在实验报告中回答如下问题

3、:1.有时,继承传统意味着别手蹩脚。x86计算机为了向下兼容,导致启动过程比较复杂。请找出x86计算机启动过程中,被硬件强制,软件必须遵守的两个“多此一举”的步骤(多找几个也无妨),说说它们为什么多此一举,并设计更简洁的替代方案。评分标准<编辑>·bootsect显示正确,1020%·bootsect正确读入setup,10%·setup显示正确,10%·setup获取硬件参数正确,5%·setup正确显示硬件参数,5%·tools/build.c修改正确,1020%·实验报告,5060%实验提示<编辑>操作系统的boot代码有很多,并且大部分是相似的。本实验仿照Lin

4、ux-0.11/boot目录下的bootsect.s和setup.s,以剪裁它们为主线。当然,如果能完全从头编写,并实现实验所要求的功能,是再好不过了。同济大学赵炯博士的《Linux内核0.11完全注释(修正版V3.0)》(以后简称《注释》)的第6章是非常有帮助的参考,实验中可能遇到的各种问题,几乎都能找到答案。可以在“资料和文件下载”中下载到该书的电子版。同目录中,校友谢煜波撰写的《操作系统引导探究》也是一份很好的参考。需要注意的是,oslab中的汇编代码使用as86编译,语法和汇编课上所授稍有不同。下面将给出一些更具体的“提示”。这些提示并不是实验的一步一步的指导,

5、而是罗列了一些实验中可能遇到的困难,并给予相关提示。它们肯定不会涵盖所有问题,也不保证其中的每个字都对完成实验有帮助。所以,它们更适合在你遇到问题时查阅,而不是当作指南一样地亦步亦趋。本书所有实验的提示都是秉承这个思想编写的。Linux0.11相关代码详解boot/bootsect.s、boot/setup.s和tools/build.c是本实验会涉及到的源文件。它们的功能详见《注释》的6.2、6.3节和16章。如果使用Windows下的环境,那么要注意Windows环境里提供的build.c是一个经过修改过的版本。LinusTorvalds的原版是将0.11内核的最终

6、目标代码输出到标准输出,由make程序将数据重定向到Image文件,这在Linux、Unix和Minix等系统下都是非常有效的。但Windows本身的缺陷(也许是特色)决定了在Windows下不能这么做,所以flyfish修改了build.c,将输出直接写入到Image(flyfish是写入到Boot.img文件,我们为了两个环境的一致,也为了最大化地与原始版本保持统一,将其改为Image)文件中。同时为了适应Windows的一些特殊情况,他还做了其它一些小修改。引导程序的运行环境引导程序由BIOS加载并运行。它活动时,操作系统还不存在,整台计算机的所有资源都由它掌控,

7、而能利用的功能只有BIOS中断调用。完成bootsect.s的屏幕输出功能首先来看完成屏幕显示的关键代码如下:!首先读入光标位置movah,#0x03xorbh,bhint0x10!显示字符串“LZJosisrunning...”movcx,#25!要显示的字符串长度movbx,#0x0007!page0,attribute7(normal)movbp,#msg1movax,#0x1301!writestring,movecursorint0x10inf_loop:jmpinf_loop!后面都不是正经代码了,得往回跳呀!msg1处放置字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。