8086处理器具有20条地址线(如果您不知道8086的童鞋,可以使用百度,该处理器非常有名,并且具有很多信息),并且可以寻址1MB的内存。但是,其内部寄存器是16位的,无法访问程序中的整个1MB内存。因此,它也是第一个支持内存分段模型的处理器。同样,8086处理器只有一种工作模式,即实模式。当然,那时还没有真正的模型。
由于8086处理器的成功,英特尔正在不断开发更新的处理器,并且32位时代已经到来。尽管8086是16位处理器,但它也是32位体系结构的一部分。原因是32位处理器体系结构是从8086开发的,基于8086,并且具有连续性和兼容性。
32位处理器具有自己的32位操作模式。在本系列文章中,保护模式实际上是32位模式。在这种模式下,可以充分利用处理器的性能。同时,在这种模式下,处理器可以使用其全部32条地址线,并可以访问4GB的内存。
b。实模式寻址模式和工作机制
实际上,8086的段寄存器和IP寄存器均为16位。如果以原始方式直接将段寄存器的内容和偏移地址相加以形成物理地址,则只能获得该物理地址的16位。地址。麻烦的是,8086提供了20条地址线。换句话说,它提供了20位的物理地址。

提供20位地址线的原因非常简单。一个16位的物理地址只能访问64KB的内存。地址范围是0000H至FFFFH,共65536字节。即使在那个时代,这种能力似乎也已经捉襟见肘。注意,这里提到代表存储容量的单位“ KB”。为了方便起见,我们通常使用较大的单位来描述内存容量,例如千字节(KB),兆字节(MB)和千兆字节(GB)。
因此,65536字节为64KB,一个20位的物理地址最多可以访问1MB的内存,地址范围为00000H至FFFFFH。问题在于,只能将16位段地址和16位偏移地址相加以形成16位物理地址。您如何获得20位物理地址?
为解决此问题,当8086处理器形成物理地址时,它首先将段寄存器的内容向左移动4位(相当于以十六进制乘以10或以十进制乘以16)形成20位然后添加16位偏移地址以获得20位物理地址,例如,对于逻辑地址F000H:052DH,处理器在形成物理地址时会将段地址F000H左移4位。变为F0000H,并添加了偏移地址052DH以形成20位物理地址F052DH。
这样,由于段寄存器为16位,因此如果段不重叠,则1MB存储器最多可划分为65536个段,段地址为0000H,0001H,0002H,0003H,... ,直到FFFFH为止。

地址由两部分组成:段和偏移量。物理地址的计算公式为:
物理地址(physicaladdress)=段值(segment)* 16 +偏移量(offset)
其中,段和偏移均为16位。
在此模式下,系统根据1M模的方法计算实际地址。这种技术称为环绕。换句话说,当程序员提供的地址超过1M(100000H-10FFEFH)时,由于它在逻辑上是正常的,因此系统不会认为访问超出范围并引起异常,而是自动从0开始计数。

三、保护模式
a。起源
初始程序寻址为直接的“段:偏移”模式。这样的好处是您所看到的就是所得到的。程序员指定的地址是物理地址,并且该物理地址对于程序员是可见的。这带来了一些问题:1)无法支持多任务。2)无法保证程序的安全性。
在旧版本的Windows中,我们有时会崩溃或出现蓝屏。实际上,大多数这些问题是由内存损坏引起的。因为在实模式下,整个物理内存被视为划分的区域,所以程序代码和数据位于不同的区域。系统程序和用户程序没有区别对待,每个指针指向一个“真实的”物理地址。这样,如果用户程序的指针指向系统程序区域或其他用户程序区域并更改值,则修改后的系统程序或用户程序可能会轻易导致软件甚至系统崩溃。

在保护模式下,所有32条地址线均有效,并且可以寻址多达4G字节的物理地址空间。扩展的内存分段管理机制和可选的内存分页管理机制不仅为内存共享和保护提供硬件支持,而且为实现虚拟内存提供硬件支持,支持多任务处理,并可以快速执行任务切换和保护任务该环境,4个特权级别和完善的特权检查机制不仅可以实现资源共享,而且可以确保代码和数据的安全性和机密性以及任务的隔离。支持虚拟8086模式,方便执行8086程序。
出现保护模式的原因是为了保护进程地址空间。这样,结果是:程序的寻址模式已在两种模式下更改。
b。保护模式的寻址方式和工作原理
在保护模式下的寻址比在实模式下复杂,并且涉及一些概念性问题。让我们在下面简要介绍一下。有相关知识点时,将进行有关后续操作系统的系列文章。详细说明。
实际上,保护模式下的地址表示与实模式下的相同,二者:segment:偏移,但是在保护模式下,“段”的概念已经发生了根本性的变化。在实模式下,段值仍可以视为地址的一部分。例如,段值xxxxh表示以xxxx0h开头的一段内存。在保护模式下,尽管段值仍由原始cs,ds和其他寄存器表示,但此时它仅成为索引。该索引指向数据结构中的一个条目,该条目详细定义了该段的起始地址,限制,属性等。此数据结构是全局描述符GDT(也可以是LDT,在此我们首先介绍GDT,LDT实际上类似于GDT,我们将在后面详细讨论。)
GDT的作用是提供一种段存储机制,该机制由GDT中的段寄存器和描述符提供。每个描述符在GDT中占用8个字节,即2个双字或64位。在下图中,底部是低32位,顶部是高32位。

很明显,在描述符中指定了32位段的起始地址和20位段的边界。在实模式下,段地址不是实际的物理地址。在计算物理地址时,它还会向左移动4位(乘以16)。与实模式不同,在32位保护模式下,段地址为32位。如果未打开分页功能,则线性地址是物理地址。
四、摘要
回顾上面提到的内容,我们主要解释什么是实模式和什么是保护模式。同时,我们也简要介绍了这两种模式的寻址方法,并提到了描述符的概念,尽管这里仅简要介绍了描述符的概念和结构,但这是进入保护的关键之一。模式。稍后的文章中将进行详细的分析。欢迎交流并纠正我。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-350309-1.html
没有申请就闯进中国被侵略者侵犯国土