梦飞云服务器MFISP

Support

Log ind
Vidensdatabase

操作系统知识

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

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。

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

  • 546 Kunder som kunne bruge dette svar
Hjalp dette svar dig?

Related Articles

用户级线程和内核级线程的区别

1 内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。 2...

一致性代码段和非一致性代码段

一致代码段: 非一致代码段. 之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉. 但是有时候用户程序也需要读取内核的某些数据,怎么办呢?...

DPL,RPL,CPL 之间的联系和区别

这篇文章写的太好了!!这是保护模式完整的权限检查,其实当今的操作系统也不会弄的这么复杂……...

硬盘分区表知识——详解硬盘MBR

硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘...

计算机是如何启动的?

作者: 阮一峰 日期: 2013年2月16日 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。...