它的结果如下
below are addresses of types of process's mem
Text location:
Address of main(Code Segment):0x8048388
____________________________
Stack Location:
Initial end of stack:0xbffffab4
new end of stack:0xbffffab0
____________________________
Data Location:
Address of data_var(Data Segment):0x8049758
New end of data_var(Data Segment):0x804975c
____________________________
BSS Location:
Address of bss_var:0x8049864
____________________________
Heap Location:
Initial end of heap:0x8049868
New end of heap:0x804986c
利用size命令也可以看到程序的各段大小,比如执行size example会
得到
text data bss dec hex filename
1654 280 8 1942 796 example
1654 280 8 1942 796 example
但这些数据是程序编译的静态统计,而上面显示的是进程运行时的动
态值,但两者是对应的。
通过前面的例子,我们对进程使用的逻辑内存分布已先睹为快。这部
分我们就继续进入操作系统内核看看,进程对内存具体是如何进行分
配和管理的。
从用户向内核看,所使用的内存表象形式会依次经历“逻辑地址”—
—“线性地址”——“物理地址”几种形式(关于几种地址的解释在
前面已经讲述了)。逻辑地址经段机制转化成线性地址;线性地址又
经过页机制转化为物理地址。(但是我们要知道Linux系统虽然保留了
段机制,但是将所有程序的段地址都定死为0-4G,所以虽然逻辑地址
和线性地址是两种不同的地址空间,但在Linux中逻辑地址就等于线性
地址,它们的值是一样的)。沿着这条线索,我们所研究的主要问题
也就集中在下面几个问题。
1. 进程空间地址如何管理?
2. 进程地址如何映射到物理内存?
3. 物理内存如何被管理?
以及由上述问题引发的一些子问题。如系统虚拟地址分布;内存分配
接口;连续内存分配与非连续内存分配等。
below are addresses of types of process's mem
Text location:
Address of main(Code Segment):0x8048388
____________________________
Stack Location:
Initial end of stack:0xbffffab4
new end of stack:0xbffffab0
____________________________
Data Location:
Address of data_var(Data Segment):0x8049758
New end of data_var(Data Segment):0x804975c
____________________________
BSS Location:
Address of bss_var:0x8049864
____________________________
Heap Location:
Initial end of heap:0x8049868
New end of heap:0x804986c
利用size命令也可以看到程序的各段大小,比如执行size example会
得到
text data bss dec hex filename
1654 280 8 1942 796 example
1654 280 8 1942 796 example
但这些数据是程序编译的静态统计,而上面显示的是进程运行时的动
态值,但两者是对应的。
通过前面的例子,我们对进程使用的逻辑内存分布已先睹为快。这部
分我们就继续进入操作系统内核看看,进程对内存具体是如何进行分
配和管理的。
从用户向内核看,所使用的内存表象形式会依次经历“逻辑地址”—
—“线性地址”——“物理地址”几种形式(关于几种地址的解释在
前面已经讲述了)。逻辑地址经段机制转化成线性地址;线性地址又
经过页机制转化为物理地址。(但是我们要知道Linux系统虽然保留了
段机制,但是将所有程序的段地址都定死为0-4G,所以虽然逻辑地址
和线性地址是两种不同的地址空间,但在Linux中逻辑地址就等于线性
地址,它们的值是一样的)。沿着这条线索,我们所研究的主要问题
也就集中在下面几个问题。
1. 进程空间地址如何管理?
2. 进程地址如何映射到物理内存?
3. 物理内存如何被管理?
以及由上述问题引发的一些子问题。如系统虚拟地址分布;内存分配
接口;连续内存分配与非连续内存分配等。