2 qq 32191893 qq_32191893 于 2016.02.28 00:25 提问

c++为进程创建页表,分配页框遇到问题,想请教一下

为进程创建页表,分配页框,页表包含页号和页框号,页号是用户自己定的,从零开始编号,那页框号又是怎么确定的,难道也是从零开始编号吗,那岂不是页号和页框号是一样的了

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.02.29 10:11

每一个进程都拥有一个自己的页表,页表放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。
用页号去检索页表,从页表中得到该页的物理块号
图片说明
图片说明

qq423399099
qq423399099 回复今天阳光正好: 我写在下面了
2 年多之前 回复
qq423399099
qq423399099 回复今天阳光正好: 页号 页框(Page Frame)号 有效位(存在位)0 101H 1 1 — 0 2 254H 1
2 年多之前 回复
qq_32191893
qq_32191893 举个例子,新建一个进程,通过进程大小可以知道进程需要分配5个页框,但是不知道是哪五个页框,页号可以编号0-5,那页框号呢?怎么确定的,还有我们老师说了不能用伙伴算法,因为那个是连续分配的,虚拟页式是不连续的
2 年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.03.01 16:59

页号是页的编号
页框号可以理解为物理块号
因为一个页面大小是4K=2^12
所以这个物理块号需要12位来表示。
关于逻辑地址到物理地址的计算,
逻辑地址由页号和页内地址组成
例如:
对于地址2362H,后12位(即362)作为物理地址的后半部分
2是页号,找到相应的页2,它的物理块号作为物理地址的前半部分
即物理地址:254362H
图片说明

qq_32191893
qq_32191893 你说的我都知道,只是编程抽象实现MMU的时候,逻辑地址知道,也就是页号知道了,我就是不知道块号是怎么确定的,我怎么知道这个进程对应内存中的哪一块呢,
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.28 06:12

一般来说,页框包含多个页,页框的作用是连续分配空间,提高效率,如果一个页框对应一个页面,那么页框也就没意义了。至于编号,这个无关紧要。只要给一个唯一的编号就可以。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
存储模型之虚拟存储技术
虚拟存储技术(VIRTUAL MEMORY) 所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。 虚拟地址空间—–分配给进程的虚拟内存 虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。
进程的页表创建详解
[那么每个进程的页表是怎么创建的呢?] 进程的内核页全局目录的装载过程 do_fork()->copy_process()->copy_mm()(如果是fork一个内核线程kernel thread的话,内核线程将会直接使用当前普通进程的页表集,内核线程并不拥有自己的页表集)->dup_mm()->mm_init()->mm_alloc_pgd()->pgd_alloc pgd_alloc(
《现代操作系统(中文第三版)》课后习题——第三章 存储管理
第三章 存储管理 1.在图3-3中基址和界限寄存器含有相同的值16384,这是巧合,还是它们总是相等?如果这只是巧合,为什么在这个例子里它们是相等的? 答:这是一个巧合。基址寄存器的值为16384是因为程序恰好在地址16384上加载。程序可以在任何地方加载。界限寄存器为16384是因为程序具有16384字节的长度。程序可以有任意的长度。加载地址与程序长度相等仅仅是一种巧合。
虚拟内存的分页机制一点总结(机制及倒排页表)
1.设计思想 用固定大小的页来描述逻辑地址空间,用相同大小的页框来描述物理内存空间,由操作系统实现从逻辑页到物理页框的映射,同时负责对所有页的管理和进程运行的控制 2. 相关名称定义 页帧:被分成一页大小的逻辑地址 页框:被分成一页大小的物理地址 页表:页帧映射到页框的表格 标志位:标志页帧是否已成功映射到页框,0否 1是 3.工作机理(按图1 来阐述)
页 页表 页表项
// //操作系统和计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者分析不够严谨,欢迎指正。 //按字、图结合起来分析,相信还是比较容易看懂。 //一、首先明确几个概念  逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0
linux-----页、页表、页框(块)
linux-----页、页表、页框(块)
页式管理--物理地址计算问题小结
页式存储,物理地址计算,页框号计算,页表项地址推算
进程页表图示
可能有错,更新中。。。 用2级页表将用户空间的0-3G线性地址映射到256MBSDRAM的物理地址3000 0000-3FFF FFFF中 2^10=1024=0x400   2^12=4096=0x1000   2^14=16384=0x4000 1个页目录-->覆盖3GB物理内存范围(可以4GB) 1个页目录项-->1个页表-->覆盖4MB物理内存范围 1个页表项-->1个物理页
【操作系统】页式储存方式,页,页表,页表项
// //操作系统和计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者分析不够严谨,欢迎指正。 //按字、图结合起来分析,相信还是比较容易看懂。//一、首先明确几个概念逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号单元开始编址,称之为目标模块的
分页管理系统计算题 (在某个请求分页管理系统中,假设某进程的页表内容如下表所示)
在某个请求分页管理系统中,假设某进程的页表内容如下表所示。 页号 页框(Page Frame)号 有效位(存在位) 0 120H 1 1 ---- 0 2 850H 1