操作系统知识(待续)

声明:本文为知识整理,原文在相应的参考中标出。

从硬件的发展史的角度来看段机制

1971年,Intel 发布了第一款的微处理器4004。它是一个4位的微处理器。

1972年,Intel 发布了第一款八位处理器8008。它是一个8位的微处理器,地址总线(address bus)是14位的,就是说可以访问到16K的内存空间。

1974年4月,Intel 发布了第二款八位处理器8080。它是8008是增强版,增加了几个累加器,使它可以访问16位(8+8)的内存地址,即64K 范围内的地址空间。而且它也是公认的“第一款真正可用的微处理器”。8080的架构对8086产生了很大的影响,并且为 x86系列奠定了基础。

至此,内存寻址访问仍是绝对地址。就是指令的地址即物理地址,中间没有任何的转换。

1976年开始设计,1978年中旬Intel 发布了8086。标志了x86王朝的开始。它是一款16位的微处理器,却被设计成可以访问1MB 的内存(即20位的地址空间)。问题就产生了,16位的 ALU怎么去取20位的地址呢?因此,的概念 在8086身上被引入了。

段的引入是解决“ 地址总线的宽度一般要大于寄存器的宽度 ”这个问题。

8086的分段寻址,是指一个物理地址由段地址(segment selector)与偏移量(offset)两部分组成,长度各是16比特。其中段地址左移4位(即乘以16)与偏移量相加即为物理地址。例如,06EFh:1234h,表示段地址为06EFh,偏移量为1234h,物理地址为06EF0h + 1234h = 08124h。在计算物理地址时如果发生上溢出,8086处理器舍弃进位。例如,FFFFh:0010h所对应的物理地址为00000h.

这种分段寻址,即 段地址+偏移量 的做法,在以80286开始之后会被称为 实模式。

1982年,Intel 的80286面世了。它是第一款采用 保护模式 的 x86微处理器。地址总线增加到24位使它可以访问到16M 的内存空间。即使是可访的内存空间增加了,但它的分段大小依然是64K,程序的规模受限,注定286受不到更多的喜爱。

所以,286很快就被80386所替代了。

1985年,Intel 发布了80386。一个拥有32位的微处理器。并且地址总数(address bus)也是32位的,寻址能力大幅提高到4G。同时,为了向前兼容8086,386中既有保护模式,又有实模式。并且在保护模式下,分段的大小可以到达4G(2**32)。

现在有必要简单交代一下,实模式 与 保护模式 分别是什么了。

实模式: 是 段地址+偏移量 的方式,得到物理地址,进而寻址。

保护模式: 不允许通过段寄存器取值得到段的起始地址,而是把虚拟地址转进一个 MMU 的硬件,经过额外的转换和检查,进而得到一个物理地址。(如下图)。其中的额外检查就可以起到例如保护某段数据的作用。
这里写图片描述
图1:MMU 转换虚拟地址为物理地址

是时候来一个简单的总结了。

从4004到386,先是直接物理地址寻址,然后是 实模式 形式的寻址,最后变为 保护模式 形式寻址。

最重要的变化是从“实模式”向“保护模式”的转变。这背后实际也是处理器的系统体系结构的变化。虽然386往后的CPU在各方面都有改进,但由于在本质上的结构没有大变化,所以386往后的处理器都统称80x86。

参考:
从硬件出发,浅谈操作系统的段机制与页机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值