Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135292
  • 博文数量: 57
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-10 15:10
文章分类
文章存档

2011年(1)

2008年(4)

2007年(12)

2006年(40)

我的朋友
最近访客

分类: LINUX

2006-03-18 15:08:35

Linux的启动过程由汇编代码文件arch/i386/boot/bootsect.S生成,它利用BIOS功能调用将arch/i386/boot的setup.S文件和内河映像加载到内存的相应位置。Intel i386 CPU存在、实模式和保护模式两种运行模式,在实模式下不支持内存的段页访问,Linux操作系统运行在支持内存段页访问的保护模式下。由于开机的时候在Intel的实模式下,只能使用低端的640内存,随着Lunux核心中驱动程序的无限制增加,即使经过压缩的核心也有可能超过低端内存空间的容量(508K)。这样超过最大长度限制的核心文件叫bzImage,Linux又称之为BIG_KERNEL。bzImage的引导扇区无法将压缩过的核心全部装入低端空间,因此Linux设计了一个精巧的Bootsect_helper子程序(定义在arch/i386/boot/setup.S中),引导程序通过循环调用bootsect_helper一块一块状在内核映像。每个循环中,bootsect_helper都回被调用一次,负责将新装入低端内存的内核复制到高端内存上,再将低端内存复位。内核加载完毕,系统跳转到setup.S的考试位置执行,setup.S仍在实模式下运行,主要功能是设置系统参数(包括内存、磁盘等,由BIOS返回)、监测和设置显示器和显示模式下为进入保护模式做准备,最后进土保护模式并跳转到内核映像的头部运行内核。
阅读(1117) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:vi使用一览

给主人留下些什么吧!~~