




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一总结启动系统此次实验的基本内容是:1. 阅读Linux内核完全注释的第6章,对计算机和Linux 0.11的引导过程进行初步的了解;2. 按照下面的要求改写0.11的引导程序bootsect.s3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。改写bootsect.s主要完成如下功能:1. bootsect.s能在屏幕上打印一段提示信息“XXX is booting.”,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等(可以上论坛上秀秀谁的OS名字最帅,也可以显示一个特色logo,以表示自己操作系统的与众不同。)改写setup.s主要完成如下功能:1. bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行Now we are in SETUP。2. setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。3. setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。bootsect.s代码解读SYS_SIZE表示系统模块的大小,此处设置有冗余。bootsect.s被BIOS启动程序装载到0x7c00处,然后把自己移开,复制到0x90000处,然后跳转到那里。之后,它使用BIOS中断,将setup模块直接装载在紧邻它之后的0x90200处,又把system装载到0x10000处。注意!当前的系统最大是8*65536字节。这没问题,未来也是。我想让它保持简单。这512KB的kernel大小是足够的,尤其是它像minix一样不包含缓存。装载器被实现得尽量简单,持续的读取错误将导致死循环。请手动重启。在可能的情况下,它一次得到整个扇区,这样可使装载十分迅速。setup扇区的长度 = 4boot扇区的原地址 = 0x07c0 ;由于20位地址寻址时,段地址左移四位,表现为16进制1位initseg = 0x9000 ;bootsect将移至的地址setupseg = 0x9020 ;setup装载的位置sysseg = 0x1000 ;system装载的地址endseg = sysseg + syssize ;sys的结尾地址总之是定义了根文件系统的物理位置。data seg = bootseg ;源extra seg = initseg ;目的cx = 256 ;计数256,为bootsect长度si = di = 0 ;源和目的的偏移指针为0.重复移动字(256次),为512字节,一个扇区。移好了之后,跳到initseg段的go标签执行。(本来就是下一句接着执行,不过做了段间跳转。)go将数据段和扩展段都置为代码段。(此三句在后面常出现)设置栈段和栈指针。(注,段间跳转时,IP = go, CS = INITSEG = 0x9000. 故,ax = 0x9000, 故ss = 0x9000, sp = 0xFF00. 根据20位段寻址规则,栈指针就在0x9ff00处。)调用int 13读磁盘,在此前设置参数。至此,setup被装载到0x90200处。取磁盘驱动器的参数。sectors = clax被冲掉。bl有。ch被冲掉。cl给sectors。dx有。es被冲掉,di也作废了。最终只有sectors变量在后面被使用。恢复es为当前段。打印欢迎信息!bh用xor清零囧这一段代码用来打印,只改cx和bp即可。之后加载system。置扩展段为系统所在段的地址(扩展段一般作为目的段。)调用read_it.关于test语句,可知,它可以限制ax的后12位必须为0,而前面没要求。注意,这是4KB,但因为它是es扩展段,因此寻址将会被左移4位,就成了64KB。再往下,除了139行的之外,都是读入system的细节。正确读入完毕后,程序将跳到SETUP执行。bootsect干的事:移自己,设置栈指针,装载setup,装载system。setup.s代码解读功能描述 简单说就是读取机器系统数据。 移动system模块。加载IDTR和GDTR,开启A20,重设中断芯片和硬件中断号。最后设置CR0,从而进入32位保护模式,并跳转到system的头部head.s执行。setup.s将系统数据从BIOS得到并放在系统内存的合适位置。向BIOS请求内存、磁盘、其他参数,放在安全的0x900000x901ff之间(setup.s前面,从原bootsect.s处开始),供保护模式来读取他们,在被缓冲区覆盖前。一些段。从开始到105行都是调用各种中断读取硬件信息的。之后,关中断,移动system到0x00000处加载段描述符。根据读书笔记(_),我们知道GDT和IDT是相似的(而LDT和TR是相似的,是段。),其表项就是段描述符,直接用两条语句load
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年四川省泸州市龙马潭区高二下学期6月期末考试数学试题(解析版)
- 2025年甘肃省天水市中考生物真题含答案
- 高中物理《分子的热运动》课教案、教学设计
- 党员先锋岗活动方案
- 防拥挤防踩踏心得体会
- 佛教寺庙保安管理制度
- 作业风险提级管理制度
- 供应市场信息管理制度
- 供暖安全维修管理制度
- 供水企业资金管理制度
- 2025年重庆市中考数学试卷真题(含标准答案)
- 农机耕地合同协议书范本
- 房地产估价报告:商业房地产租赁价格估价
- 牡丹的药用价值课件
- kW壳管式干式蒸发器设计
- 最新药店员工手册
- 系列螺杆冷水机组操作培训
- 催化剂对异氰酸酯反应活性的影响
- 国家开放大学《C语言程序设计》综合测试题参考答案
- 老年人生活自理能力评估表
- 火电机组能耗指标分析指导性意见
评论
0/150
提交评论