加入收藏 | 设为首页 | 会员中心 | 我要投稿 潍坊站长网 (https://www.0536zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

又一新框架来袭,关系网络用于目标检测

发布时间:2021-02-03 16:11:24 所属栏目:评论 来源:互联网
导读:如图,以一个32位虚拟地址的二级页表为例,将32位虚拟地址划分为10位的PT1域,10位的PT2域,以及12位的offset域,当一个虚拟地址被送入MMU时,MMU首先提取PT1域并把其值作为访问第一级页表的索引,之后提取PT2域把把其值作为访问第二级页表的索引,之后再根

如图,以一个32位虚拟地址的二级页表为例,将32位虚拟地址划分为10位的PT1域,10位的PT2域,以及12位的offset域,当一个虚拟地址被送入MMU时,MMU首先提取PT1域并把其值作为访问第一级页表的索引,之后提取PT2域把把其值作为访问第二级页表的索引,之后再根据offset找到对应的页框号。

32位的虚拟地址空间下:每个页面4KB,且每条页表项占4B:

一级页表:进程需要1M个页表项(4GB / 4KB = 1M, 2^20个页表项),即页表(每个进程都有一个页表)占用4MB(1M * 4B = 4MB)的内存空间。

二级页表:一级页表映射4MB(2^22)、二级页表映射4KB,则需要1K个一级页表项(4GB / 4MB = 1K, 2^10个一级页表项)、每个一级页表项对应1K个二级页表项(4MB / 4KB = 1K),这样页表占用4.004MB(1K * 4B + 1K * 1K * 4B = 4.004MB)的内存空间。

二级页表占用空间看着貌似变大了,为什么还说多级页表省内存呢?

每个进程都有4GB的虚拟地址空间,而显然对于大多数程序来说,其使用到的空间远未达到4GB,何必去映射不可能用到的空间呢?

也就是说,一级页表覆盖了整个4GB虚拟地址空间,但如果某个一级页表的页表项没有被用到,也就不需要创建这个页表项对应的二级页表了,即可以在需要时才创建二级页表。做个简单的计算,假设只有20%的一级页表项被用到了,那么页表占用的内存空间就只有0.804MB(1K*4B+0.2*1K*1K*4B=0.804MB),对比单级页表的4M是不是一个巨大的节约?

那么为什么不分级的页表就做不到这样节约内存呢?我们从页表的性质来看,保存在主存中的页表承担的职责是将虚拟地址翻译成物理地址。假如虚拟地址在页表中找不到对应的页表项,计算机系统就不能工作了。所以页表一定要覆盖全部虚拟地址空间,不分级的页表就需要有1M个页表项来映射,而二级页表则最少只需要1K个页表项(此时一级页表覆盖到了全部虚拟地址空间,二级页表在需要时创建)。

二级页表其实可以不在内存中:其实这就像是把页表当成了页面。当需要用到某个页面时,将此页面从磁盘调入到内存;当内存中页面满了时,将内存中的页面调出到磁盘,这是利用到了程序运行的局部性原理。我们可以很自然发现,虚拟内存地址存在着局部性,那么负责映射虚拟内存地址的页表项当然也存在着局部性了!这样我们再来看二级页表,根据局部性原理,1024个第二级页表中,只会有很少的一部分在某一时刻正在使用,我们岂不是可以把二级页表都放在磁盘中,在需要时才调入到内存?

我们考虑极端情况,只有一级页表在内存中,二级页表仅有一个在内存中,其余全在磁盘中(虽然这样效率非常低),则此时页表占用了8KB(1K*4B+1*1K*4B=8KB),对比上一步的0.804MB,占用空间又缩小了好多倍!(这里参考的下面知乎链接中大佬的回答)

06 什么是缺页中断?

缺页中断就是要访问的页不在主存中,需要操作系统将页调入主存后再进行访问,此时会暂时停止指令的执行,产生一个页不存在的异常,对应的异常处理程序就会从选择一页调入到内存,调入内存后之前的异常指令就可以继续执行。
 

技术只是解决问题的手段

上周一个同学离职,问及原因,说是不想涉及业务,要去追求纯粹的技术。这种思路我非常理解,毕竟曾经也有过类似的想法。但是现在我的想法已经发生了很大的变化。

举个例子,某个明星创业公司,上线某个业务之后非常火爆,一时间访问量暴增,服务器访问压力太大,频频出现服务无响应甚至宕机的事情。怎么解决这个问题呢? 重新开发性能更高,支持更高并发的服务?等你开发好,市场说不定早被其它公司抢走了。解决这个问题更高效的方法是什么呢?堆更多的服务器能不能解决问题?人肉运维能不能解决问题?

看到没有,技术本身、机海战术、人海战术本质上没有差别,都是一种解决问题的方式,是赢得商业市场的一种手段,在特定的场景下,这种手段甚至是低效的、不可忍受的。

所有的技术都是为解决某个问题而存在。技术是为人类服务的,是为市场服务的。脱离了这个原则,所有的技术都是扯淡。

仅仅技术好是无法成为技术专家

在商业公司中,大部分的发展路径可能都是这样的:

初期技术热情极大 -> 大量标志性技术项目 -> 转向综合性思考 -> 带团队/关注方法论

单纯关注某个技术领域对个人成长的危害极大。一个人技术能力再强,也很难干翻一个团队。一个人的经验和视野只有通过他人和团队才能迅速放大,才能在更大的领域做出更大的成就。

(编辑:潍坊站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读