操作系统-内存管理

《黑客攻防宝典-系统实战篇》第二版摘取。

当执行程序时, 程序体有序的排列在内存里,操作系统在内存里为程序运行创建地址空间,地址空间包含着实际程序指令和需要的数据。
1.程序可执行文件被操作系统加载到地址空间。程序一般包含三种类的段: .text、.bass、.data。
.text段在内存中被映射为只读。
.data和.bass被映射为可写。
全局变量一般保存在.bass和.data段里.
.data段包含静态初始化的数据,
.bass段包含未初始化的数据。
.text段包含程序指令。

加载完成后,为程序初始化"栈"和"堆"

"栈"是一种“后进先出”的数据结构,栈适合保存暂时性的信息,不需要长期保存的信息,即用于保存局部变量、函数调用信息以及
其他调用函数后系统通常会清除的信息.栈的地址空间"向下减少",即是保存的数据越多,栈的地址的值就越小。

"堆"是一种“先进先出”的数据结构,堆保存的是程序的动态变量。可以在堆的一端插入数据,从另一端移走数据。堆的地址空间是“向上增加”的,即是保存的数据越多。堆地址的值就越大。

猜你喜欢

转载自blog.51cto.com/13676359/2115706