㈠ 逻辑地址转换成物理地址的计算题
页表可以实现从页号到物理块号的地址映射。通过逻辑地址的页号来寻找页表,从而获得物理块号;在将页内地址直接送入物理地址寄存器的块内地址字段中。将块号和块内地址拼接成实际访问地址,即可得到物理地址。
物理地址的计算公式为:物理地址=块的大小(即页的大小L)* 块号f+页内地址d
代入本题解答:
页号=int(2500/1024)=2;页内位移=2500mod1024=452;假设页号2对应块号1,则物理地址为:
物理地址=1024*1+452=1476
(1)物理地址块内地址怎么算扩展阅读:
逻辑地址(LogicalAddress)即通过电脑程序产生的与段相关的偏移地址部分,也叫做相对地址;
物理地址,即计算机中每一个字节单元的唯一存储地址,也叫做实际地址或绝对地址。
利用所给的逻辑地址首先找到在页表中的那一页,即页号,再者利用所给的逻辑地址计算出在页表的页偏移量,从而利用页表所对应的物理块计算出块号,再利用块号的基础上计算出所给的偏移量。(一般只针对于动态重定位的变化使用)
㈡ 磁盘的物理地址如何确定
磁盘的物理地址由柱面号C、磁头号H和扇区号S确定。在已知硬盘逻辑地址即逻辑扇区号LS的情况下,求硬盘对应的物理地址的柱面号C、磁头号H和扇区号S的方法如下:
C=((Ls div NS)div NH)+ C1
H=((Ls div NS)mod NH)+ H1
S=(Ls mod NH)+ S1
实例:设硬盘的磁头号为4,每磁道17个扇区,其中逻辑硬盘D的第一个扇区在硬盘的柱面120、磁头1、扇区1上,求逻辑D盘上逻辑扇区为2757编号对应的物理地址是多少?
分析:根据上面的已知条件,可知C1=120, H1=1,S1=1,NS=17,NH=4,Ls=2757,则将这些数据代入上面的公式可得:
C=((2757 div 17)div 4)+120=160
H=((2757 div 17)mod 4)+1=3
S=(2757 mod 17)+1=4
即逻辑扇区号Ls为2757的硬盘对应的物理地址为柱面号是160、磁头号是3和扇区号为4。
(2)物理地址块内地址怎么算扩展阅读
在早期的硬盘中,由于每个磁道的扇区数相等,外磁道的记录密度远低于内磁道,因此造成很多磁盘空间的浪费。为了解决这一问题,人们改用等密度结构,即外圈磁道的扇区比内圈磁道多。
此种结构的硬盘不再具有实际的3D参数,寻址方式也改为以扇区为单位的线性寻址,这种寻址模式便是LBA(Logic Block Address,逻辑块地址)。在这种模式下,硬盘的物理地址与逻辑地址的转换问题有一定必要性和复杂性。
所谓逻辑地址(逻辑扇区,LBA)是物理地址(物理扇区,C/H/S)的一组连续数字的编号,操作系统采用的一种扇区编号方式,其编号是从0开始到某个最大值方式排列,并连成一条线。使用逻辑地址主要有以下两个优点:
第一,逻辑地址的概念使硬盘的读写操作脱离了柱面、磁头和扇区的硬件参数;
第二,在硬盘中,每一定数目的扇区组成了数据文件的最小单位——簇,在对一个具体的簇进行读写操作时,操作系统划分一个一维的逻辑地址号要比使用三维物理地址简单很多,如果一个簇的扇区跨越在两个盘片,则使用“柱面、磁头和扇区”的表示方法就更加复杂。
㈢ 物理地址的算法
“H”表示16进制。
物理地址的计算方法是 段地址×10H+偏移地址,所以你说的物理地址是CS×10H+IP=FE00H×10H+0200H=FE000H+0200H=FE200H。
㈣ 什么是逻辑地址和物理地址
有网友问到我:什么是逻辑地址和物理地址?怎么转换?针对此问题,我为大家分享了具体的操作 方法 ,希望对你有帮助!
什么是逻辑地址是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地址(假定代码段、数据段如果完全相同)。应用程式员仅需和逻辑地址打交道,而分段和分页机制对你来说是完全透明的,仅由系统编程人员涉及。应用程式员虽然自己能直接操作内存,那也只能在 操作系统 给你分配的内存段操作。
什么是物理地址用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。 ——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。也许错误的理解更利于形而上的抽像。 虚拟内存(virtual memory) 这是对整个内存(不要与机器上插那条对上号)的抽像描述。它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。这个“转换”,是所有问题讨论的关键。有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。不奇怪,因为转换后的物理地址并非相同的。 ——可以把连接后的程序反编译看一下,发现连接器已经为程序分配了一个地址,例如,要调用某个函数A,代码不是call A,而是call 0x0811111111 ,也就是说,函数A的地址已经被定下来了。没有这样的“转换”,没有虚拟地址的概念,这样做是根本行不通的。打住了,这个问题再说下去,就收不住了。逻辑地址(logical address) Intel为了兼容,将远古时代的段式内存管理方式保留了下来。逻辑地址指的是机器语言指令中,用来指定一个操作数或者是一条指令的地址。以上例,我们说的连接器为A分配的0x08111111这个地址就是逻辑地址。 ——不过不好意思,这样说,好像又违背了Intel中段式管理中,对逻辑地址要求,“一个逻辑地址,是由一个段标识符加上一个指定段内相对地址的偏移量,表示为 [段标识符:段内偏移量],也就是说,上例中那个0x08111111,应该表示为[A的代码段标识符: 0x08111111],这样,才完整一些” 线性地址(linear address)或也叫虚拟地址(virtual address) 跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。
逻辑地址和物理地址拓展知识存储器中每一个单元的地址可以用两种方法表示:
1.逻辑地址:其表达形式为“段地址:段内偏移地址”。
2.物理地址:CPU与存储器进行数据交换时在地址总线上
提供的20位地址信息称为物理地址。
物理地址=段地址×10H+段内偏移量
CPU一次处理的数据是16位,地址总线实际上代表CPU的寻址能力,地址线为20条那么CPU实际的寻址能力就是2的20次方就是1M。实际的物理地址是这样形成的:
段地址*10H+偏移地址,偏移地址用IP指向,IP是16位的。
例如段地址是1234H,偏移地址是4321H
那么实际的物理地址怎么算呢:1234H*10H+4321H=12340H+4321H=16661H
实际上可以这么来理解,就是段地址左移一位后加上偏移地址就得出实际的物理地址。
这里逻辑地址和物理地址的关系又可以用一个比喻来说明:
比如你的学号是0102,这是你的真实地址亦即物理地址,那么又假如01表示你的班级名称,02表示你相对整个班级的位置,这就是逻辑地址,道理是一样的,只不过在实际由逻辑地址合成物理地址的时候需要将物理地址左移一位,再加上偏移地址。
逻辑地址到物理地址的转换方法以一个例子的形式讲解逻辑地址到物理地址的转换:
某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。
解题过程:
首先要知道页式存储管理的逻辑地址分为两部分:页号和页内地址。物理地址分为两部分:
关系为:逻辑地址=页号+页内地址d
物理地址=块号*块长度( 等于页面长度 L )+页内地址;
页号: p = lnt( 逻辑地址 A / 页面长度 L ); d = 逻辑地址 A % 页面长度 L (取余)
分析题:已知:用户编程空间共32个页面,2ˆ5=32得知页号部分占5位,由“每页为1KB”,1K=2^10,可知内页地址占10位。
由“内存为16KB”,2^4=16得知块号占4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,
00010(本题特例,因为页面长度为1KB)为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是11,11转换二进制是1011,11* 2^10 + d即可求出物理地址为10111001011100,化成十六进制为2 E5C;
即则逻辑地址0A5C(H)所对应的物理地址是2E5C;
猜你喜欢:
1. IP地址和物理地址有什么区别
2. 物理地址和逻辑地址的区别
3. 虚拟地址与物理地址的概念
4. 物理地址什么意思
5. 逻辑地址如何转换成物理地址
6. 物理地址有什么用
7. 物理地址作用是什么
㈤ 操作系统的物理地址怎么计算
其实第一条回答是正确的,我在这里为网友们追加一个解释:
按照书上定义,在页式存储系统中,
绝对地址 = 块号 x块长 +业内偏移地址。
相对地址 由一段内存的高bit位作为页号,低bit位作为页内偏移地址
那重要的一点是,如果找出这三个变量。且看该题:
每页1KB,说明了,业内偏移地址的范围是0~1023byte 换句话说,页内偏移地址占16bit中的 0-9bit, 那按照相对地址的概念,那10-15 bit就该为页号地址了。
那么, 0x0A5C <=> 0000 1010 0101 1100
则前面 0000 10 这6个bit 表示页号,换算成十进制为 2,也即是页号为2,再按照页表推算,即物理块号就为4, 而4再换算成16进制,即是0001 00;而后面 10 0101 1100 这10个bit位,理所当然的为页内偏移地址了。 则物理地址就该为0001 00 (占据10-15bit)+ 10 0101 1100 (占据0-9bit) = 0001 0010 0101 1100
他的所谓凭接,其实就是让0001 00 占用bit 10-15.
㈥ 8086如何计算的物理地址
8086中含有存储器。存储器中每一个单元的地址可以用两种方法表示:
1.逻辑地址:其表达形式为“段地址:段内偏移地址”。
2.物理地址:CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。
物理地址=段地址×10H+段内偏移量
注:H为16进制,CS :代码段寄存器,
㈦ 逻辑地址为,的实际物理地址是多少
要知道页号、块号才能计算。逻辑地址=页号+页内地址;物理地址=块号+页内地址。
在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,着名的以太网卡,其物理地址大小是48bit(比特位),前24位是厂商编号,后24位为网卡编号,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。
以太网地址管理机构(IEEE)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
(7)物理地址块内地址怎么算扩展阅读:
一个逻辑地址由两部份组成,段标识符和段内偏移量。段标识符是由一个16位长的字段组成,称为段选择符。其中前13位是一个索引号。
引号可以理解为数组的下标——而它将会对应一个数组,就是“段描述符(segment descriptor)”,段描述符具体地址描述了一个段(对于“段”可以理解为把虚拟内存分为一个一个的段)。
比如一个存储器有1024个字节,可以把它分成4段,每段有256个字节)。这样,很多个段描述符,就组了一个数组,叫“段描述符表”,这样,可以通过段标识符的前13位,直接在段描述符表中找到一个具体的段描述符,这个描述符就描述了一个段。
㈧ 操作系统-物理地址计算
答:逻辑地址0A5C(H)所对应的二进制表示形式是:0000 1010 0101 1100 ,由于1K=2^10,下划线部分前的编码为000010,表示该逻辑地址对应的页号为2。查页表,得到物理块号是4(十进制),即物理块地址为:0001 0010 0000 0000 ,拼接块内地址0000 0000 0101 1100,得0001 0010 0101 1100,即125C(H)。
㈨ 逻辑地址转换物理地址公式
物理地址是明确的、最终用在总线上的编号。那么逻辑地址转物理地址怎么转?我为大家介绍逻辑地址转物理地址的解决 方法 。希望大家喜欢。
逻辑地址转换物理地址公式参考如下
1. 物理地址和逻辑地址
物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege checks)。
逻辑地址:CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。
(具体步骤 共三步)
1.确定虚拟地址(物理地址)的有效位
例如:假设页面大小1KB,共32页。(页面:逻辑地址 页框:物理地址)
由32(KB)=32×1024(B) 即等于32×1024 字节
二进制用多少位能有效表示这么多字节呢——答是:15位 因为32×1024=2^5×2^10=2^15
2.再次确定逻辑地址页面位数 你应该知道:逻辑地址=页号+页面
还是以上假设,那么页面大小为1KB=1024字节 同样的方法计算出表示位数:10位
如果给你逻辑地址:0000 1111 1000 0000
那么由:011+11100000000(相当于 页号+页面(10位))推得出页号011=3
3.根据页号找出对应的页框号
由 物理地址=页框号×页块大小(页块大小是等于页面大小的)+页内位移(即页面逻辑地址)
根据上面 物理地址=页框号×1024B + 1110000000 ( 这里的相加是指位置上而言)
例如:110+110=110110(即高地址+低地址)
提问:在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096B,现有一逻辑地址为2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少?
答:4096B=2^12B
16位寻址一共2^16B
分页存储。共分的页:2^16/2^12=2^4=16 共分16页。
第0页的地址范围 0 - FFFH
第1页的地址范围 1000H - 1FFFH
第2页得地址范围 2000H - 2FFFH
.....
第11页 B000H - BFFFH
第15页 F000H - FFFFH
2F6AH=10 1111 0110 1010 在2页的范围对应物理块11
所以物理地址为:
2F6AH - 2000H + B000H = F6AH + B000H= BF6AH