如何理解“页式存储管理方案”?

如何理解“页式存储管理方案”?


 

这要从一个皇帝的故事开始讲起:

A国皇帝王一百直接管理着自己国家的100个百姓。/*王一百的精力有限,管100个百姓刚好*/。

B国君主李四百,直接管理着自己国家的400个百姓。

王一百知道了李四百的存在,觉得自己被比下去了,于是他琢磨出一个好办法:

在世界范围内的百姓中选100个有管理能力的,招安为官员,王一百直接管理100个官员,然后让官员每人管理100个百姓(官员与皇帝的管理能力相同);于是王一百现在既减轻了自己的任务,又在总量上算是间接管理100X100 = 10,000个百姓了!

王一百从百姓数量上打败了李四百!但是王一百的管理模式给他带来了新的问题。比如说,他想拜访自己国家的编号为4680号的百姓的情况,如何做到?

         /*因为王一百直接管理100个官员,规定每个官员管的100个百姓每人都有一个编号,编号顺序一经确定就不再改变。所以第一个官员管理的百姓编号:1~100;第一个官员管理的百姓编号:101~200;以此类推。*/

         那么王一百要找第4680号百姓,就应该先去找第46个官员赵十

4680 ÷ 100 = 46...80

         然而王一百突然想不起他第46个官员赵十住在哪里了。但这会刚刚上过朝一天,下次上朝在半年后,然而王一百希望马上就找到赵十,他找得很辛苦,于是他勃然大怒,半年后上朝时颁布了一道圣旨,为了方便管理,以后我管的这100个官员,必须都住在皇城附近的小羊村,而且每个官员按姓名的笔画的多少来编号,号码从1到100,然后皇帝在皇城南部1000米处,建了一个小羊村。

        

这道圣旨颁布以后,官员很快都住到了小羊村来,于是王一百终于可以开开心心地去小羊村找第46号官员赵十了,王一百对赵十说我要见见第4680号百姓,你帮我找。

赵十一听,颤颤巍巍地跪下,说皇上饶命啊,微臣只管了100号人,何来4680号啊?/*原来他脑子一般般*/

王一百无语了,心想还是我聪明,“起来吧,你就把你管的第80号百姓带来就对了”于是,赵十把他管的第80号百姓带来了。


         如果在这个世界,管理能力设定由100人变成128人,王一百现在直接管理的官员从100个变为128个,官员管理的百姓数量也从100个变为128个,其他条件不变,那他想找第8888号百姓的时候,应该找第几号官员的第几号百姓?

8888 ÷ 128 = 69 ... 56

         :)皇帝应该去皇城南部1000米小羊村处,找到第69号官员,然后让他带他管的第56号人上来就对了。


大胆的官员:

         有一天,一位大胆的官员向皇帝请求,皇上,我们住在小羊村里住了好久,小羊村位置偏北,不利于对南方百姓的管理啊,我们能否搬到国家中部的村子?王一百看了他一眼,官员赶紧说,当然当然,我们自己出钱修,并且这个村子还叫小羊村,您看行吗?

         王一百想到他们的功劳,而且也不用自己花钱,于是勉强同意了,他说:建吧,小羊村名不许改,钱,自己准备,把新的小羊村的地址告诉赵公公,说着,他指了指身边的太监。

         于是以后皇帝再要找某个百姓,他首先自己悄悄计算一下应该去找第几个官员管的第几个人,(自己计算显得自己数学好)然后从太监那里找到小羊村的地址,坐上马车,来到小羊村,找到那个官员,然后找到自己要找的那个百姓。


从世界范围来看,在发展之初,蛮荒大陆共有百姓1024人,而此时设定每个皇帝的管理能力为直接管理128百姓,那么蛮荒大陆为了稳定,需要1024 ÷ 128 = 8个皇帝。后来,引入前面例子中王一百的“皇帝管官员,官员管百姓”的管理模式进行变革后,一个皇帝可以管128个官员,1个官员可以管理128个百姓,所以每个皇帝能够统治一个拥有128*128 = 16384个百姓的国家。

如此一来,蛮荒大陆的可容纳的百姓数量就从1024扩展到了 8个皇帝 X 16384 百姓= 131,072个百姓,这样,蛮荒大陆就可以吸收其他大陆的百姓过来,增强蛮荒大陆的自身实力。


如果皇帝与官员的管理能力不相同,A国皇帝原本直接管理2^{24}个百姓,现在皇帝想要让自己的国家拥有2^{32}个百姓,于是引入管理技术后,皇帝直接管理2^{19}个官员,则每个官员管理\frac{2^{32}}{2^{19}}=2^{13}个百姓。

在上述例子中:

管人能力 == 页式存储管理方案中的页面大小

逻辑地址空间大小就类似皇帝管理的百姓总数量,比如第一个例子中是500人,第二个例子中是5000人

小羊村的地址 == 页表起始地址


以32位处理器,按字节编址的计算机为例,本来可以表示的地址空间只有2^{32}B,后来引进“先进的管理技术后”,即使用了页式存储管理方案后,就可以使得可以表示的地址空间变大了。/*就好像在前面的例子中,虽然王一百最多管理100人,但是他通过管理方式改革,最后管理的百姓比李四百这个管理能力为400个百姓的人还要多*/

王一百现在的管理能力 == 2^{32}(个官员);每个官员不能多也不能少,只能管理8个百姓;那这个国家的总的百姓数量:

2^{32}*8


最开始没有管理模式的变革,都是皇帝直接管理百姓,皇帝的管理能力为128人,那么他就能统治一个拥有128个百姓的国家。引入前面例子中王一百的“皇帝管官员,官员管百姓”的管理模式变革后,一个皇帝可以管128个官员,1个官员可以管理128个百姓,所以每个皇帝能够统治一个拥有128*128 = 16384个百姓的国家。但是现在每个国家实际上只有128人,于是产生了

问题一:计算机应该给页号分配多少个二进制位呢?如果王一百能管理能力 2^{32}个官员,那么在二进制模式下,要表示 2^{32}个数,需要32bit位。

         现在的问题是,计算机应该给页号分配多少个二进制位呢?(即一个皇帝管理的官员个数)从之前的例子我们可以猜测,这不是你分不分配的问题,而是你这个皇帝能管多少个官员的问题,即皇帝的能力问题。

        

王一百的管理能力 ==    2^{32}B      

是不是可以这么想,为了跟计算机处理数据的思维方式一致,现在我们假设皇帝的脑子有32个洞,并且这个皇帝他只认数字0和1,那么,这个皇帝的能力就确定下来了,因为这32个洞的限制,皇帝只能记下种不同的数,而且这32个洞,在找百姓的时候,不仅要用来记官员的编号,还要记住这个百姓在官员管理处的编号,就是之前算式的余数。

         所以,计算机应该给页号分配的二进制位,受到“皇帝脑洞”即处理器能力的限制,还有“官员管理百姓的能力”即“页面大小”的限制。

         当然,后来这个问题好像变成了官员管理百姓的个数在多少时,管理效率最高的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值