逻辑地址转换为物理地址
逻辑地址如何转换成物理地址

逻辑地址如何转换成物理地址逻辑地址和物理地址是什么?逻辑地址如何转换成物理地址?看到很多人都在问这个问题,小编为大家分享了逻辑地址如何转换成物理地址的方法,下面大家跟着小编一起来了解一下吧。
逻辑地址转换成物理地址CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,再利用其页式内存管理单元,转换为最终物理地址。
物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。
所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。
也许错误的理解更利于形而上的抽像。
虚拟内存(virtual memory)这是对整个内存(不要与机器上插那条对上号)的抽像描述。
它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000 - 1那个地址元素;之所以是这样,是因为现代操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。
进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。
这个“转换”,是所有问题讨论的关键。
有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。
(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。
逻辑地址转物理地址

逻辑地址转物理地址逻辑地址转物理地址参考如下1.物理地址和逻辑地址为什么会有这两种地址?个人觉的原因在于逻辑地址分配更加灵活,可以允许不唯一,看起来也较为直观,例如,一段代码中分配数组,逻辑地址上是连续的,然而在物理地址上,这个数组所占用的页可能分散开来,物理地址上就是不连续的,这样对程序的可理解性上有影响。
另外,有了逻辑地址这个概念,才能使用虚拟内存技术。
CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,再利用其页式内存管理单元,转换为最终物理地址。
物理地址(physicaladdress)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。
——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。
所以,说它是“与地址总线相对应”,是更贴切一些,不过抛开对物理内存寻址方式的考虑,直接把物理地址与物理的内存一一对应,也是可以接受的。
也许错误的理解更利于形而上的抽像。
虚拟内存(virtualmemory)这是对整个内存(不要与机器上插那条对上号)的抽像描述。
它是相对于物理内存来讲的,可以直接理解成“不直实的”,“假的”内存,例如,一个0x08000000内存地址,它并不对就物理地址上那个大数组中0x08000000-1那个地址元素;有了这样的抽像,一个程序,就可以使用比真实物理地址大得多的地址空间。
(拆东墙,补西墙,银行也是这样子做的),甚至多个进程可以使用相同的地址。
不奇怪,因为转换后的物理地址并非相同的。
逻辑地址(logicaladdress)Intel为了兼容,将远古时代的段式内存管理方式保留了下来。
操作系统习题答案

例1:某分页系统,主存容量为64K,页面大小为1K,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中。
将十进制的逻辑地址1023、2500、4500转换为物理地址。
1)逻辑地址1023:1023/1K得页号为0,页内地址为1023,查页表找到对应得物理块为2,故物理地址为2*1K+1023=3071。
2)逻辑地址2500:2500/1K得页号为2,页内地址为452,查页表找到对应得物理块为6,故物理地址为6*1K+452=6596。
3)逻辑地址4500:4500/1K得页号为4,页内地址为404,页号大于页表长度,产生越界中断例2:某系统有224字节的内存,固定分区的大小为216字节,1)进程表中的每个表项至少要用多少位来记录分配给进程的分区?2)界限寄存器必须要有多少位?1)224字节/ 216字节= 28字节,因此需要8位来存储28个分区中的一个。
2)固定分区的大小为216字节,故最大合法地址就是216-1,二进制中216-1就是16位,所以界限寄存器有16位。
例3:在某简单分页系统中,有224字节的物理内存,256页的逻辑地址空间,且页的大小为210字节,问逻辑地址有多少位?答:逻辑地址空间包括了256=28个大小为210字节的页,总的逻辑地址空间就是210×28=218字节,因此需要18位的地址来表示218字节地址空间。
例4:某系统的用户空间共有32个页面,每页1KB,主存16KB。
试问:1)逻辑地址的有效位就是多少?2)物理地址需要多少位?3)假定某时刻系统为用户的第0,1,2,3页分别分配的物理块号为5,10,4,7,试将虚地址0A5CH与093CH变换为物理地址。
答:1)逻辑地址空间包括了32=25个大小为210字节的页,总的逻辑地址空间就是25×210=215字节,因此需要15位的地址来表示215字节地址空间。
2)物理地址=主存16KB=214,因此物理地址需要14位。
《操作系统》习题集:第3章 存储管理

第3章存储管理-习题集一、选择题1.把作业空间中使用的逻辑地址变为内存中物理地址称为()。
【*,★,联考】A. 加载B. 重定位C. 物理化D. 逻辑化2.为了保证一个程序在主存中改变了存放位置之后仍能正确执行,则对主存空间应采用()技术。
【*,★,联考】A. 静态重定位B. 动态重定位C. 动态分配D. 静态分配3.分区分配内存管理方式的主要保护措施是()。
(注:分区包括“固定分区”和“可变分区”)【**,09考研】A. 界地址保护B. 程序代码保护C. 数据保护D. 栈保护4.分区管理要求对每一个作业都分配()的内存单元。
【*,★,联考】A. 地址连续B. 若干地址不连续C. 若干连续的块D. 若干不连续的块5.在固定分区分配中,每个分区的大小是()。
【*,联考】A. 相同B. 随作业长度变化C. 可以不同但预先固定D. 可以不同但根据作业长度固定6.在可变式分区存储管理中的拼接技术可以()。
(注:拼接是指通过移动将多个分散的小分区合并成一个大分区。
)【*,★,联考】A. 集中空闲分区B. 增加内存容量C. 缩短访问周期D. 加速地址转换7.可变式分区存储管理中,采用拼接技术的目的是()。
【*,联考】A. 合并空闲分区B. 合并分配区C. 增加主存容量D. 便于地址转换8.某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空),采用最佳适配算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,此时主存中最大空闲分区的大小是()。
【**,★,10考研】A. 7MBB. 9MBC. 10MBD. 15MB9.在分页存储管理中,主存的分配是()。
【*,联考】A. 以块为单位进行B. 以作业的大小分配C. 以物理段进行分配D. 以逻辑记录大小进行分配10.首次适应算法的空闲分区是()。
【**,★,联考】A. 按大小递减顺序连在一起B. 按大小递增顺序连在一起C. 按地址由小到大排列D. 按地址由大到小排列11.最佳适应算法的空闲分区是()。
操作系统4自测

12.固定分区中各分区的大小是(A)。
选择一项:
A. 相同或者不同,但预先固定
B. 根据进程要求确定
C. 随进程个数而定
D. 相同的
13.在存储管理中,为实现地址映射,硬件应提供两个寄存器,一个是基址寄存器。另一个是(A)。
选择一项:
A. 限长寄存器
B. 程序状态字寄存器
B. 重定位
C. 运行
D. 连接
6.经过(C),目标程序可以不经过任何改动而装入物理内存单元。
选择一项:
A. 存储扩充
B. 静态重定位
C. 动态重定位
D. 编译或汇编
7.动态重定位是在程序(D)期间,每次访问内存之前进行重定位。
选择一项:
A. 修改
B. 装入
C. 编译
6.动态存储分配时,不需要靠硬件地址变换机构实现重定位。×
7.把内存物理地址转变为逻辑地址的过程称作重定位。×
8.固定分区存储管理的各分区的大小不可变化,这种管理方式不适合多道程序设计系统。×
9.可重定位分区存储管理可以对作业分配不连续的内存单元。×
10.为了提高内存的利用率,在可重定位分区分配方式中采用紧缩技术来减少内存碎片。√
B. 对换技术
C. 物理扩充
D. 覆盖技术
10.下列存储管理方案中,不采用动态重定位的是(D)。
选择一项:
A. 页式管理
B. 可变分区
C. 段式管理
D. 固定分区
11.分区管理要求对每一个进程都分配(B)的内存单元。
选择一项:
A. 若干地址不连续
B. 地址连续
第4章存储器管理-选择题

A.分页式存储管理 B.分段式存储管理 C.固定分区式存储管理 D.段页式存储管理
18.多进程在主存中彼此互不干扰的环境下运行,操作系统是通过()来实现的。
A.内存分配 B.内存保护 C.内存扩充 D.地址映射
19.分区管理中采用最佳适应分配算法时,把空闲区按()次序叠记在空闲区表中
A.长度递增 C.地址递增 B.长度递减
B.每个进程拥有一张页表,但只有执行进程的页表驻留在内存中
C.所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
D.所有进程共享一张页表,只有页表中当前使用的页面必须駐留在内存中,以最度地节省有服的内存空间
46.【2009 统考真题】一个分段存储管理系统中,地址长度为 32 位,其中段号占 8 位,则最大段长是()
34、在页式存管理中选择页面的大小,需要考下列()因素
Ⅰ.页面大的好处是页表比较少 Ⅱ.页面小的好处是可以减少由内碎片引起的内存浪费
Ⅲ.影响磁盘访问时间的主要因素通常不是顶面大小,所以使用时优先考虑较
A.Ⅰ和Ⅲ B.Ⅱ和Ⅲ
C.Ⅰ和Ⅱ
D.Ⅰ、Ⅱ和Ⅲ
35.某个操作系统对内存的管理采用页式存储管理方法,所划分的页面大小()。
54.【2016 统考真题】某进程的段表内容如下所示。
段号 段长
内存起始地址 权限
状态
0
100
6000
只读
在内存
1
200
-
读写
不在内存
2
300
4000
读写
在内存
访问段号为 2、段内地址为 400 的逻辑地址时,进行地址转换的结果是()
A.段缺失异常 B.得到内存地址 4400 C.越权异常 D.越界异常
操作系统练习四2020

操作系统练习四2020一、单项选择题1.通常,用户编写的程序中所使用的地址是()。
选择一项:A. 逻辑地址B. 绝对地址C. 物理地址D. 内存地址正确答案是:逻辑地址2.可由CPU调用执行的程序所对应的地址空间为()。
选择一项:A. 虚拟地址空间B. 逻辑地址空间C. 物理空间D. 符号名空间正确答案是:物理空间3.下列存储器中,速度最快的是()。
选择一项:A. 高速缓存CacheB. 内存C. CPU内部寄存器D. 硬盘正确答案是:CPU内部寄存器4.下列存储器中,容量最大的是()。
选择一项:A. CPU内部寄存器B. 内存C. 硬盘D. 高速缓存Cache正确答案是:硬盘5.把逻辑地址转变为内存物理地址的过程称作()。
选择一项:A. 编译B. 重定位C. 连接D. 运行正确答案是:重定位6.经过(),目标程序可以不经过任何改动而装入物理内存单元。
选择一项:A. 编译或汇编B. 动态重定位C. 静态重定位D. 存储扩充正确答案是:动态重定位7.动态重定位是在程序()期间,每次访问内存之前进行重定位。
选择一项:A. 装入B. 修改C. 执行D. 编译正确答案是:执行8.在目标程序装入内存时,一次性完成地址修改的方式是(). 选择一项:A. 动态连接B. 静态连接C. 动态重定位D. 静态重定位正确答案是:静态重定位9.在分时系统中,可将进程不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据,称为()。
选择一项:A. 对换技术B. 覆盖技术C. 物理扩充D. 虚拟技术正确答案是:对换技术10.下列存储管理方案中,不采用动态重定位的是()。
选择一项:A. 可变分区B. 段式管理C. 页式管理D. 固定分区正确答案是:固定分区11.分区管理要求对每一个进程都分配()的内存单元。
选择一项:A. 若干不连续的页面B. 若干地址不连续C. 地址连续D. 若干连续的页面正确答案是:地址连续12.固定分区中各分区的大小是()。
逻辑地址线性地址物理地址三个地址有什么联系

逻辑地址线性地址物理地址三个地址有什么联系逻辑地址线性地址物理地址一、逻辑地址转线性地址我们写个最简单的helloworld程序,用gcc编译,再反汇编后会看到以下指令:mov0x80495b0,%eax这里的内存地址0x80495b0就是一个逻辑地址,必须加上隐含的DS数据段的基地址,才能构成线性地址。
也就是说0x80495b0是当前任务的DS数据段内的偏移。
在x86保护模式下,段的信息(段基线性地址、长度、权限等)即段描述符占8个字节,段信息无法直接存放在段寄存器中(段寄存器只有2字节)。
Intel的设计是段描述符集中存放在GDT或LDT中,而段寄存器存放的是段描述符在GDT或LDT内的索引值(index)。
这样的情况下Linux只用到了GDT,不论是用户任务还是内核任务,都没有用到LDT。
GDT的第12和13项段描述符是__KERNEL_CS和__KERNEL_DS,第14和15项段描述符是__USER_CS和__USER_DS。
内核任务使用__KERNEL_CS和__KERNEL_DS,所有的用户任务共用__USER_CS和__USER_DS,也就是说不需要给每个任务再单独分配段描述符。
内核段描述符和用户段描述符虽然起始线性地址和长度都一样,但DPL(描述符特权级)是不一样的。
__KERNEL_CS和__KERNEL_DS的DPL值为0(最高特权),__USER_CS和__USER_DS的DPL值为3。
用gdb调试程序的时候,用inforeg显示当前寄存器的值:cs0x73115ss0x7b123ds0x7b123es0x7b123可以看到ds值为0x7b,转换成二进制为0000000001111011,TI字段值为0,表示使用GDT,GDT索引值为01111,即十进制15,对应的就是GDT内的__USER_DS用户数据段描述符。
从上面可以看到,Linux在x86的分段机制上运行,却通过一个巧妙的方式绕开了分段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例2】若在一分页存储管理系统中,某作业的页表如下所示。
已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。
页号块号
0 1 2 32 3 1 6
分析页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。
若给定逻辑地址A,页面的大小为L,则页号p和页内地址d 可按照下式求得:
p=int [A/L]d=A mod L
其中,int是取整函数(取数值的整数部分),mod是取余函数(取数值的余数部分)。
下图显示了页式管理系统的地址转换机构。
页表的作用是实现从页号到物理块号的地址映射。
以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。
这样物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
所以物理地址的计算公式为:
物理地址=块的大小(即页的大小L)′块号f+页内地址d
解本题中,为了描述方便,设页号为p,页内位移为d,则:
(1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。
查页表第0页在第2块,所以物理地址为1024′2+1011=3059。
(2)对于逻辑地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。
查页表第2页在第1块,所以物理地址为1024+100=1124。
(3)对于逻辑地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。
查页表第3页在第6块,所以物理地址为1024′6+928=7072。
(4)对于逻辑地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。
因页号超过页表长度,该逻辑地址非法。
【例3】某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。
假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号物理块号
05
110
24
37
则逻辑地址0A5C(H)所对应的物理地址是什么?
分析页式存储管理的逻辑地址分为两部分:页号和页内地址。
由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为1KB”,1K=210,可知内页地址占10位。
由“内存为16KB”,可知有16块,块号为4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:000 1010 0101 1100,根据上面的分析,下划线部分为页内地址,编码“000 10”为页号,表示该逻辑地址对应的页号为2。
查页表,得到物理块号是4(十进制),即物理块地址为:01 00 ,拼接块内地址10 0101 1100,得01 0010 0101 1100,即125C(H)。
解逻辑地址0A5C(H)所对应的物理地址是125C(H)。