Chinaunix首页 | 论坛 | 博客
  • 博客访问: 319067
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-23 17:54
个人简介

做一个“好”人... 思想上会思考; 生活上有追求; 技术上不停步; 工作上有担当;

文章分类

全部博文(163)

文章存档

2016年(1)

2015年(143)

2014年(19)

我的朋友

分类: LINUX

2015-11-30 23:43:48

原文地址:Linux内核0.11笔记(4) 作者:pascal4123

by pascal4123(http://pascal4123.cublog.cn)

root Linux启动引导程序

电源打开后,80x86 CPU进入实模式,并从0xFFFF0处执行代码,这通常是BIOS的地址。
BIOS执行某些系统的检测,并在物理内存0处初始化中断向量。此后 把启动设备的MBR(磁盘第一个扇区,512字节)复制到0x7C00处,并跳转到这里。

1:实模式    寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。
3:保护模式   寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。

linux最前面的部分boot/sect.s,被bios读入0x7c00处,它被执行时将自己移到0x90000处(?),并把启动设备后2k(setup.s)读入到0x90200,并把控制权移交给setup.s中的代码,内核其他部分(system模块)则被读入到0x10000处,随后移动到内存起始处0x0000,这样system模块代码地址也即物理地址,便于对内核代码和数据的操作。


阅读(475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~