[这个贴子最后由x86在 2005/03/25 01:03pm 第 3 次编辑]
[watermark] 先看看进程的概念,进程是一个正在运行的程序。实际上这个进行的程序还应该包括程序运行时当前的一些活动,他们应该包括一个程序计数器(pc),以及一些寄存器。一个普通的进程在内存内因该包含下面几个段:文本段,即我们通常所说的程序代码。他是只读的,即在运行中我们不能随意修改程序代码。堆栈段:它往往包含程序运行时的临时数据,比如函数参数,返回地址,以及局部变量。注意,堆栈段有它特殊的结构,这是我们要重点讨论的。另外还有一个数据段,往往包含程序的全局变量.
现在来重点看看堆栈段,在这之前我们先看看在汇编语言里怎么去申请一个堆栈!(如果你没有学过汇编也没有关系,继续往下看!)堆栈实际上是由若干个连续存储单元组成的存储区域.在内存里,我们可以"任意"地设一段连续内存为堆栈.(一些系统要使用的内存我们是不能够使用的,操作系统给你的往往是一个他认为很安全的内存段,在这里不会干扰到一些系统的程序空间)为了方便内存管理,习惯上将内存分成许多段,比如说你有1M的内存,如果每个内存单元给他一个单独的地址,那就需要一个20位的2进制地址,从00000000000000000000--11111111111111111111,那就显得很麻烦,而且不方便记忆和寻找!那我们应该怎么办?你可以先试着怎么去记一个十进制的数:50000007,对于这个数,我们应该怎么样才能记住他,有人肯定能想到50000007=5*10000000+7,所以我们只要记住50000000和7就可以了,当然了,用这个例子,并不能体验出这种记忆方法的优越,可是面对那么多的内存单元的时候,我们用这个方法就能很好地管理了, 对于2个内存地址(16进制:2000AH和2000CH)其实我们只要用一个寄存器来保存20000,然后分别用000A和000C就可以分别来表示这2个单元了,下面是一段内存分段前的地址和分段后的地址:
|