您的位置 首页 IC

需求了解linux的内存办理

需要了解linux的内存管理-大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多。问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕。

一 为什么需求运用虚拟内存

    咱们都知道,进程需求运用的代码和数据都放在内存中,比放在外存中要快许多。问题是内存空间太小了,不能满意进程的需求,并且现在都是多进程,状况愈加糟糕。所以提出了虚拟内存,使得每个进程用于3G的独立用户内存空间和同享的1G内核内存空间。(每个进程都有自己的页表,才使得3G用户空间的独立)这样进程运转的速度必定很快了。并且虚拟内存机制还处理了内存碎片和内存不接连的问题。为什么能够在有限的物理内存上到达这样的作用呢?

二 虚拟内存的完成机制

    首要呢,提一个概念,交流空间(swap space),这个咱们应该不生疏,在重装体系的时分,会让你挑选磁盘分区,就比方说一个硬盘分几个部分去办理。其间就会分一部分磁盘空间用作交流,叫做swap space。其实便是一段暂时存储空间,内存不够用的时分就用它了,尽管它也在磁盘中,但省去了许多的查找时间啊。当发生进程切换的时分,内存与交流空间就要发生数据交流一满意需求。所以啊,进程的切换耗费是很大的,这也说明晰为什么自旋比信号量效率高的原因。

    那么咱们的程序里请求的内存的时分,linux内核其实只分配一个虚拟内存( 线性地址),并没有分配实践的物理内存。只要当程序真实运用这块内存时,才会分配物理内存。这就叫做推迟分配和请页机制。开释内存时,先开释线性区对应的物理内存,然后开释线性区;”请页机制”将物理内存的分配拖延了,这样是充分利用了程序的局部性本来,节省内存空间,进步体系吞吐;便是说一个函数或许只在物理内存中呆了一会,用完了就被铲除出去了,尽管在虚拟地址空间还在。(不过虚拟地址空间不是事实上的存储,所以只能说这个函数占有了一段虚拟地址空间,当你拜访这段地址时,就会发生缺页处理,从交流区把对应的代码搬到物理内存上来)

三 物理内存与虚拟内存的布局

左面是物理地址分配,与实践的CPU相关。4KB的这些都是一些控制器所占有,比方lcdc sd卡,他们的寄存器地址便是这样定死的。可是呢,咱们要拜访这些寄存器的时分,仍是不能直接用,要运用内存办理的规矩,运用虚拟地址去拜访它,所以在驱动等内核程序中需求运用虚拟地址拜访寄存器。假如有人直接运用物理地址拜访寄存器,那么仅有的解说便是没有开mmu。不过这样你的进程就没有4G内存能够用了。

物理地址散布:

这是偷的他人的图啦,物理地址有896M直接映射到虚拟地址的内存空间,这是一一对应的映射,只要开始地址不相同,偏移是相同的。这个巨细大多是固定的,哪怕你的内存超越一个G,太小了就别的说了。留意:用户区的代码也是放在这段物理地址里边的,便是说物理地址能够进行二次映射。但不管怎么样,这段物理地址都是受内核办理。当你内存很大的时分,超越896M时,剩下的那些内存怎么办呢?这多出来的叫做高端内存,假如你运用vmalloc请求空间,就会在高端内存中分配,假如你运用kmalloc请求空间,就会在小于896的内存中分配。所以仍是很考究的啊!!假如你的程序需求运用高端内存,就要调用内核API来分配,所以高端内存并不是想用就能用的哦。不过经过体系把一些运用常住在高端内存到是个好留意。不过条件是你的内存灰常大啊。

为什么要这样做呢?先看看这里边放些什么?

虚拟地址散布:

关于0-3G用户空间内存的散布:

谈到段式散布,就要说说逻辑地址,线性地址与物理地址的联系:

linux经过段机制把逻辑地址转换为虚拟地址(便是线性地址),再经过页机制把虚拟地址转换为物理地址。所谓分段便是基址不同,偏移相同,比方说32位,一般程序里边都不会运用这么多的位,能够把前12位用作基址,后20位用作偏移,这样在特定段就能够只运用偏移寻址了。寻址很便利,不过linux页基址做的更好。

最终呢再说几个点:

1 线性地址空间:指linux体系中的虚拟地址空间。

2 cpu寻址是归于物理地址。所以在运用cpu寻址前要把地址转换好。

3 物理内存中的高端内存是DDR减去896M后多出来的那一段。虚拟地址里边的高端内存是指用于映射高端内存的虚拟地址空间。不过高端内存被映射到用户空间,那便是别的一回事了吧。

4 内核空间是能够拜访用户空间的,等级高便是好啊。不过不是经过虚拟地址直接拜访的。

 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/90525.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部