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

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一操作系统的引导.doc

实验目的编辑 熟悉hit-oslab实验环境; 建立对操作系统引导过程的深入认识; 掌握操作系统的基本开发过程; 能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 实验内容编辑 此次实验的基本内容是: 阅读《Linux内核完全注释》的第6章,对计算机和Linux 0.11的引导过程进行初步的了解; 按照下面的要求改写0.11的引导程序bootsect.s 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 改写bootsect.s主要完成如下功能: bootsect.s能在屏幕上打印一段提示信息“XXX is booting...”,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等(可以上论坛上秀秀谁的OS名字最帅,也可以显示一个特色logo,以表示自己操作系统的与众不同。) 改写setup.s主要完成如下功能: bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行Now we are in SETUP。 setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。 setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。 实验报告编辑 在实验报告中回答如下问题: 有时,继承传统意味着别手蹩脚。x86计算机为了向下兼容,导致启动过程比较复杂。请找出x86计算机启动过程中,被硬件强制,软件必须遵守的两个“多此一举”的步骤(多找几个也无妨),说说它们为什么多此一举,并设计更简洁的替代方案。 评分标准编辑 bootsect显示正确,1020% bootsect正确读入setup,10% setup显示正确,10% setup获取硬件参数正确,5% setup正确显示硬件参数,5% tools/build.c修改正确,1020% 实验报告,5060% 实验提示编辑 操作系统的boot代码有很多,并且大部分是相似的。本实验仿照Linux-0.11/boot目录下的bootsect.s和setup.s,以剪裁它们为主线。当然,如果能完全从头编写,并实现实验所要求的功能,是再好不过了。 同济大学赵炯博士的《Linux内核0.11完全注释(修正版V3.0)》(以后简称《注释》)的第6章是非常有帮助的参考,实验中可能遇到的各种问题,几乎都能找到答案。可以在“资料和文件下载”中下载到该书的电子版。同目录中,校友谢煜波撰写的《操作系统引导探究》也是一份很好的参考。 需要注意的是,oslab中的汇编代码使用as86编译,语法和汇编课上所授稍有不同。 下面将给出一些更具体的“提示”。这些提示并不是实验的一步一步的指导,而是罗列了一些实验中可能遇到的困难,并给予相关提示。它们肯定不会涵盖所有问题,也不保证其中的每个字都对完成实验有帮助。所以,它们更适合在你遇到问题时查阅,而不是当作指南一样地亦步亦趋。本书所有实验的提示都是秉承这个思想编写的。 Linux 0.11相关代码详解 boot/bootsect.s、boot/setup.s和tools/build.c是本实验会涉及到的源文件。它们的功能详见《注释》的6.2、6.3节和16章。 如果使用Windows下的环境,那么要注意Windows环境里提供的build.c是一个经过修改过的版本。Linus Torvalds的原版是将0.11内核的最终目标代码输出到标准输出,由make程序将数据重定向到Image文件,这在Linux、Unix和Minix等系统下都是非常有效的。但Windows本身的缺陷(也许是特色)决定了在Windows下不能这么做,所以flyfish修改了build.c,将输出直接写入到Image(flyfish是写入到Boot.img文件,我们为了两个环境的一致,也为了最大化地与原始版本保持统一,将其改为Image)文件中。同时为了适应Windows的一些特殊情况,他还做了其它一些小修改。 引导程序的运行环境 引导程序由BIOS加载并运行。它活动时,操作系统还不存在,整台计算机的所有资源都由它掌控,而能利用的功能只有BIOS中断调用。 完成bootsect.s的屏幕输出功能 首先来看完成屏幕显示的关键代码如下: ! 首先读入光标位置 mov ah,#0x03 xor bh,bh int 0x10 ! 显示字符串“LZJos is running...” mov cx,#25 ! 要显示的字符串长度 mov bx,#0x0007 ! page 0, attribute 7 (normal) mov bp,#msg1

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档