漫谈内存

序言

   不要打击一个人的梦想,除非。。。你真忍不住。


    每天能记住多少事儿,又能回忆起来多少事,其实就看你的脑容量有多大,但是更好的记忆方式,应该是有索引的,应该是有缓存的,从而能快速回忆起,毕竟靠的是速度。

漫谈内存

   内存,用或者不用,都在那里,不声不响,每天都会碰到各种使用内存的场景,当你每天早上醒来的一瞬间,你就会将大量的事情加载到脑中,其实和内存的使用方式一样。

640?wx_fmt=png


    当开启一个程序的时候,或者运行一个app的时候,就会将程序加载到内存中,将变量保存到内存中,将一些相关的数据保存在堆栈中,当你开启多个程序或者app的时候,那么又会把这个app相关的程序,数据等加载到内存当中。


    内存,只是用来存储数据的地方,心,是用放爱的地方?


    内存,一般用多级存储,从而分为cpu中的高速缓存,Emm,这个是人生的最爱,但是代价太高,容量少又贵,从而也就有RAM,也就是常说的物理存储,没准是8G,没准是16G,一般服务器多少?256G,这部分就相当于日常生活的部分,对,活在当下,还有一部分就是非易失存储,一般就像是磁盘,便宜而容量大,速度慢,一般都是用T作为单位,这部分就相当于你的昨天,前天,所有的历史数据都保存在这里。


    在今日的世界中,会有最爱吗?不知道,所以你会接触到各种各样的人,而计算机也是一样,内存也是一样,会用来存储各种各样的进程,也就是进程是分配资源的最小单位,那么问题来了,那么多的进程,我一个进程分配多少容量,怎么样来管理?


    要运行三个进程A,B,C,每个分配多少,总的物理内存假设只有8G,一个分2G?操作系统占用2G?还有更多的进程怎么办?


    当只有一个进程的时候,很容易分配,给你所有的爱,给你所有的CPU时间,让你尽情遨游。。。当有两个进程的时候,就要掂量掂量了,CPU可以划分为时间片,假装在并行,其实人也一样,同一时刻只能做一件事,从而也就出现了,你不可能踏进两条一样的河流。总是在顺序发生,但是速度快的让你感觉是并行。多核处理器?两个脑子的风,龙卷风。


    在进程内部,其实也会划分内存,程序存在哪一块内存,数据存放在哪一块内存,那些所谓的变量,中间变量存放在堆栈?顺序存储是最简单的,毕竟只要找到头部,那么就能找到所有的存放位置,毕竟是线性存储的。


    给进程分配内存,一般都是分配在一片连续的内存中,为什么不瞎放?找不好找,管理起来复杂,就像为什么要整理家里,不整理不也能过?一个人过,没问题,两个人试试,要不然,十个人试试,没有一个特殊的内存地方,一访问就报内存溢出等错误,段错误,这就是各种内存泄漏的来源。


    假设需要运行一个进程,假设分配了2G内存,那么随着时间的增长,数据可能增长,堆栈可能增长,这是一个动态变化的内存怎么办?扩容?再找一片连续的内存?然后将所有的数据复制过去?Emmm,1G的数据在内存中复制大概也要好几秒呢。


    那么在进程分配内存的时候,也就会预留一片增长的空间给进程使用,从而也就有了内存的使用上限和下限。


    程序要巨大无比的内存怎么办?一个进程上来就要512G内存,而你只有10G内存,怎么办?


    分期付款,从而也就有虚拟内存地址空间,将这些内存地址进行分页,从而得到了一个page,简化管理,物理地址也进行分页,但是叫页框,映射。。。也就是将虚拟内存映射到物理地址之中,这个速度怎样?中间需要经过一层转换,这个转换的事由硬件完成,速度相当快,也就是内存管理单元MMU。


    即使内存进行了映射,但是依旧没有解决内存小的问题,从而可以将程序进行分段,当程序运行的时候,只有部分加载进内存,如果不在内存中,那么会引发缺页异常,从而操作系统会到磁盘上,将其加载进内存,会写MMU,然后再次重试,从而可以解决使用较小的内存支持较大的内存使用,换入换出就好了。


    在每次使用MMU转换的时候,如果内存的本来就很大,管理单元也很多,在MMU中的内存表很大很大,那么如何来提高转换的速度,那就是使用TLB,可以使用硬件的,也可以是软件的,其实也就是一个缓存,毕竟是buffer嘛,从而也就解决了较小的内存支持需要较大的程序使用的问题。


    内存那么多,程序一会儿运行一会儿停止,内存换入换出,最终的结果就是形成很多内存空洞,也就是在分配程序使用的时候,并不能使用,可能是由于内存太少,放不下一个page,这个时候可以进行内存压缩,整理整理。但是也会消耗比较大的CPU时间。

640?wx_fmt=jpeg

    参与感?参与了一个项目?参与了一个问题?当你喜欢一个人的时候,就送她一支口红吧,毕竟她在亲别人的时候,你有参与感。


    知行合一,知道而行之,关注行动力并提供改善的机会,问题多?事儿多,也是一种好事,毕竟做的越多,懂的越多,进步也会越多。


    永远不要用固定型思维看问题,而要用成长型思维看问题,毕竟内存偶尔溢出也是很好玩的。


    环境越来越苛刻,记得在有进步的时候自己给自己鼓励,而不是外界的鼓励,外界?不可能的,眼瞎的人那么多。


    高超的技艺源自刻苦练习,而复杂的技能需要强化练习,危险的技能需要分解练习。所谓的刻苦练习只是一种唯手熟尔;强化练习则是针对某个高难度的技能进行短时间的集中所有关注力的练习,努力达到你不能达到的状态;分解练习则是将高危的技能分解为单个细小目标,然后分别练习,将最大的困难进行分解,仅此而已。


    把无聊的工作变成有趣的工作,需要调节自己的心态,用积极的心态来面对挫折。

    



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值