• 基本地址变换机构




    一、基本地址变换结构
    基本地址变换结构可以借助进程的页表将逻辑地址转换为物理地址。
    通常在系统中设置一个页表寄存器(PTR Page-Table Register),存放页表在内存中起始地址F和页表长度M。
    进程在未执行时,页表的起始地址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放在页表寄存器中。

    逻辑地址到物理地址变换的过程:

    计算页号P和页内偏移量W(如果用手算,P=A/L,W=A%L;但是在计算机实际运行中,逻辑地址结构是固定不变的,因此计算机硬件可以更快地得到二进制表示的页号、页内偏移量)
    比较页号P和页表长度M,如果P>=M,则会产生越界中断,否则继续执行(注意:页号是从0开始的,则页表长度至少是1,因此P=M时也会越界)
    页表中页号P对应的页表项地址 = 页表始址F + 页号P * 页表项长度,取出该页表项内容b,即内存块号
    计算实际物理地址E = b * L + W,用得到的物理地址E去访存
    注意页表项长度、页表长度、页面大小的区别:

    页表长度是指页表最多能有多少个页表项,即总共有几个页
    页表项长度指每个页表项所占用的内存大小
    页面大小指一个页面占多大的内存空间
    注意:页面大小是2的整数幂

    二、例题
    例:若页面大小L为1K字节(1024),页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E

    等价描述:某系统按字节寻址,逻辑地址结构中,页内偏移量占10位(说明一个页面的大小为2^10B=1KB),页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E

    在分页存储管理(页式管理)系统中,只要确定每个页面的大小,逻辑地址结构就可以确定。

    因此,页式管理中地址是一维的。

    即,只要给出一个逻辑地址,系统就可以自动算出页号、页内偏移量。

    三、对上一小节的页表项大小进行进一步探讨
    https://blog.csdn.net/dyw_666666/article/details/107166904

    为什么每个页表项的长度是相同的,而页号是隐含的?

    4GB = 2^32B,4KB = 2^12B

    例:假设某系统物理内存大小为4GB,页面大小为4KB的内存总共会被分为2^32 / 2^12 = 2^20个内存块,因此内存块号的范围应该是0~2^20-1

    因此至少要20个二进制位才能表示这么多内存块号,因此至少要3个字节才够

    (每个字节8个二进制位,3个字节共24个二进制位)


    各页表项会按顺序连续地存放在内存中
    如果该页表在内存中存放的地址为X,则M号页对应的页表项存放的地址为:X + 3*M

    一个页面为4KB(4096),则每个页面可以存放 4096 / 3 = 1365个页表项,但是这个页面会剩余 4096 % 3 = 1B页内碎片

    因此,1365号页表项存放的地址为 X + 3*1365 +1

    那么,如果每个页表项占4字节,则每个页框刚好可存放1024个页表项

    1024号页表项虽然是存放在下一个页框中的,但是它的地址依然可以用 X + 4*1024得出

    结论:理论上,页表项长度为3B即可表示内存块号的范围,但是为了方便页表的查询,常常会让一个页表项占更多的字节,使得每个页面恰好可以装得下整数个页表项

    基本地址变换结构需要访问两次内存:

    第一次访问内存查找页表;

    第二次访问物理内存对应的内存单元。

    四、小结


    地址变换过程易出大题。

  • 相关阅读:
    有点感叹,陪伴一年多的py2终于换py3了
    一句话检测XSS
    Mongodb3.4异常无法启动的处理 Process: 6874 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
    Hadoop完全云计算平台搭建
    MySQL ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50560, now running 50729. Please use mysql_upgrade to fix this error.
    v-on(事件处理)
    javascript获取以及设置光标位置
    小程序图片处理
    vue api
    处理回车提交、ctrl+enter和shift+enter都不提交->textarea正常换行
  • 原文地址:https://www.cnblogs.com/magicg/p/15872392.html
Copyright © 2020-2023  润新知