一般在内核术语中的“碎片”都是基于物理内存而言的,我没有太看懂你得出碎片是针对地址空间这个结论的逻辑。但我认为,既然你知道了malloc是用户空间调用的,那么你所谓的碎片也是从用户空间的视角而言的,但对于用户空间,看到的只有地址空间,其访问的所有地址都是要经过页表的转换后才访问的物理页面,而且malloc分配的地址空间一定的连续的,那么这个所谓的碎片对于用户空间也就没有任何意义了。不知道你纠结的这个“碎片”在你心目中到底是什么意义,另外,你说的“如果地址空间都不连续就更谈不上物理空间连续”,这个逻辑也是有问题的,地址空间和物理空间没有这种所谓的联系。物理空间连不连续,是内核在管理物理内存的时候要考虑的,跟用户空间完全没有关系,在用户态的视角,只看到地址空间就足够了。

我的意思不是强调虚拟地址的连续性和物理地址连续性的关系,而是说在堆里面,如果不存在一块能够满足用户malloc要求的连续地址,那么malloc就会失败,就更谈不上去获取一块连续的物理内存了。我的观点malloc中的碎片是基于虚拟内存就是基于这一点的。。。

> 如果不存在一块能够满足用户malloc要求的连续地址,那么malloc就会失败,

这句话没问题。

> 就更谈不上去获取一块连续的物理内存了。

这个“就更谈不上”的连词有问题,因为后者跟前者之间没有任何关系,这种表述就有问题了,你的言下之意就是:如果malloc成功了,那么,就可能谈得上去获取一块连续的物理内存了。这种说法是有问题的,你还是没有理解用户态跟连续物理内存间没有关系的意义。即使用户态分配的连续地址空间,经过缺页异常后获取的物理页面恰好是连续的,这也是没有谈论的意义的,物理地址连不连续对用户空间没有任何影响,也不是用户空间可以左右的。

个人认为没必要把碎片这个词明确界定到是物理地址空间还是虚拟地址空间。提到内存碎片,主要考虑的是两个方面:
1,内存碎片不能有效利用而被直接或间接的浪费。
2,内存碎片破坏了局部性原理,导致性能的降低。
这些应该都是针对物理内存来说的。很少有说因为“地址空间碎片”不够导致内存申请失败,相比地址空间,物理内存更紧缺,提到内存碎片当然是指物理内存。

linux内存碎片的概念的更多相关文章

  1. Linux负载均衡概念与实践(一)

    根据网上文章整理. 负载均衡软件LVS(Linux Virtual Server)概念篇 lvs是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡.它是基于linux内核实现的.2 ...

  2. Linux(二)—— Unix&Linux 的基本概念

    Linux(二)-- Unix&Linux 的基本概念 计算机 = 主机(host)+ 终端(terminal) 主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经 ...

  3. linux信号基本概念及如何产生信号

    linux信号基本概念及如何产生信号 摘自:https://blog.csdn.net/summy_j/article/details/73199069 2017年06月14日 09:34:21 阅读 ...

  4. Linux的防火墙概念

    #linux的防火墙概念#因为如果你不关防火墙,很可能运行 django.nginx.mysql出错#防火墙可能会阻挡端口流量的 出口#也会阻挡外来请求的 入口 #selinux iptables f ...

  5. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  6. linux 时间管理——概念、注意点(一)【转】

    转自:http://www.cnblogs.com/openix/p/3324243.html 参考:1.http://bbs.eyeler.com/thread-69-1-1.html        ...

  7. linux缓冲的概念fopen /open,read/write和fread/fwrite区别

    fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...

  8. 关于linux 内存碎片指数

    linux针对每一个node的每个zone的每个order,都有一个碎片指数来描述当前的碎片程度,也就是 extfrag_index 参数: extfrag_index这个要展示出来,需要内核编译了两 ...

  9. linux:进程概念

    Linux进程概念 一.实验介绍1.1 实验内容Linux 中也难免遇到某个程序无响应的情况,可以通过一些命令来帮助我们让系统能够更流畅的运行. 而在此之前,我们需要对进程的基础知识有一定的了解,才能 ...

随机推荐

  1. CentOS使用PXE网络启动自动安装操作系统

    PXE工作原理简介 PXE (Preboot Excution Environment) 预启动执行环境 工作环境介绍: 要实现PXE自动网络安装CentOS至少需要两台主机 1)PXE服务器PXE ...

  2. [EffectiveC++]item20:Prefer pass-by-reference-to-const to pass-by-value

  3. 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)

    计算器的第一步,至今还记记忆犹新,本次的课堂作业,便是那个框架.闲话少叙,代码如下传送门: Main.cpp #include "stdafx.h" #include<ios ...

  4. WebDAV漏洞直接远程溢出拿下服务器

    以上是 我做的幻灯片 介绍什么是WebDAV 有什么用 漏洞测试需要的工具 http://pan.baidu.com/s/1o6DYxAE看到这里 说明直接远程溢出 提升权限为system 这些都很久 ...

  5. js事件的机制

    1.html事件处理程序 <button id="btn1" onclick="alert(1);">按钮1</button> 2.do ...

  6. 复习静态页面polo-360

    1.ps快捷键 ctrl+1 恢复到100% ctrl+0 适应屏幕大小 ctrl+r 显示标尺 辅助线的利用 矩形框--图像--裁剪:文件存储为web所用格式,注意选格式. 1个像素的平铺 雪碧图的 ...

  7. disconf实践(三)基于XML的分布式配置文件管理,自动reload

    上一篇介绍了基于xml的非自动reload的分布式配置文件管理,这一篇介绍自动reload的方式(基于disconf实践二). 1. 修改RedisConfig.java package org.sp ...

  8. Loadrunner测试webservice协议总结

    Loadrunner测试webservice协议总结 一.协议选择 1.打开Virtual user generator,新建脚本,选择webservice协议

  9. openstack neutron 简单理解

    分析1)位于最上层的Neutron Server充当一个门派中的“掌门人”角色(RESTful Server),负责接受来自外部门派(项目)的API请求,比如Nova API创建网络的请求.2)位于中 ...

  10. sharepoint 配置个人网站容量

    we have a SharePoint 2013 Standard edition implementation and 80 users. We are now starting to use M ...