操作系统课程设计 引导启动.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计 引导启动

目 录 概述 1 一.课设分析的具体内容 3 二.分析的具体目标 4 三.Boootsect.s源代码分析基础 5 1.磁盘参数 5 2.BIOS的Int 13H 调用 5 3.根文件系统的命名方式及设备号的计算 7 4.串传输指令 7 四.各模块源代码的分析 8 1.Bootsect将自身从目前段位置0x07c0移到0x9000处 9 2.将setup模块读到0x90200开始处 9 3.获得磁盘驱动参数 10 4.显示’Loading system….’ 11 5.将系统模块加载到0x10000处 12 6.检查要使用哪个根文件系统设备 12 7.保存设备号,并跳转到0x9020:0000处 14 分析研究体会 17 自我评价 20 参考文献 21 概述 Linux作为一个优秀的操作系统,其原因之一应归属于开放的内核源代码。说起内核源代码,我们不得不存着敬畏的心理。它在Linux中的地位好像心脏在我们身体中的地位一样重要,它是整个操作系统的灵魂。首先我们粗略的看一下计算机内开机过程:通电后,CPU完成自检和初始化,设置寄存器内的初值,而后执行第一条指令。该指令的地址是CS*16+IP,即0xFFFF,该地址是BIOS的入口地址。BIOS对整个机器系统完成自检后,将有关系统配置的基本信息记录在内存的BIOS数据区中,然后把引导盘的第一个扇区读入内存的0x7C00处。转到该处,把控制权交给引导程序,最后引导程序把操作系统读入内存中,并把控制权交给操作系统内核。 Setup.s程序主要是读取机器的硬件配置参数,并把内核模块System移动到适当的内存位置。Head.s程序被编译连接到System的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始化设置工作。 Bootsect.s代码是磁盘引导块程序,驻留在磁盘的第一个扇区中(引导扇区,0磁道(柱面),0磁头,第1个扇区)。在PC机加电ROM BIOS自检后,引导扇区由BIOS加载到内存0x7c00处,然后将自己移到内存0x9000处。该程序的主要作用是首先将setup模块从磁盘加载到内存,紧接着bootsect的后面位置(0x9200),然后利用BIOS中断0x13取磁盘参数中当前启动引导盘的参数,接着在屏幕上显示”Loading system….”字符串,再者将system模块从磁盘上加载到内存ox1000开始地方。随后确定根文件系统的设备号。若设备指定,则根据所保存的引导盘的磁道扇区数判别出盘的类型和种类并保存起设备号于root_dev(引导块的0x508地址处)。最后长跳转到setup程序开始处(0x90200)执行setup程序。 一.课设分析的具体内容 由于Linux内核是一种单内核模式的系统。因此,内核中的所有程序都有密切的联系,他们之间的依赖和调用关系非常密切。所以我们先来看看源代码的目录结构,从目录结构中我们就可以看到我所分析的源代码所处的位置了(图转第2页)。 我所分析的则是linux\boot下的bootsect.s汇编源程序。Bootsect.s程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区。在PC加电ROM BIOS自检后,将被BIOS加载到内存0x7c00处进行执行。 图1.1 Linux源代码的目录结构 二.分析的具体目标 通过分析一个早期的Linux内核,加深对操作系统各个组成模块具体实现机制的理解,同时也为今后从事底层的研究开发增加一些实践经验。通过对bootsect.s的分析,进一步了解Linux的启动过程,明白计算机从开始加电后做了什么?进一步认识引导程序,通过BIOS读磁盘扇区的方法以及BIOS的中断处理。同时也可以巩固汇编的一些知识和80x86的系统结构,熟悉源代码的目录结构,了解文件从哪里调用,明白系统在加电后进入实模式后内存的分布情况等。 三.Boootsect.s源代码分析基础 1.磁盘参数 我们在研究磁盘参数方面主要考虑这三部分CHS(Cylinder/Head/Sector).即磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors).其中: 磁头数(Heads) 表示磁盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储); 柱面数(Cylinders) 表示磁盘每一面盘片上有几条磁道, 最大为 1023(用 10 个二进制位存储); 扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63 (用 6个二进制位存储); 每个扇区一般是 512个字节(理论上讲这不是必须的, 但好象都取此值)。据此,磁盘最大容量为: 255 * 1023 * 63 * 512 / 1048576 = 8024 MB ( 1M = 1048576 Bytes

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档