软件中的数学计算引起的一些简单思考

来源:互联网 发布:omtp转ctia软件 编辑:程序博客网 时间:2024/05/18 02:33

1、2的10次方=1kb;

2、2的12次方=4kb;

3、2的20次方=1Mb;

4、1kb*1kb=1Mb;

5、1Mb*1kb=1G;

6、线性地址(4G,物理地址)=目录项(directory,10bit,1kb)+表(table,10bit,1kb)+页帧(offset=page frame,12bit,4kb,帧表示最小单位)

                                                             =page table(20bit,directory+ table)+页(4kb)

      a.此项中的加可以理解位bit的加,kb的乘;

      b.可以看到物理地址是以bit为单位,即寻找的是最小单位是位,而page table(页表)是以4kb为最小单位,寻找的是page frame;这样操作的目的是便于操作系统管理及提高管理效率;

      c.为便于上述关系的理解,我们可做如下类比:

      32位寻址空间(4Gb)相当于一个仓库里有4G个物料(此时的物料相当于计算机里面的bit),如果我们以最小物料为单位,同时这些物料全部杂乱无章地摆放在这个仓库,那么我们寻找一个物料,我们就需要从第一个物料一直向第4G个物料寻找,效率非常低。那么我们该如何解决这个问题呢?首先,我们不以物料为最小单位,我们以房间(页)为最小基本单位(至于为什么要分页,也困惑了我很长时间,其实很简单的一个道理,一般来说,软件在大数据量中查找一个数据,也是一个一个找的,就好比我们要在人海中找一个人,也必须一个一个挨着找,但是倘若我们把这些人海分成一个一个块,每个块都具有相同的某种属性(就好比如果把人分成男、女,寻找时间就少了一半),我们先知道他们在哪个块,那么我们只需要在这些块中(人数相对而言就非常少)寻找,效率提高了几百倍都不止,但是每个页包含多少字最好,是1K,2K还是4K,我目前也不知道,只是知道,这些块中的字无论太多还是太少,都不利于CPU对地址的命中率,即降低了计算机的效率)。

      假设一个房间中可以装4K个物料(4K个物料都具有某一种相同的属性,譬如胡萝卜、白菜等等),那么我们每次只需要在4K个字中寻找我所需 要的数据,而不是在4G个字中寻找我所需要的数据了,对比之下可想而知了。

      有了页这个基本量,我们就只需要管理这些房间了,但是如果要装4G个物料,每个房间可以装4K个,我们最少需要1M个(100万)房间,100万依旧是一个庞大的数字,目前有如下几种管理方式:

      A.胡萝卜房间号位0---1万,白菜为1万01到2万,包菜为3万01到4万等等,这样数据来了,我们就知道把对应的数据往对应的仓库去放置;

      B.不连续分配地址空间,譬如胡萝卜4K打包放置在第1个房间,剩余的就没有胡萝卜了,那么我们把白菜打包成4K一个房间放置在2-150,包菜放置在151-300,如果后面再来白菜,我们就放置在301-400等等;

      这样对仓库管理者而言,我们只需要管理这个记录本,就可以很高效地管理整个系统了。此时记录各个房间对应的房间号的本子,我们就叫做页表,页表只是物理地址向上抽象的一层,便于管理者对物理地址的管理。

      同时,通过这个类比,也可以清晰地看到,管理方法(即算法)差异的重要性,即:白菜、胡萝卜、包菜等等各需要多少个房间,是连续分配还是断续分配,每一种菜如果不是整数怎么办?还有菜被取走了如何办?需要后续学习补充;

      于此同时,还遇见一个问题:倘若我们有100万个房间号,但是实际上,没有给我100万个房间,那该如何处理呢?此时,虚拟内存便粉墨出场了。此时就将没有用到的空间暂存在备用仓(硬盘上),再把需要的page调用到内存中,对于系统而言,他们就相当于独享4G内存空间。

     d.一个仓库(内存)的最小管理单位是房间(页),页表就是记录的房间号表;

原创粉丝点击