分类: LINUX
2009-07-25 23:50:24
Linux是一个多进程的操作系统,他的进程之间具有并行性、互不干扰等特点。也就是说,进程之间是分离的任务,拥有各自的权力和责任。其中,每一个进程都运行在各自独立的虚拟地址空间。因此,即使一个进程发生异常,它也不会应想到系统中的其它进程
Linux中一个进程在内存里有三部分数据,就是"数据段"、"堆栈段"和"代码段",基于I386兼容的中央处理器,都有上述三种段寄存器,以方便的运行。如图4-1所示。
本质,对于理解、描述和设计操作系统有着极为重要的意义。了解进程的活动、状态,也有利于编制复杂程序。
图4-1 Linux进程的结构
对于linux而言,数据存储情况:
代码段是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。
数据段则存放程序的全局变量、常数及动态数据分配的数据空间。(如malloc函数取得的空间等)。
堆栈段存放的就是子程序的返回地址、子程序的参数及程序的局部变量。堆栈段包括进程控制块PCB(Process Control Block)中。PCB处于进程核心堆栈的底部,不需要额外分配空间。
问:在一个程序运行的时候,那些变量存在堆中,那些变量存放在栈中?
答:对于静态变量和全局变量存放在堆中。
子函数的入口的临时变量或局部变量存放在栈中。