Linux操作系统下关于引导和初始化的问题
系统引导和初始化概述
相关代码(引导扇区的程序及其辅助程序,以x86体系为例):
\linux-2.4.22\arch\i386\boot\bootsect.S:Linux引导扇区的源代码;512字节
\linux-2.4.22\arch\i386\boot\setup.S:辅助程序;
\linux-2.4.22\arch\i386\boot\video.S:辅助程序,用于引导过程中的屏幕显示.
\linux-2.4.22\arch\i386\boot\compressed\head.S,
\linux-2.4.22\arch\i386\boot\compressed\misc.c :用于对内核映像解压缩
-----------------------------------------
\linux-2.4.22\arch\i386\kernel\head.s系统初始化入口
\linux-2.4.22\init\main.c 系统初始化入口
参考文档:\linux-2.5.75\Documentation\i386\boot.txt
过程描述
系统加电,CPU RESET
跳到地址0xFFFFFFF0,此处是BIOS
BIOS完成它的操作把第一扇区的内容读入到0x7c00
就是bootsect.S
把自己移到绝对地址0x90000处,并调转到那里继
续执行
通过BIOS提供的读磁盘调用"int 0x13"从磁盘上读
入setup和内核的映像
将(boot/setup.S)2kB字节的代码读入内存0x90200处,
然后跳转到setup的代码中做执行内核映像的准备
从0x100000开始执行startup_32()进行初始化(head.s)
——〉start_kernel()[main.c]-cpu_idle()
start_kernel()创建的进程init()被调度执行,完成
1.指令的跳转及其机理
l 80x86/Pentium的地址映射
0–640 KB MS-DOS Area.
640–768 KB Video Buffer Area.
768–896 KB in 16-KB sections (total of eight sections) - Expansion Area.
896 -960 KB in 16-KB sections (total of four sections) - Extended System BIOS Area.
960-KB–1-MB memory (BIOS Area) - System BIOS Area.
扩展内存区:由1M到4GB-1
— High BIOS area from 4 GB to 4 GB–2 MB
Intel 82875P Memory Controller Hub (MCH)
memery的监测和初始化:在对内存接口做操作前,必须初始化MCH DRAM寄存器.MCH必须配制成针对所安装的内存的类型进行操作.对内存类型和大小的检测是通过ICH5上的System Management Bus (SMBus)来完成.这个两线的总线通过DRAM DIMM上的Serial Presence Detect端口获得DRAM的类型和大小信息.
BIOS需要确定每行内存的大小和类型来配置MCH内存接口.
[2] [3] [4] [5] 下一页
- 最新评论