亲近自然_写景要抓住特征(定稿)目录
概述 1
3
4
5
5
13H 调用 5
7
7
8
9
9
10
’Loading system….’ 11
12
12
,并跳转到0x9020:0000处 14
分析研究体会 17
自我评价 20
参考文献 21
概述
Linux作为一个优秀的操作系统,其原因之一应归属于开放的内核源代码。说起内核源代码,我们不得不存着敬畏的心理。它在Linux中的地位好像心脏在我们身体中的地位一样重要,它是整个操作系统的灵魂。因此要更好的了解Linux,分析他的源代码是非常必要的。在这次课程设计中我选择分析的是Linux 。
首先我们粗略的看一下计算机内开机过程:通电后,CPU完成自检和初始化,设置寄存器内的初值,而后执行第一条指令。该指令的地址是CS*16+IP,即0xFFFF0,该地址是BIOS的入口地址。BIOS对整个机器系统完成自检后,将有关系统配置的基本信息记录在内存的BIOS数据区中,然后把引导盘的第一个扇区读入内存的0x7C00处。转到该处,把控制权交给引导程序,最后引导程序把操作系统读入内存中,并把控制权交给操作系统内核。
我们再来看看引导启动程序目录Boot。Boot目录中含有三个汇编语言文件,是内核源代码中最先被编译的程序。这3个程序完成的主要功能是当计算机加电时引导内核启动,将内核代码加载到内存中,并做一些进入32位保护运行方式前的系统初始化工作。,使用的是as86的汇编语言格式(与微软的类似), as来编译,使用的是AT&T格式的汇编语言。。。
,并把内核模块System移动到适当的内存位置。,主要进行硬件设备的探测设置和内存管理页面的初始化设置工作。
,驻留在磁盘的第一个扇区中(引导扇区,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\。,编译后会驻留在磁盘的第一个扇区。在PC加电ROM BIOS自检后,将被BIOS加载到内存0x
7c00处进行执行。
Linux源代码的目录结构
通过分析一个早期的Linux内核,加深对操作系统各个组成模块具体实现机制的理解,同时也为今后从事底层的研究开发增加一些实践经验。,进一步了解Linux的启动过程,明白计算机从开始加电后做了什么?进一步认识引导程序,通过BIOS读磁盘扇区的方法以及BIOS的中断处理。同时也可以巩固汇编的一些知识和80x86的系统结构,熟悉源代码的目录结构,了解文件从哪里调用,明白系统在加电后进入实模式后内存的分布情况等。
我
亲近自然 写景要抓住特征(定稿) 来自淘豆网m.daumloan.com转载请标明出处.