Linux内核学习-Linux系统的初始化(二)

本文介绍了计算机从开机到启动Linux系统过程中,实模式与保护模式的转换。实模式下,由于历史原因,寻址空间有限且无内存保护。随着80386的出现,保护模式引入,通过全局描述符表和段寄存器实现内存访问控制和权限验证。BIOS在加电自检POST后,构建中断向量表,并依据CMOS设置加载启动设备上的自举程序。
摘要由CSDN通过智能技术生成

了解计算机开机加电到系统启动的过程。

        为了向前兼容,使得旧代码可以运行在新的芯片中,现有的计算机一般都是由实模式开始。然后转成保护模式。

稍微带点历史信息:Intel处理器生产的8086CPU, 总线16位。地址总线20位。可寻址1M。 当初Intel本意是设计16位的处理器,但是正常寻址空间才2的16次方 = 64KB。 为了更大的寻址空间。 需要对16位的总线进行映射。 为了支持16位映射到20位地址空间,才新增了4个寄存器,CS代码段,DS数据库,ES其他,SS堆栈段。这样一个物理地址就变成了

段地址:段内偏移量。   段地址经过左移4位再加上段内偏移量就得到了真实的20位物理地址。

这种方式可以寻址的最大地址就是:0xFFFF:0xFFFF。 寻址空间为: 0x00000~~~~~~0x10FFEF。 地址总线20位,物理地址空间是0x00000~~~0xFFFFF。 超出的部分即

0x100000~~0x10FFEF自动映射到真实物理地址空间的0x00000处。 即对2的20次方求模运算后进行地址映射。


        实模式:只能访问1MB的地址空间。但是访问的都是真实物理地址,即实际地址模式。 而且无法对内存加以保护。任何进程都可以修改寄存器指令来获取任意一个段地址。在任意64KB段起始地址的连续地址空间进行访问。可以直接软件访问BIOS及硬件,没有硬件支持的分页机制和实时多任务概念。


后来80386问世,32位的CPU登上的历史舞台。IA-32时代。为了向前兼容,使得旧的软件可以运行在新的硬件上。在段寄存器(CS,DS,SS,ES)基础上新增通用段寄存器FS和GS。新增这两个寄存器不仅可以起到辅助

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值