精华内容
下载资源
问答
  • 分页存储逻辑地址转物理地址

    千次阅读 多人点赞 2017-07-03 09:34:24
    分页存储逻辑地址转物理地址:例如:已知某个分页系统,页面大小为1K(即1024字节),某一个作业有4个页面,分别装入到主存的第3、4、6、8块中,求逻辑地址2100对应的物理地址。解: 第一步:求逻辑地址的页号 = 2100...

    在存储管理中分为连续存储和非连续存储,非连续存储又分为分页存储、分段存储和段页式存储。

    分页存储逻辑地址转物理地址:

    例如:

    已知某个分页系统,页面大小为1K(即1024字节),某一个作业有4个页面,分别装入到主存的第3、4、6、8块中,求逻辑地址2100对应的物理地址。

    解:
    • 第一步:求逻辑地址的页号 = 2100/1024=2 (整除)
    • 第二步:求页内偏移量 = 2100 % 1024 =52 (取余)
    • 第三步:产生页表:
    页号 页框号/帧号
    0 3
    1 4
    2 6
    3 8
    • 第四步:根据逻辑地址的页号查出物理地址的页框号/帧号:
      如上图,逻辑地址的第2页对应物理地址的第6页。
    • 第五步:求出物理地址 = 6*1024 + 52 = 6196

    补充:十六进制逻辑地址转物理地址

    例如:
    一分页存储管理系统中逻辑地址长度为16位,页面大小为4KB字节,现有一逻辑地址为2F6AH,且第0、1、2页依次存放在物理块5、10、11中。求逻辑地址2F6AH对应的物理地址
    解:
    第一步:将逻辑地址2F6AH转换为二进制为:0010 1110 0110 1010
    第二步:由于页面大小为4KB字节,(4KB=2的12次方)。所以逻辑地址的后12位为“页内地址”(也叫做页内偏移量)
    第三步:由于逻辑地址的后12位为页内地址,所以剩下的前4位为页号:即0010为页号
    第三步:根据页表可知,0010(十进制为2)对于的页框号为11(二进制为1011)
    所以最终的物理地址为:1011 1111 0110 1010
    即BF6AH

    展开全文
  • 操作系中分页管理总的逻辑地址到物理地址的映射转换算法 C语言
  • 基本概念: 页框/内存块:将内存空间分为大小相等的分区,每个分区就是一个...从而实现逻辑地址到物理地址的转换。 如图: 接下来看具体的实现过程: 1.在进程未调度时,PCB中会存放页表始址和页表长度(多少个页表项

    基本概念:
    页框/内存块:将内存空间分为大小相等的分区,每个分区就是一个页框,或内存块。
    页/页面:将用户进程的地址空间分成与页框大小相等的一个个区域,每个区域就是一个页或页面;
    页表:页表记录进程页面和实际存放的内存块之间的对应关系,每个进程都有一个页表;

    通过页面的形式,可以将用户进程分割成一个个区域,实现在内存中的不连续分配管理。通过页表可以实现页面与页框一一对应。从而实现逻辑地址到物理地址的转换。
    如图:
    在这里插入图片描述
    接下来看具体的实现过程:

    1.在进程未调度时,PCB中会存放页表始址和页表长度(多少个页表项)。在线程调度时,操作系统会将页表始址和页表长度放在页表寄存器中(PTR)中;
    2.在执行每一条指令时,算出指令中的逻辑地址的页号和页内偏移量;将页号与PTR中的页表长度进行比较(若页号超出页表长度,则抛出一个越界中断异常)。
    3.若在页表长度范围内,则继续进行。根据PTR中的页表始址和页号以及页表项长度算出页表项地址(页表项地址=页表始址+页表项长度*页号)。
    4.页表项地址找到对应的内存块号,再根据业内偏移量找到具体的物理地址。

    展开全文
  •  (1)逻辑地址需要多少二进制位表示?  (2)物理地址需要多少二进制位表示?  它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。页号的地址位数决定了页的多少,...

    【例1】考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:

      (1)逻辑地址需要多少二进制位表示?

      (2)物理地址需要多少二进制位表示?

     

      它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1MB个页面。页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为212,即2KB。

      同理,物理地址中块号的地址位数决定了块的数量。由于页式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。

      解因为页面数为8=23,故需要3位二进制数表示。每页有1024个字节,1024=210,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=25)。

      (1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。

      (2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。

       

      【例2】若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。

    页号

    块号

    0

    1

    2

    3

    2

    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。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:

    页号

    物理块号

    0

    5

    1

    10

    2

    4

    3

    7

      则逻辑地址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)。

    转载于:https://www.cnblogs.com/Kobe10/p/5673520.html

    展开全文
  • 分页存储管理逻辑地址到物理地址的转换过程解析首先要知道,物理地址=块号+页内地址 逻辑地址=页号+页内地址所以物理地址和逻辑地址后面部分是相同的,即都为页内地址。下面以一个例子说明如何由逻辑地址求物理...

                                分页存储管理中逻辑地址到物理地址的转换过程解析

    文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍。

    首先要知道,物理地址=块号+页内地址

                       逻辑地址=页号+页内地址

    所以物理地址和逻辑地址后面部分是相同的,即都为页内地址。

    下面以一个例子说明如何由逻辑地址求物理地址

    首先是分页存储

    (1)某虚拟存储器的用户编程空间共64个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:

    页号                物理块号

    0                     3

    1                     7

    2                    9

    3                    5

    则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。 

    用户编程空间共64个页面,2ˆ6=64 得知页号部分占6位,由“每页为1KB”,1K=2^10,可知内页地址占10位。

    由“内存为16KB”,2^4=16得知块号占4位。

           逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,0 000010为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是9,9转换二进制是1 0 01,即可求出物理地址为10 011001011100,化成十六进制为265C;

    即则逻辑地址0A5C(H)所对应的物理地址是265C;
     

    (2)接下来介绍页表的硬件实现:

    上一小节中写到页表是逻辑地址转化到物理地址的关键所在。那么页表如何存储?

    每个操作系统都有自己的方法来保存页表。绝大多数都会为每个进程分配一个页表。现在由于页表都比较大,所以放在内存中(以往是放在一组专用寄存器里),其指针存在进程控制块(PCB)里,当进程被调度程序选中投入运行时,系统将其页表指针从进程控制块中取出并送入用户寄存器中。随后可以根据此首地址访问页表。

    页表的存储方式是TBL(Translation look-aside buffer, 翻译后备缓冲器)+内存。TBL实际上是一组硬件缓冲所关联的快速内存。若没有TBL,操作系统需要两次内存访问来完成逻辑地址到物理地址的转换,访问页表算一次,在页表中查找算一次。TBL中存储页表中的一小部分条目,条目以键值对方式存储。



    (3) 页表的数据结构

    Hierarchical Paging(层次化分页),实际上就是将页号分为两部分,第一部分作为索引,第二部分作为页号的偏移是为了解决页表越来越大的问题而提出的

    分页存储有内部碎片。

    接下来是分段存储segmentation

    为什么要引入分段存储呢,简单地说分页管理方式是从计算机的角度考虑设计的,以提高内存利用率,提高计算机的性能,且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便编程,信息保护和共享,动态增长以及动态链接等多方面的要求。

    段式管理方式按照用户进程的自然段划分逻辑空间。例如,用户进程由主进程,两个子进程,栈和一段数据段构成,于是便可以把这个用户进程分为五段,每段从0开始编址,并分配一段连续的地址空间(段内要求连续,段间可以不连续)。

    因此用户通过两个量来指定地址:段名称和偏移。段是编号的,通过段号而非段名称来引用。因此逻辑地址由有序对构成:

     <segment-number,offset>(<段号s, 段内偏移d>)


    段页式存储

    页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序逻辑的结构并有利于段的共享,结合起来便形成了段页式存储管理。

    在段页式系统中,作业的逻辑地址为三部分:段号,页号和页内偏移。

    在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。右图示出了段页式系统中的地址变换机构。
    在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。

    显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。


    以上便是全部介绍,本文图片为网上下载非本人创作,如有侵权请马上与我联系。

    加油吧,程序员!

    展开全文
  • 分析页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。若给定逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得:  p=int [A/L]d=A mod L  其中,int是取整函数(取...
  • 内存管理笔记(分页,分段,逻辑地址,物理地址与地址转换方式) 本文内容参考自如下博客与书籍: http://blog.csdn.net/windowseight/article/details/8279863 http://bbs.chinaunix.net/thread-2083672-1-1.html ...
  • 物理地址和逻辑地址 物理地址: 加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0 开始一直到可用物理内存的最高端。这些数字被北桥(Norbridge chip)...
  • 分析页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。若给定逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得: p=int [A/L]d=A mod L其中,int是取整函数(取数值的...
  • 1. 物理地址和逻辑地址 物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)...
  • 专业资料 实验二 设计一个分页内存管理的地址转换器 班级14级2班 姓名侯XX 学号201442060* 实验目的 用C/C++/JAVA实现分页内存管理中的逻辑地址转换成物理地址的过程 二实验内容 1输入 随机输入某页式系统的页面大小...
  • 地址模式中,我们使用段寄存器保存段地址,使用段内变址寄存器保存段偏移地址,这两个组合以后就可以得到物理内存上的物理地址了,但是由于在保护模式中,我们需要对内存加入保护机制,就必须更多的信息,...
  • 之前软考写写题目,关于地址这里的题目是会写了,但是也仅限于题目会写,于是准备把操作系统系统性的过一遍,然后到了这里的位置有一点疑惑,对逻辑地址作用于分页管理这里有点疑惑,于是就在这里学一下写下心得。...
  • 段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性...
  • 在Intel 386的环境下,线性地址转换为物理地址的过程,和第二节分页式内存管理中,层次分页中,逻辑地址转换为物理地址的方法类似。如下图。   Intel 80386的地址转换全过程如下图:   内存管理部分是...
  • 分页存储管理系统中进行地址转换时,地址变换机构将自动把逻辑地址转化为页号和页内地址,如果页号不小于页表长度,则产生越界中断;否则便以页号为索引去检索页表,从中得到对应的块号,并把块号和页内位移分别...
  • 段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,013
精华内容 405
关键字:

分页管理逻辑地址