逻辑地址与物理地址
- 格式:doc
- 大小:29.50 KB
- 文档页数:1
内存寻址的三种模型1. 地址的种类首先明确一下逻辑地址和线性地址这两个概念:1. 逻辑地址2. 线性地址3. 物理地址1.1 逻辑地址:逻辑地址是编译器生成的,我们使用在linux环境下,使用C语言指针时,指针的值就是逻辑地址。
对于每个进程而言,他们都有一样的进程地址空间,类似的逻辑地址,甚至很可能相同。
1.2 线性地址:线性地址是由分段机制将逻辑地址转化而来的,如果没有分段机制作用,那么程序的逻辑地址就是线性地址了。
1.3 物理地址物理地址是CPU在地址总线上发出的电平信号,要得到物理地址,必须要将逻辑地址经过分段,分页等机制转化而来。
2. 三种寻址模型x86体系结构下,使用的较多的内存寻址模型主要有三种:1. 实模式扁平模型real mode flat model2. 实模式分段模型real mode segment model3. 保护模式扁平模型protected mode flat model下面是对这三种模型的描述实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了32位地址总线,地址使用的是虚拟地址,引入了描述符表;虽然二者都引入了段这样一个概念,但是实模式的段是64KB固定大小,只有16KB个不同的段,CS,DS等存储的是段的序号(想想为什么?)。
保护模式则引入了GDT和LDT段描述符表的数据结构来定义每个段。
扁平模型和分段模型相对,区别在于程序的线性地址是共享一个地址空间还是需要分成多个段,即为多个程序同时运行在同一个CS,DS的范围内还是每个程序都拥有自己的CS,DS:前者(flat)指令的逻辑地址要形成线性地址,不需要切换CS,DS;后者的逻辑地址,必须要经过段选择子去查找段描述符,切换CS,DS,才能形成线性地址。
3. 实模式扁平模型该模式只有在386及更高的处理器中才能出现!80386的实模式,就是指CPU可用的地址线只有20位,能寻址0~1MB的地址空间。
操作系统-存储管理(4)段页式虚拟存储物理地址:⼜称绝对地址,即程序执⾏所使⽤的地址空间(处理器执⾏指令时按照物理地址进⾏)逻辑地址:⼜称相对地址,即⽤户编程所使⽤的地址空间,从0开始编号,有两种形式:⼀维逻辑地址(地址)⼆维逻辑地址(段号:段内地址)主存储器空间的分配与去配:分配:进程装⼊主存时,存储管理软件进⾏具体的主存分配操作,并设置⼀个表格记录主存空间的分配情况去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占⽤的全部或者部分存储空间,调整主存分配表信息主存储器空间的共享:多个进程共享主存储器资源:多道程序设计技术使若⼲个程序同时进⼊主存储器,各⾃占⽤⼀定数量的存储空间,共同使⽤⼀个主存储器多个进程共享主存储器的某些区域:若⼲个协作进程有共同的主存程序块或者主存数据块多道程序设计需要复⽤主存:按照分区复⽤:主存划分为多个固定/可变尺⼨的分区,⼀个程序/程序段占⽤⼀个分区按照页架复⽤:主存划分成多个固定⼤⼩的页架,⼀个程序/程序段占⽤多个页架装载程序/加载器(loader)把可执⾏程序装⼊内存的⽅式有:绝对装载可重定位装载动态运⾏时装载地址转换:⼜称重定位,即把可执⾏程序逻辑地址转换成绝对地址,可分为:静态地址重定位:由装载程序实现装载代码模块的加载和地址转换(⽆需硬件⽀持),把它装⼊分配给进程的内存指定区域,其中所有指令代码和数据的逻辑地址在执⾏前⼀次全部修改为内存物理地址。
早期单任务单⽤户OS使⽤。
动态地址重地位:由装载程序实现装载代码模块的加载,把它装⼊进程的内存在指定区域,但对链接程序处理过的应⽤程序逻辑地址不做修改,程序内存起始地址被置⼊重定位寄存器(基址寄存器)。
程序执⾏过程中每当CPU访问程序和数据引⽤内存地址时,由硬件地址转换机构截取此逻辑地址并加上重定位寄存器的值。
运⾏时链接地址重定位存储保护:为避免主存中的多个进程相互⼲扰,必须对主存中的程序和数据进⾏保护。
逻辑块物理块逻辑块与物理块之间的关系及其应用计算机系统中,逻辑块与物理块是两个重要的概念,它们的关系紧密相连。
逻辑块是指系统中的逻辑地址空间,而物理块则是指实际的物理存储空间。
在计算机系统中,逻辑块和物理块之间的映射关系是非常重要的,因为它决定了程序的运行效率和数据的存储效率。
逻辑块是指程序员在编写程序时所看到的地址空间,也就是程序中使用的地址。
这些地址是虚拟的,因为它们并不代表实际的物理存储位置。
逻辑块通常是由操作系统提供的,它们被分配给程序员以进行数据访问和程序执行。
物理块则是指实际的物理存储空间,它是由计算机系统硬件提供的。
物理块通常是由存储设备(如硬盘、内存等)提供的,它们用来存储程序和数据。
物理块的大小一般由硬件限制,如硬盘的扇区大小、内存的页大小等。
逻辑块与物理块之间的映射关系是通过地址转换实现的。
地址转换是指将逻辑地址转换为物理地址的过程。
这个过程通常由操作系统中的地址转换机制来完成。
地址转换机制通常包括地址映射表和地址转换算法两部分。
地址映射表是用来记录逻辑块和物理块之间的映射关系的数据结构。
在操作系统中,通常会有一个全局的地址映射表,用来记录所有程序的逻辑地址和物理地址之间的映射关系。
地址映射表可以存储在内存中,也可以存储在磁盘上。
地址转换算法是用来实现地址转换的算法。
常见的地址转换算法有基于分页和基于分段两种。
基于分页的算法将逻辑地址分为多个页,每个页映射到物理内存中的一个页面;而基于分段的算法将逻辑地址分为多个段,每个段映射到物理内存中的一个连续区域。
在实际的应用中,逻辑块和物理块之间的映射关系有很多应用场景。
其中最常见的应用是内存管理和文件系统。
在内存管理中,操作系统需要将程序的逻辑地址转换为物理地址,以便程序能够正确地访问内存中的数据。
在文件系统中,文件通常被存储在物理磁盘上,而逻辑块则被用来表示文件中的数据块,以便程序可以方便地访问文件中的数据。
逻辑块和物理块是计算机系统中非常重要的概念。
本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。
所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。
也许错误的理解更利于形而上的抽像。
虚拟内存(virtual memory)这是对整个内存(不要与机器上插那条对上号)的抽像描述。
它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。
进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。
这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。
(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。
不奇怪,因为转换后的物理地址并非相同的。
——可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。
没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。
打住了,这个问题再说下去,就收不住了。
内存读写地址转行列转换三种内存地址:逻辑地址,线性地址,和物理地址一、逻辑地址:包含在机器语言指令中用来指定一个操作数或一条指令的地址。
这种寻址方式在80X86著名的分段结构中表现得尤为具体,它促使MS-DOS或Windows程序员把程序分成若干段。
每一个逻辑地址都是有一个段和偏移量组成,偏移量指明了从段开始的地方到时间地址之间的距离二、线性地址:(虚拟地址)是一个32位无符号整数,可以用来表示高达4GB的地址,也就是高达4294967296个内存单元。
线性地址通常用十六进制数字表示三、物理地址:用于内存芯片级内存单元寻址。
它们与从微处理器的地址引脚发送到内存总线上的电信号相对应。
物理地址由32位或36位无符号整数表示内存控制单元(MMU)通过一种称为分段单元的硬件电路把一个逻辑地址转换成线性地址分段单元:1,先检查段选择符的TI字段,已决定段描述符保存在哪一个描述符表中。
TI字段指明描述符是在GDT中(在这种情况下,分段单元从gdtr寄存器中得到GDT的线性基地址)还是在激活的LDT中(在这种情况下,分段单元从ldtr寄存器中得到LDT的线性基地址)2,从段选择符的index字段计算段描述符的地址,index字段的值乘以8,这个结果与gdtr或ldtr寄存器的内容相加3,把逻辑地址的偏移量与段描述符base字段的值相加就得到了线性地址第二个称为分页单元的硬件电路把线性地址转化成一个物理地址分段单元分页单元逻辑地址=============》线性地址============》物理地址实际上,分段和分页在某种程度上有点多余,因为它们都可以划分进程的物理地址空间:分段可以给每一个进程分配不同的线性地址空间,而分页可以把同一线性地址空间映射到不同的物理空间,与分段相比,Linux更喜欢使用分页方式因为:当所有进程使用相同的段寄存器值时,内存管理变得更简单,也就是说它们能共享同样的一组线性地址Linux设计目标之一是可以把它移植到绝大多数流行的处理器平台上。
1、物理地址:内存中各存储单元的地址由统一的基地址顺序编址,这种地址称为物理地址。
2、逻辑地址:用户程序经编译之后的每个目标模块都以0为基地址顺序编址,这种地址称为逻辑地址。
3、逻辑地址空间:由程序中逻辑地址组成的地址范围叫做逻辑地址空间。
4、内存空间:由内存中的一系列存储单元所限定的地址范围称为内存空间。
5、重定位:把逻辑地址转变为内存物理地址的过程叫做重定位。
6、静态重定位:把目标程序装入内存时所进行的重定位。
7、动态重定位:在程序执行期间,每次访问内存之前进行的重定位。
8、碎片:在分区法中,内存出现许多容量太小、无法被利用的小分区称做碎片。
9、紧缩:移动某些已分配区的内容,使所有作业的分区紧挨在一起,而把空闲区留在另一端,这种技术称为紧缩。
10、可重定位地址:当含有它的程序被重定位时,将随之被调整的一种地址。
11、文件:是被命名的相关信息的集合体,它通常存放在外存上,可作为一个独立的单位存放并实施相应的操作。
12、文件系统:操作系统中负责操纵和管理文件的一整套设施,它实现文件的共享和保护,方便用户“按名存取”13、目录项:为了加快对文件的检索,把文件控制块集中在一起进行管理。
这种文件控制块的有序集合称为文件目录。
文件控制块也是其中的目录项。
14、目录文件:全由目录项构成的文件称为目录文件。
15、路径:在树形目录结构中,从根出发经由所需子目录到达指定文件的通路。
16、当前目录:为了节省文件检索的时间,每个用户可以指定一个目录作为当前的工作目录,以后访问文件时,就从这个目录开始向下顺序检索。
这个目录称为当前目录。
17、文件的共享:是指系统允许多个用户共同使用某个或者某些文件。
18、中断:指CPU对系统发生的某个事件做出的一种反应,CPU暂时正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完改事件后,如被中断进程的优先级最高,则返回断点继续执行被“打断”的程序。
19、中断源---引起中断的事件或发出中断请求的来源称为中断源。
1.掌握 ARP 协议的报文格式2.掌握 ARP 协议的工作原理3.理解 ARP 高速缓存的作用4.掌握 ARP 请求和应答的实现方法5.掌握 ARP 缓存表的维护过程2 学时该实验采用网络结构二物理地址是节点的地址,由它所在的局域网或者广域网定义。
物理地址包含在数据链路层的帧中。
物理地址是最低一级的地址。
物理地址的长度和格式是可变的,取决于具体的网络。
以太网使用写在网络接口卡(NIC)上的 6 字节的标识作为物理地址。
物理地址可以是单播地址 (一个接收者) 、多播地址 (一组接收者) 或者广播地址 (由网络中的所有主机接收) 。
有些网络不支持多播或者广播地址,当需要把帧发送给一组主机或者所有主机时,多播地址或者广播地址就需要用单播地址来摹拟。
在互联网的环境中仅使用物理地址是不合适的,因为不同网络可以使用不同的地址格式。
因此,需要一种通用的编址系统,用来惟一地标识每一台主机,而不管底层使用什么样的物理网络。
逻辑地址就是为此目的而设计的。
目前 Internet 上的逻辑地址是 32 位地址,通常称为 IP 地址,可以用来标识连接在 Internet 上的每一台主机。
在 Internet 上没有两个主机具有同样的 IP 地址。
逻辑地址可以是单播地址、多播地址和广播地址。
其中广播地址有一些局限性。
在实验三中将详细介绍这三种类型的地址。
Internet 是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。
主机发送一个数据包到另一台主机时可能要经过多种不同的物理网络。
主机和路由器都是在网络层通过逻辑地址来识别的,这个地址是在全世界范围内是惟一的。
然而,数据包是通过物理网络传递的。
在物理网络中,主机和路由器通过其物理地址来识别的,其范围限于本地网络中。
物理地址和逻辑地址是两种不同的标识符。
这就意味着将一个数据包传递到一个主机或者路由器需要进行两级寻址:逻辑地址和物理地址。
需要能将一个逻辑地址映射到相应的物理地址。
第五章存储管理作业答案2、6、10、13、15、162、解释下列概念:物理地址、逻辑地址、逻辑地址空间、内存空间、重定位、静态重定位、动态重定位、碎片、紧缩、可重定位地址。
物理地址——内存中各存储单元的地址由统一的基地址顺序编址,这种地址称为物理地址。
逻辑地址——用户程序经编译之后的每个目标模块都以0为基地址顺序编址,这种地址称为逻辑地址。
逻辑地址空间——由程序中逻辑地址组成的地址范围叫做逻辑地址空间。
内存空间——由内存中的一系列存储单元所限定的地址范围称作内存空间。
重定位——把逻辑地址转变为内存物理地址的过程叫做重定位。
静态重定位——在目标程序装入内存时所进行的重定位。
动态重定位——在程序执行期间,每次访问内存之前进行的重定位。
碎片——在分区法中,内存出现许多容量太小、无法被利用的小分区称作“碎片”。
紧缩——移动某些已分配区的内容,使所有作业的分区紧挨在一起,而把空闲区留在另一端,这种技术称为紧缩。
可重定位地址——当含有它的程序被重定位时,将随之被调整的一种地址。
6、什么是虚拟存储器?它有哪些基本特征?参考答案:虚拟存储器是用户能作为可编址内存对待的虚拟存储空间,在这种计算机系统中实现了用户逻辑存储器与物理存储器分离,它是操作系统给用户提供的一个比真实内存空间大得多的地址空间。
虚拟存储器的基本特征是:虚拟扩充——不是物理上,而是逻辑上扩充了内存容量;部分装入——每个作业不是全部一次性地装入内存,而是只装入一部分;离散分配——不必占用连续的内存空间,而是“见缝插针”;多次对换——所需的全部程序和数据要分成多次调入内存。
10、某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。
假定某时刻一个用户页表已调入内存的页面页号和物理块号如表5-1所示。
则逻辑地址0A5C(H)所对应的物理地址为。
表5-1 页表中页号和物理块号对照表参考答案:0A5C(H)换成二进制:页号为2,查表,对应物理块号为4,与页内地址拼接成物理地址:再转换为十六进制,即125C(H)13、已知段表如表5-2所示。
什么是物理地址导读:我根据大家的需要整理了一份关于《什么是物理地址》的内容,具体内容:物理地址是在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,而逻辑地址是指由程序产生的与段相关的偏移地址部分。
下面就让我来给你科普一下和什...物理地址是在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,而逻辑地址是指由程序产生的与段相关的偏移地址部分。
下面就让我来给你科普一下和什么是逻辑地址。
物理地址的描述地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。
它是用二进制数来表示的,是无符号整数,书写格式为十六进制数。
它是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。
用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
物理地址的计算方法20位物理地址计算方法如下:物理地址=段基址*16d+偏移地址逻辑地址的概述在有地址变换功能的计算机中,访内指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址。
要经过寻址方式的计算或变换才得到内存储器中的实际有效地址,即物理地址。
各种计算机的寻址方式 (地址变换功能)都有所不同,在用汇编语言编写程序时,要先熟悉这个机器的指令系统。
参见 "物理地址"及"寻址方式"。
"逻辑地址" 在工具书中的解释1、在有地址变换功能的计算机中,访问指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址。
要经过寻址方式的计算或变换才得到内存储器中的物理地址。
2、把用户程序中使用的地址称为相对地址即逻辑地址。
3、逻辑地址由两个16位的地址分量构成,一个为段基值,另一个为偏移量。
两个分量均为无符号数编码。
"逻辑地址" 在学术文献中的解释1、这样该存储单元的地址就可以用段基址(段地址)和段内偏移量(偏移地址)来表示,段基址确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址,通常表示为段地址:偏移地址的形式。
分页系统的地址转换原理
分页系统的地址转换原理是将逻辑地址(也称为虚拟地址)转换为物理地址的过程。
首先,需要了解几个概念:
1. 页(Page):是内存的最小分配单位,通常大小为固定的2的幂次方大小(如4KB)。
2. 页表(Page Table):是一个数据结构,用于存储虚拟页和物理页之间的映射关系。
3. 页偏移(Page Offset):是逻辑地址在页内的偏移量,用于定位页内的具体地址。
地址转换过程如下:
1. 将逻辑地址拆分为两部分:页面号(Page Number)和页偏移。
2. 使用页面号作为索引,在页表中查找对应的页表条目。
3. 如果找到了对应的页表条目,检查该条目的有效位(Valid Bit)是否为1。
如果为0,则表示页面未分配或未加载到内存,此时可能触发缺页异常(Page Fault)。
如果为1,则表示该页已经加载到内存中。
4. 如果有效位为1,使用页表条目中的物理页号(Page Frame Number)替换逻辑页面号,并将页偏移添加到物理页号上,得到物理地址。
需要注意的是,页表条目中的物理页号不是直接使用的物理地址,而是用于计算
物理地址的一部分。
物理地址通常是物理页号和页偏移的组合。
分页系统的地址转换原理的目的是实现虚拟内存的机制,将程序的逻辑地址空间映射到实际的物理内存空间中,提供更大的地址空间和更灵活的内存管理机制。
微机原理第二章习题答案2-1.解释下列概念:(1)分时复用总线——不同的时刻通过相同的总线引脚传送不同的信息(2)逻辑地址——程序员在程序中使用的地址。
(3)物理地址——又称实际地址PA,是CPU和存储器进行数据交换时所采用的地址。
(4)字地址——如果存放16位的字数据,则需要占用连续的两个单元,其中数据的高8位存放在地址较大的单元,低8位存储在地址较小的单元,并以该单元的值作为该子数据的字地址。
(5)字节地址——8086系统地址总线有20条,内存空间都按字节组织,每个内存单元存储一个字节的数据,并具有一个唯一的20位地址编号,称为字节地址。
(6)规则字——对于16位字数据,若其字地址为偶数,即从地址为偶数的单元开始存放,则称该字数据为规则字。
(7)非规则字——若其字地址为奇数,即从地址为奇数的单元开始存放,则称该字数据为非规则字。
(8)指令周期——执行一条指令所需要的时间称为指令周期。
总线周期——CPU每占用一次系统总线,进行信息的输入输出所需要的时间就成为总线周期。
时钟周期——2-2. 简述8086/8088采用的重叠解释方式对指令和程序的解释过程及其特点。
在8086系统中,为了加快程序的执行速度,采用了重叠解释方式,各条指令的解释过程是重叠进行的。
每条指令的解释过程也包括取指令和执行指令两个阶段,但是相邻两条指令的解释过程有一部分是同时进行的。
在执行一条指令时,可以同时取出下一条指令。
在当前指令执行完毕后,就可以立即制行下一条指令。
这种重叠解释方式大大加快了程序的执行速度。
2-3.简述8086CPU内部组成以及EU和BIU的作用。
8086微处理器内部配分为两个独立的功能部件:执行部件EU和总线接口部件BIU。
执行部件由通用寄存器、标志寄存器、算术逻辑单元和EU控制系统等组成,专门负责指令的执行,即从指令队列缓冲器中获得指令,然后执行该指令,完成指令规定的操作。
总线接口部件由段寄存器、指令指针、地址形成逻辑、总线控制逻辑和指令队列缓冲器等组成。
Modbus地址设置方案1. 简介Modbus是一种通信协议,广泛应用于工业自动化领域。
在使用Modbus协议进行通信时,需要为每个设备设置一个唯一的Modbus地址,以便通信双方能够准确地进行数据交换。
本文将介绍一种常用的Modbus地址设置方案,以帮助用户正确配置Modbus设备。
2. 地址类型Modbus协议定义了两种地址类型,分别是物理地址和逻辑地址。
2.1 物理地址物理地址是设备在物理网络中的唯一标识,通常由设备的硬件属性决定。
物理地址是一个16位的整数,在Modbus协议中表示为一个字节。
2.2 逻辑地址逻辑地址是为了方便用户进行管理和配置而引入的,与物理地址一一对应。
逻辑地址可以是一种用户定义的、易于识别的标识符,例如设备的名称或序号。
逻辑地址也是一个16位的整数,在Modbus协议中表示为一个字节。
3. 地址范围根据Modbus协议的规定,物理地址和逻辑地址的范围分别为1-247和1-247。
地址0和地址255被保留,用户不应该使用这两个地址。
4. 地址分配方式Modbus地址可以手动分配或自动分配。
4.1 手动分配手动分配地址是指用户根据实际情况手动设置设备的物理地址和逻辑地址。
用户需要根据设备的硬件属性,选择一个未被使用的物理地址,并为该地址分配一个逻辑地址。
手动分配地址需要用户具备一定的Modbus协议知识和经验。
4.2 自动分配自动分配地址是一种更为简便的方式,适用于大规模部署设备的场景。
在自动分配地址方案中,用户只需设置一个起始地址,设备会自动分配一个未被占用的地址作为其物理地址和逻辑地址。
自动分配地址可以减少用户的工作量,提高部署效率。
5. 地址冲突处理由于Modbus地址的范围有限,可能会出现地址冲突的情况。
当两个设备使用相同的地址时,将无法进行正常通信。
为了避免地址冲突,可以采取以下方法:•手动分配地址时,用户需要注意检查已被占用的地址,避免重复使用。
•自动分配地址时,设备应该具备地址冲突检测和处理的功能,能够自动检测到地址冲突,并采取相应的措施解决冲突。
操作系统作业点评三1. 计算逻辑地址和物理地址空间【例1】考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:(1)逻辑地址需要多少二进制位表示?(2)物理地址需要多少二进制位表示?分析在分页存储管理中,逻辑地址结构如下图所示。
它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。
页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1MB个页面。
页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为212,即2KB。
同理,物理地址中,块号的地址位数决定了块的数量。
由于页式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。
解因为页面数为8=23,故需要3位二进制数表示。
每页有1024个字节,1024=210,于是页内地址需要10位二进制数表示。
32个物理块,32=25,需要5位二进制数表示。
(1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。
(2)页的物理地址由块号和块内地址的拼接,而块与页的大小相等,所以需要5+10=15位二进制数表示。
思考题1:设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048字节,内存总共有8个存储块,试问逻辑地址至少应为多少位?内存空间有多大?2. 将逻辑地址映射为物理地址【例2】若在一分页存储管理系统中,某作业的页表如下所示。
已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。
页号块号0 12 323 1 6分析 页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。
若给定逻辑地址A ,页面的大小为L ,则页号p 和页内地址d 可按照下式求得: p=INT [A/L] d=[A] MOD L其中,INT 是取整函数(取数值的整数部分),MOD 是取余函数(取数值的余数部分)。
逻辑地址与物理地址
物理地址是外部连接使用的、唯一的,它是“与地址总线相对应”;而逻辑地址是内部和编程使用的、并不唯一。
在内存中的实际地址就是所谓的“物理地址”,而逻辑地址就是逻辑段管理内存而形成的。
例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。
只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换),逻辑地址也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。
8086体系的CPU一开始是20根地址线, 寻址寄存器是16位, 16位的寄存器可以访问64K的地址空间, 如果程序要想访问大于64K的内存, 就要把内存分段, 每段64K, 用段地址+偏移量的方法来访问。
386CPU出来之后, 采用了32条地址线, 地址寄存器也扩为32位, 这样就可以不用分段了, 直接用一个地址寄存器来线性访问
4G的内存了. 这就叫平面模式.
将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址。
这里左移的4位是二进制位;如果用十六进制表达地址就是左移一位。
左移4位还可以表达为乘以16,即:段
地址×16+偏移地址。
同一个物理地址可以对应多个逻辑地址形式。
所以物理地址转换为逻辑地址,需要明确段基地址
或偏移地址,然后同上原则确定另一个地址。
逻辑地址1460H : 0100H 或1380H : 0900H
物理地址14700H
于是,对于主存14700H单元,我们可以描述为在1460H(或1380H)段的0100H(或0900H)单元,或者说主存1460H : 0100H(或1380H : 0900H)单元。
存储单元的地址可以用段基值和段内偏移量来表示,段基值确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址。
8086对外连接使用一个20位的线性地址唯一确定一个存储单元,也就是说:对于每个存储器单元都有的一个唯一的20位地址,我们称为该单元的物理地址或绝对地址。
8086在内部结构中和程序设计时采用逻辑段管理内存,就形成了逻辑地址。
它的表达形式
为“段基地址 : 偏移地址”。
逻辑地址=段基地址 : 偏移地址
∙段基地址(Segment)——逻辑段在主存中的起始位置,简称段地址。
由于8086规定段开始于模16地址,所以省略低4位0不显式表达,段基地址就可以用16位数据表示。
∙偏移地址(Offset)——主存单元距离段起始位置的偏移量(Displacement)。
由于限定每段不超过64KB(2^16),所以偏移地址也可以用16位数据表示。