精华内容
下载资源
问答
  • 那么,如果问题只是“页面表的大小”?不管它是否适合物理记忆,可以计算出答案:第一物理记忆有512K页物理内存(512M / 1K)。这需要19位来表示每个页面。...这是每个进程的单级VM子系统所需的最大大...

    那么,如果问题只是“页面表的大小”?不管它是否适合物理记忆,可以计算出答案:

    第一物理记忆有512K页物理内存(512M / 1K)。这需要19位来表示每个页面。将它添加到4位的会计信息,你得到23位。

    现在虚拟内存。使用38位地址空间和10位(1K)页面大小,您的页面表中需要228个条目。

    因此,每页23位的228页表项为6,174,015,488位或736M。

    这是每个进程的单级VM子系统所需的最大大小。

    现在显然,如果你只有512M的物理RAM,这样你就可以选择几个选项,那就不行了。

    >可以减少物理页面的数量。例如,只允许一半的内存被分页,保持另一半驻留在所有时间。这将为每个条目节省一位,不够真实,无法改变。

    >如果可能,增加页面大小。 38位地址空间的1K页面是非常大的页面表的原因。例如,我认为’386,其32位地址空间,使用4K页。这将导致百万页表项,远低于此处所需的2.6亿页。

    >去多层次。更高级,但它基本上意味着页表本身可以进行分页。您必须保持第一级页面表驻留在物理内存中,但第二级可以根据需要进出。这将大大降低物理需求,但是以速度为代价,因为可能会发生两个级别的页面错误以获得实际的进程页面(一个用于辅助页面表,另一个用于进程页面)。

    我们再来看一下选项3。

    如果我们允许32M用于主分页表,并给每个条目4个字节(32位:只需23个,但是我们可以在这里进行总结),这将允许8,388,608页的辅助页表。

    由于这些次页面页面每个长度为1K(允许我们以每个4个字节的形式存储256个次页表项),因此可以共计2,147,483,648个虚拟页面。

    这将允许8,192个满载(即,使用其整个28位地址空间)进程并行运行,假设您有一大块磁盘空间来存储非驻留页面。

    现在显然,主分页表(和VM子系统,并且可能是OS的其余部分的一大块)必须始终保持驻留。您不能被允许打开一个主页面,因为您可能需要该页面才能将其重新插入:-)

    但是,对于主分页表来说,这是512M的只有32M的驻留费用,远远优于736M的(至少一个完全加载的进程)。

    展开全文
  • 展开全部一、理解这样一个概念,操作系统为了方便管理内存e69da5e887aa...二、4B大小页表项,意味着支持最大页表数是2的32次方=4294967296 (4B=32bit),一个页的大小4K,那么4B大小页表项,表示...

    展开全部

    一、理解这样一个概念,操作系统为了方便管理内存e69da5e887aa3231313335323631343130323136353331333431353936,将内存划分成很若干个页,每个页表项就代表一个页的地址(页的地址,不是内存地址)。

    二、4B大小的页表项,意味着支持最大的页表数是2的32次方=4294967296 (4B=32bit),一个页的大小4K,那么4B大小的页表项,表示操作系统支持4294967296*4K = 16GB大的内存。

    三、现在问题是页表占用一定的内存。

    (一)现在假设有2GB(一定要小于16GB)内存。

    1、那么它一共有2GB/4KB=512K个页,也就是说页表项有512K项,而每个页表项的大小4B,那么页表在内存中占用的大小是:512K*4B=2MB,意味着,只要2MB就可以表示512K个页(每个页是4KB,总内存大小是2G),它页表本身占用了2MB/4K=512个页。

    2、这一题 就是问你1个页可以表示多少个页表项,4KB/4B=1024个页表项。页面大小与页表项没有绝对的关系,但它们有这样关系:

    (二)页面大小 * 2 ^(页表项大小)=操作系统最大支持内存大小(虚拟内存)

    1、本题是 4K * 2^(4B) = 16GB

    2、页表占用内存 = 操作系统内存/页面大小 * 页表项大小,本题是,假设操作系统内存为2GB。 2GB/4KB*4B = 2MB

    3、页表占用的页数是=页表占用内存/页面大小,这题同上假设2MB/4K=512个页。

    扩展资料

    一、地址结构

    1、逻辑地址:CPU所生成的地址。CPU产生的逻辑地址被分为 :p (页号) 它包含每个页在物理内存中的基址,用来作为页表的索引;d (页偏移),同基址相结合,用来确定送入内存设备的物理内存地址。

    2、物理地址:内存单元所看到的地址。逻辑地址空间为2^m,且页大小为2^n,那么逻辑地址的高m-n位表示页号,低n位表示页偏移。

    3、逻辑地址空间:由程序所生成的所有逻辑地址的集合。

    4、物理地址空间:与逻辑地址相对应的内存中所有物理地址的集合,用户程序看不见真正的物理地址。

    5、注:用户只生成逻辑地址,且认为进程的地址空间为0到max。物理地址范围从R+0到R+max,R为基地址,地址映射-将程序地址空间中使用的逻辑地址变换成内存中的物理地址的过程。由内存管理单元(MMU)来完成。

    6、分页逻辑地址 =P(页号).d(页内位移)

    7、分页物理地址=f(页帧号).d(同上)

    8、P = 线性逻辑地址/页面大小

    9、d= 线性逻辑地址-P*页面大小

    二、基本分页存储管理方式

    用固定大小的页(Page)来描述逻辑地址空间,用相同大小的页框(Frame)来描述物理内存空间,由操作系统实现从逻辑页到物理页框的页面映射,同时负责对所有页的管理和进程运行的控制。

    三、分级页表

    1、一个32位逻辑地址空间的计算机系统,页大小为4KB,那么页表有一百万条目。假设每个条目占4B,则需要4MB物理地址空间来存储页表本身。利用多级页表,可以减少页表所占用的空间。

    2、一个逻辑地址(32位系统,页大小 4K) 可以被分为 :一个20位的页号 +一个12位的偏移。如果对页表进行再分页,那么页号分解为:一个10位的页号 +一个10位的偏移。因此,一个逻辑地址表示如下 :p1 是用来访问外部页表的索引, p2 是外部页表的页偏移。

    参考资料来源:百度百科-页表

    展开全文
  • 页表项多大? 首先需要抛开一级二级x级页表的概念。...最大页号2^20 - 1,十六进制 0xFFFFF,占了20位。所以数组元素囊括的数据要保证可使用到20位,也就是 0 ~ 0xFFFFF。 好了,就按0xFFFFF来算吧,它占用多大?

    咱们用通俗的语言聊聊这个世纪性跨时代的问题。

    #页表项多大?

    首先需要抛开一级二级x级页表的概念。对于32位的地址空间,规定按4K一页来管理,可以分成2^32B / 4K = 2^20 个页。

    所以32位机器,页号范围是 0 ~ 2^20-1,这点毋庸置疑。

    现在要建造一样东西来管理这些页号,首先想到的就是数组,那数组每个元素定义多大才能保证覆盖所有的页号呢?

    最大页号2^20 - 1,十六进制 0xFFFFF,占了20位。所以数组里每个元素的大小至少可存放20位的数据,也就是 0 ~ 0xFFFFF中的任意一个。

    好了,就按0xFFFFF来算吧,它占用多大?按字节来算,最多给他3B,就够用了。所以每项给它3B大小绰绰有余,但是为了整数操作,给它4B吧,这样正好一个页面存放整数个元素。当然多余的12bit也不是浪费的,留着做标志位权限位。

    聊到这,给这个数组取个名吧,好了就要页表(page table)吧,里面的元素就叫页表项吧(page table entry)。

    #聊聊页表

    很多人看见一级二级三级四级页表就开始慌了

    如一级的格式

    如32位机器的二级的格式

    如64位机器的三级的格式

    擒贼先擒王,哪个才是代表页表?

    一级中的page index代表页表,二级中的PTX代表页表,三级中的PTX代表页表。很多人一开始学这个就是从左往右看,然后被自己带到沟里了。实质上根据一级到三级的变化发展趋势,其实是从右往左看的。按照进化论最最本质的需求就是建立页表,然后发现页表的缺点才会在la地址上割出什么PTX啊,PMX啊这些玩意。

    一级原始时代,page index就作为一个庞大的页表存在,整个大小4B * 2^20  = 4 MB,之前咱们聊过,页表就是个数组,数组就是一个顺序表,里面的内容是连续的,想想一下子开一个连续的4M空间给它,你乐意不。这么一大坨占用连续内存块,然且它是个整体,假设有个程序一直只访问它前面的一小块区域,那么后面的大部分区域可不可以让它呆在内存外面,用到在放进来?

    二级农耕时代,有了需求就要去实现,把这个庞然大物分割一下吧,好主意,就按10bit来分,这样一个页表含有1024个页表项,大小为4K,4K放在内存中相比原始时代并不占地。现在划分了很多个页表,总归要有东西来管理吧,那就剩下的bit位来干这件事吧。有多少个页表,看剩下的bit。PDX的作用就是管理页表的,就像页表管理页表项,这样分割的零零落落的页表在PDX下连接了起来。PDX定义为10bit,代表PDX里也有1024个项,这里的每个项指向一个页表,所以页表总大小4B * 1024 * 1024 = 4MB, 还是4MB大小,但是只占用4K的连续内存空间,其余用不到的暂时就可以不放进内存了,用连续的PDX项,寻找离散的页表是个时代进步的表现。给PDX取个名,页目录项吧,就像书的目录,要找某个内容,先去找到目录,然后找到目录中给的页号,去定位到那一页,页里的某一行或几行就是我们要找的内容了。

    当然有些页表像老赖一样常驻内存就不出去了,这时候就要搞个机制来清理它们了,吃老本不干活的直接请出去,干活的留下,这就涉及到快表的问题了,这边不讨论。

    有人急了,听说页目录表项也是4B,不是只有1024项吗?给10bit,2B够了丫?是这样吗?肯定不是,按这个理解,1号页表起始地址为1,2号为2,1023号为1023??要知道页表里面是货真价实的页号,那页目录项肯定也是货真价实的东西,里面存的是某组页号所在的页表的开头,也就是,页目录表也存页号,页表也存页号,只不过页目录项每隔1024存一个页号,所以大小还是要根据页号来,也就是20bit = 3B,为了整存选4B, 剩下12bit做标志或权限位。所以页目录大小为4B * 1024 = 4K

    实际代码中pdx是地址,*pdx存放1024间隔页号的某个页号,也就是就找到了ptx,*ptx存放含有物理地址相关的内容了

     

    三级牛逼时代我就不说了,只不过分割了页目录表。

     

    至于如何定位页号,就不说了。

    所以,页表问题也就是著名的数组问题和数组里寻找数组问题。

     

    本文页表计算基于32位系统。64位系统,一个表项8B

    关于表项里内容的探究,可查看基于ARM64的内核杂谈——页表项存放的是物理地址还是虚拟地址?

    展开全文
  • 已知系统为32位实地址,采用48位虚拟地址,页面大小4KB,页表大小为8B;每段最大为4GB。 (1)假设系统使用纯页式存储,则要采用多少级页表,页内偏移多少位? (2)假设系统采用一级页表,TLB命中率为98%,TLB...

    页式存储(清华大学)
    已知系统为32位实地址,采用48位虚拟地址,页面大小4KB,页表项大小为8B;每段最大为4GB。
    (1)假设系统使用纯页式存储,则要采用多少级页表,页内偏移多少位?
    (2)假设系统采用一级页表,TLB命中率为98%,TLB访问时间为10ns,内存访问时间为100ns,并假设当TLB访问失败后才访问内存,问平均页面访问时间是多少?
    (3)如果是二级页表,页面平均访问时间是多少?
    (4)上题中,如果要满足访问时间<=120ns,那么命中率需要至少多少?
    (5)若系统采用段页式存储,则每用户最多可以有多少段?段内采用几级页表?

    参考答案:

    (1)首先,页面大小为4KB,故页内偏移需要12位来表示。其次,系统虚拟地址一共48位,所以剩下的48-12=36位可以用来表示虚页号。每一个页面可以容纳的页表项为:4KB/8B=29(也就是可以最多表示到9位长的页号),而虚页号的长度为36位,所以需要的页表级数为:36/9=4级。

    (2)当进行页面访问时,首先应该先读取页面对应的页表项,98%的情况可以在TLB中直接得到得到页表项,直接将逻辑地址转化为物理地址,访问内存中的页面。如果TLB未命中,则要通过一次内存访问来读取页表项,所以页面平均访问时间是:

    98%×(10+100)ns+2%×(10+100+100)ns=112ns

    (3)二级页表的情况下:

    如果TLB命中,和(2)的情况一样,如果TLB没有命中,采用二级页表需要访问3次内存,所以页面平均访问时间是:

    98%×(10+100)ns+2%×(10+100+100+100)ns=114ns

    (4)假设快表的命中率为p,应该满足以下式子:

    p×(10+100)ns+(1-p)×(10+100+100+100)ns<=120ns

    可以解得:p>=95%,所以如果要满足访问时间<=120ns,那么命中率至少为95%。总结知识点:在多级页表的情况下,如果TLB没有命中,则需要从虚拟地址的高位起,每N位(其中N就是类似于(1)中的9)逐级访问各级页表,以第(1)问为例,如果快表未命中,则需要访问5次内存才能得到所需页面。


    展开全文
  • 已知系统为32位实地址,采用48位虚拟地址,页面大小4KB,页表大小为8B;每段最大为4GB。 (1)假设系统使用纯页式存储,则要采用多少级页表,页内偏移多少位? (2)假设系统采用一级页表,TLB命中率为98%,TLB...
  • 已知系统为32位实地址,采用48位虚拟地址,页面大小4KB,页表大小为8B;每段最大为4GB。 (1)假设系统使用纯页式存储,则要采用多少级页表,页内偏移多少位? (2)假设系统采用一级页表,TLB命中率为98%,TLB...
  • 页表最大占用多少字节? 先说答案再分析: 页的大小=页内偏移量的大小=2^12B=4KB 页表项个数=2^20 页表占用字节=(2^20)*4B=4MB 分析: 页的大小为什么等于页内偏移量的大小? 这个应该很好理解吧,寻址的时候...
  • 基本页表和二级页表的思路和比较

    千次阅读 2020-08-01 10:44:20
    基本页表 默认块号大小为4KB。 (页表项由 页号 和 块号 组成) 页号是进程的,块号是内存的。...页号有20位,可以认为系统最多有220个页面(内存大小最大为220*4KB = 4GB)。 我们得到一个逻辑地址如何算出
  • 2013年页表408大题

    千次阅读 多人点赞 2020-06-26 20:59:24
    【解析】页的大小为2^12B=4KB,页表最大占用页表最大占用2^20 *4B=2^22B=4MB 2.若使用二级页表的分页存储管理方式,逻辑地址结构为 页目录号(10位) 页表索引(10位) 页
  • 1.物理内存 物理内存是由系统实际提供的硬件处理...内存的地址空间是一维的,它的大小受到实际存储单元的限制,存储单元最大的内存地址加1称为内存空间大小或物理地址空间大小。如下图所示,内存地址编号0000000H~0...
  • Momery:内部可以看成是一个网格型,被分成成千上万个格子,一个格子就是1byte,...例如:32位操作系,CPU一次可以操作的最大数据为 ,也就是能一次能操作个格子,所以32位系统控制的最大内存为4GB,给32位系统...
  • 页表大小 = 页表占用内存 = 页表项 * 页表大小 页数=(页表占用的)内存 / 页面大小 = (页表项 * 页表项大小)/ 页面大小 每页页表项数=页表项 / 页数 = 页面大小 / 页表项大小 最大内存 = 页面大小 * 2^(页表项...
  • 进程的最大线程数:canci 进程空间分配和堆栈大小 1. Linux中进程空间   进程的空间分配: 与进程相关的数据结构(页表、内核栈、task) 物理内存 内核代码和数据 用户栈 共享库的内存映射 运行时堆 未初始化...
  • 以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置...每个页表entry也是4b大小,每个页表共1024个页表entry,因此一个页表大小也是4K,共1024个页表,因此页表最大大小是1024...
  • 最大页表 = 最大页数 * 页表项大小 小知识点 编制空间的大小取决于硬件的访存能力,一般由地址总线宽度决定。 进程正在进行I/O操作时不能换出内存,否则其I/O数据区将被新换入的内存占用,导致...
  • 1:定义页表大小,页表最大内存 2:异常种类 3:寄存器种类 machine.cc 1:将寄存器,页表和快表,全置为空 Machine 2:处理异常 RaiseException 3:调试 Debugger 4:输出所有寄存器的值DumpState 5:写入或者读出...
  • 分页、分段、虚拟内存

    千次阅读 2018-11-08 21:56:33
    二、页面管理方式 1.主存512M,页面大小为4K 则: 1)物理块有多少个?最大物理块号是?...页表大小=(多少项页表项记录) 512M/4K=2的17次方 (个)  【这里存疑,页表大小是计算什么?】是指17位长度 还...
  • 页表大小是指该页表中所有物理块的大小 已知页内偏移有多少位就知道了页面大小 地址变换过程: 先分割地址,判断页号是否越界,有块表先查快表,没有则根据页表寄存器找出页号和块号的映射(即查页表), 得到...
  • 操作系统概论大题

    热门讨论 2021-02-27 09:54:47
    某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表大小为4B,请回答...页表最大占用多少字节? 先说答案再分析: 页的大小=页内偏移量的大小=2^12B=4KB 页表项个数=2^20 页表占用字节=(2^20)*4B=4MB ...
  • 操作系统主页编址题

    热门讨论 2021-02-27 18:52:44
    某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表大小为4B,请回答...页表最大占用多少字节? 先说答案再分析: 页的大小=页内偏移量的大小=2^12B=4KB 页表项个数=2^20 页表占用字节=(2^20)*4B=4MB ...
  • 页表最大占用多少字节? 先说答案再分析: 页的大小=页内偏移量的大小=2^12B=4KB 页表项个数=2^20 页表占用字节=(2^20)*4B=4MB 分析: 页的大小为什么等于页内偏移量的大小? 这个应该很好理解吧,寻址的时候...
  • 段号的位数决定了每个进程最多可以分为几个段,页号的位数决定了每个段最大有多少页,页内偏移量决定了页面大小,内存块大小是多少 每个段对应一个段表项,每个段表项由段号,页表长度,页表存放块号(页表起始地址...
  • 先输入一个N表示的是,页表大小(最多能存的帧数)。 之后的序列是最大为9,最小为0的一个申请序列。 之后的输入一个数字T,表示输入的测试命令的数目。 之后的命令。 第一个数表示使用什么页面置换算法。 1 ...
  • ARM64虚拟内存

    2021-04-29 16:24:09
    名词解释 ...目前64位架构的MMU通常使用4级页表(level 0,1,2,3),支持最大48位有效地址。页表项可以指向下一级页表(table descriptor)或者指向内存块/页(block descriptor, 下图中page descript
  • 主存512M,页面大小为4K 则: ①物理块有多少个?最大物理块号是? ②不考虑权限问题,页表项至少多大? ③对一个256K的作业,其逻辑地址格式如何?这个作业的页表占多少内存? 答: ①物理块=512M/4K=2的17次方个,所以...
  • 第四、五 章测试题

    2018-11-07 21:23:28
    1.主存256M,页面大小为8K,则: (1)物理块有多少个?最大物理块号是? (2)不考虑权限问题,页表项至少多大? (3)对一个256K的作业,其逻辑地址格式如何?作业页表多长? 答: (1)物理块有256M/8K=2的...
  • linux--大页内存

    2020-03-25 23:25:04
    使用“大内存页”,你最大可以定义 1GB 的页面大小。 2、为什么使用大页内存 如果在系统中使用了huge page,则内存页的数量会减少,从而需要更少的页表(page table),节约了页表所占用的内存数量,...
  • 分页技术

    2019-05-06 15:36:46
    我们把一页的大小定义为4K,那么4G就有1M个页,在32位的保护模式下,地址都是32位二进制表示的,用20位二进制定位页表,剩余的12位表示4K里面的偏移。 为什么是这样呢? 32位机器,寻址最大2^32=4G 4G=4K页大小 * 1M...
  • 操作系统笔记

    2020-09-07 16:03:29
    最差匹配:最大的内存空间 优点:中等尺寸合适 缺点:慢,大进程无法分配 二 非连续内存分配 1,分段 2,分页,每页大小相等 由页表完成逻辑地址和真实地址的映射,即页号和帧号 页内偏移 多级页表:减少存储占用,...
  • 从页式管理开始,到之后的段式管理,都与之前的分区管理不同,最大的区别就在于一个是分区管理是连续存储,二这两种方式可以非连续。 实现原理 首先是必要概念: 物理块:将物理存储空间划分为大小相等的若干存储块...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

最大页表大小