存档

‘Linux内核及C相关’ 分类的存档

linux核心转储文件

2013年7月3日 2 条评论

1、 core file size
当前终端生效:

ulimit -c unlimited  

全局生效:

vim /etc/security/limits.conf 
*               soft    core            unlimited
*               hard    core            unlimited

阅读全文…

分类: Linux内核及C相关 标签:

Linux 内存管理机制

2013年6月18日 没有评论

1 概念
2 虚拟内存空间
3 段式管理
3.1 硬件中分段
3.2 Linux 分段
4 分页管理
4.1 硬件中分页
4.2 Linux 分页
(本文所述 均为x86架构)

1 概念 内存地址
逻辑地址:包括在机器语言指令中指定操作数或者一条指令的地址。每个逻辑地址都由一个段选择符和偏移量组成,偏移量指明了从段开始的地方到实际地址的距离。
线性地址:也称为虚拟地址,32位的无符号整数,程序所能使用空间的大小。
物理地址:它与内存地址总线上的数目相同,主要用于内存单元的寻址。
内存控制单元(MMU)通过分段单元的硬件电路把一个逻辑地址转换为线性地址;接着通过分页单元的硬件电路把线性地址转换为一个物理地址

阅读全文…

分类: Linux内核及C相关 标签:

Liunx C内存分配与编译后ELF文件section对应

2013年6月6日 没有评论

预备知识—程序的内存分配
一、由C编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 – 程序结束后有系统释放
4、文字常量区 —常量字符串 全局常量 就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

阅读全文…

分类: Linux内核及C相关 标签: