在最近的项目中,我们涉及到了“内存对齐”技术。对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的 “管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解 更加底层的秘密,...
分类:
系统相关 时间:
2015-06-26 22:21:21
阅读次数:
270
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/本文章中系统我们假设为x86下的32位系统,暂且不分析64位系统的页表结构。linux分页 linux下采用四级分页,一个线性地址会分为5个偏移量用于寻址,具体看图: 虽然有四级,但并不是每一级都会用到,在li.....
分类:
系统相关 时间:
2015-06-23 19:47:56
阅读次数:
239
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的....
分类:
系统相关 时间:
2015-06-11 14:13:41
阅读次数:
235
配置好linux系统之后需要vim配置一下,有助于我们的编程,主要的配置如下在/etc/vim/vimrc文件中"显示行号set number"自动缩进set autoindent"智能缩进set smartindent"一次四格 tabset tabstop=4"一次四格set shiftwidt...
分类:
系统相关 时间:
2015-06-08 00:52:46
阅读次数:
180
说起DMA我们并不陌生,但是实际编程中去用的人不多吧,最多就是网卡驱动里的环形buffer,再有就是设备的dma,下面我们就分析分析. DMA用来在设备内存和内存之间直接数据交互。而无需cpu干预内核为了方便驱动的开发,已经提供了几个dma 函数接口。dma跟硬件架构相关,所以linux关于硬件部分...
分类:
系统相关 时间:
2015-06-07 22:59:32
阅读次数:
193
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 最近在学习内核模块的框架,这里做个总结,知识太多了。分段和分页 先看一幅图 也就是我们实际中编码时遇到的内存地址并不是对应于实际内存上的地址,我们编码中使用的地址是一个逻辑地址,会通过分段和分页这两个机制把...
分类:
系统相关 时间:
2015-06-05 17:07:16
阅读次数:
303
前言相信大家更换自己笔记本电脑的内存时一定是得心应手,即便是一名新手也可以很轻松的动手实现,其实服务器的内存更换也很简单,关机->挪盖->按指定顺序插拔。不过这里有一个很重要的共性前提,需要清楚了解当前硬件所匹配的内存大小型号和插槽数量等依赖关系,这样我们在更换内存时才会更加游刃有余哈。...
分类:
系统相关 时间:
2015-06-05 15:52:48
阅读次数:
212
1. 内核添加内存泄漏功能选项
kernel memory leak detector
kernel debugging
memory leak debugging
Compile kernel with debug info
通过make menuconfig 进入配置选项界面进入kernel hacking -->...
分类:
系统相关 时间:
2015-06-04 13:52:52
阅读次数:
465
在Linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在Linux下编写程序的一个大问题。 是不是说没有一种内存检查工具能够在Linux使用呢,也不是,像val....
分类:
系统相关 时间:
2015-06-02 13:15:51
阅读次数:
245
一般在内核术语中的“碎片”都是基于物理内存而言的,我没有太看懂你得出碎片是针对地址空间这个结论的逻辑。但我认为,既然你知道了malloc是用户空间调用的,那么你所谓的碎片也是从用户空间的视角而言的,但对于用户空间,看到的只有地址空间,其访问的所有地址都是要经过页表的转换后才访问的物理页面,而且mal...
分类:
系统相关 时间:
2015-05-25 12:44:53
阅读次数:
230