[理工] 反转分页表和一般page table的差别

楼主: sooge (老衲)   2019-01-30 13:35:47
大家好 小弟对于反转分页表的疑惑一直不解,一直以来都是死记硬背反转分页表的定义
,但始终不明白到底和一般的page table到底差在哪
希望有人可以指点一下迷津T﹏T
一般的page table是纪录page number和frame number,将page number转为frame number
后再透过frame number去memory找资料
反转分页表的定义是:page table是以physical memory作为纪录对象,若有n个frame,
则inverted page table就有n个entry
每个entry纪录<process id,process number>配对资讯
代表此frame是哪个page所占用
但我对inverted page table的储存方法一直没有感觉
明明最后还是要去memory查资料
存成一般的page table和存成<process id,process number>的样子有什么差别吗?
为什么反转分页表就可以节省page table size。
求各位强者帮忙解答
一般page table
https://i.imgur.com/zABkNB2.jpg
inverted page table
https://i.imgur.com/RYDUL0I.jpg
作者: S2067030 (Ep.Yao)   2019-01-30 13:44:00
因为反转分页表只有一份,不会浪费太多空间存别人资料
楼主: sooge (老衲)   2019-01-30 13:48:00
可是page table也是一份像multilevel paging和hashing page table都是一个entry里塞很多资料所以可以缩小size 但反转分页表就....无法理解
作者: S2067030 (Ep.Yao)   2019-01-30 13:52:00
我想一下怎么解释字比较少一般的分页表,会花很多实体内存,在记录其他的实体内存正在使用的情形,但是反转分页表,只有一份纪录全部当然这样做缺点就是你笔记写的那两个,所以才要用杂凑
作者: gama79530 (Perfect Man)   2019-01-30 13:58:00
page table是用virtual page number去做tag用来对应到physical frame number,可以有很多个page table给不同process用
作者: y2j60537 (skkkkuu)   2019-01-30 13:59:00
cpu里面有10个process就有10个page table
作者: ko330 (ko330)   2019-01-30 14:00:00
一般的 page table 10个process在跑就有10份阿
作者: S2067030 (Ep.Yao)   2019-01-30 14:02:00
你把他想成,每个人都有一份资料(page table)去查找phy跟大家使用杂凑共用一份去查找phy,后者比较省空间(反转)执行的时候就是把ASID送过去逐一查找反转分页表
楼主: sooge (老衲)   2019-01-30 14:07:00
哦哦懂了 虽然还是有点不太理解中间转换过程 总而言之就是杂凑的裂化版就对了?
作者: S2067030 (Ep.Yao)   2019-01-30 14:12:00
转换过程就是Process产生pid跟p跟页篇移量然后用pid去反转分页表找实体内存的进入点找到以后在+d (页偏移量) 就可以拿到phy位置了
作者: gama79530 (Perfect Man)   2019-01-30 14:14:00
inverted page table感觉就很像反过来,直觉上的思考方式是把physical frame number当tag用来对应到virtual page number,不过实际上我们只会需要把VA转PA,如果照这种方式的话会不知道对应到哪一个virtual address space所以解套的办法是把process id也加进去VA里面,用这种方式的话完整的VA应该是processID串virtual address
楼主: sooge (老衲)   2019-01-30 14:25:00
所以和一般的page table就是差一个pid而已吗 因为要纪录所有的process资讯,上面大大们讲了那么多,但感觉我理解有障碍= = 这样反转分页表纪录了所有process的转换资讯 pagetable不是应该要爆炸大吗一个frame对应到一个entry怎么反转分页表不会和memory一样大
作者: S2067030 (Ep.Yao)   2019-01-30 14:31:00
大到靠北所以才要靠Hash帮忙减少次数啊y
作者: gama79530 (Perfect Man)   2019-01-30 14:31:00
举个例子,假设2g内存,32bit的address spacepage size 1 byte,OS最多只会有4个processpage table entry不考虑任何其他bit ,例如dirty bit(这个例子很极端根本不可能,不过只是举例而已)使用一般的page table的话一个entry要32+30个bit,4个processes要4*2^32个entries使用inverted page table的话一个entry要有2+32+30个bit但总共有1*2^30个entry稍微算一下那一个比较省空间很明显inverted page table单一entry的size确实是要比普通的page table entry大,但是因为它总共会有的entry数量会比一般的page table少很多,所以才可以省空间
楼主: sooge (老衲)   2019-01-30 14:49:00
哦哦终于懂了!! 所以反转分页表也是借由一个entry里塞很多资料量来减少page table size的方法 然后因为一个frame只能对应的到一个特定的process的page 所以才失去了memory sharing的特性感谢楼上所有大大
作者: S2067030 (Ep.Yao)   2019-01-30 15:02:00
同为考生 在18天就解脱了 加油!再啦 干
楼主: sooge (老衲)   2019-01-30 15:22:00
一起加油!! 我是再25天XD
作者: TWkobe (中华柯比)   2019-01-30 15:45:00
你想的没错 反转会超大 除了hashing 还有用教粗粒度做法一般你看到的是page level, 有的会用block level
楼主: sooge (老衲)   2019-01-30 16:06:00
谢谢TW大补充
作者: gama79530 (Perfect Man)   2019-02-03 14:29:00
我发现我好像有写错不小心把TLB的观念混进我的例子里了一个entry会需要32 + 30 bit的是TLB的entry不是pagetable的entry正确的应该是page table要有2^32个entry,一个entry要30个bitinverted page table是有2^30个entry,一个entry要2+32 个bit

Links booklink

Contact Us: admin [ a t ] ucptt.com