Linux操作系统下关于引导和初始化的问题

http://tech.ddvip.com   2007年07月10日    社区交流

内容摘要:Linux操作系统下关于引导和初始化的问题

  系统引导和初始化概述

  相关代码(引导扇区的程序及其辅助程序,以x86体系为例):

  linux-2.4.22archi386ootootsect.S:Linux引导扇区的源代码;512字节

  linux-2.4.22archi386ootsetup.S:辅助程序;

  linux-2.4.22archi386ootvideo.S:辅助程序,用于引导过程中的屏幕显示.

  linux-2.4.22archi386ootcompressedhead.S,

  linux-2.4.22archi386ootcompressedmisc.c :用于对内核映像解压缩

  -----------------------------------------

  linux-2.4.22archi386kernelhead.s系统初始化入口

  linux-2.4.22initmain.c 系统初始化入口

  参考文档:linux-2.5.75Documentationi386oot.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.

责编:豆豆技术应用

正在加载评论...