堆我们说过了,那接下来我们看一看如果我们的单体程序继续运行,会出现什么样的内存布局。我们知道,通常我们的单体程序在初始化时往往需要创建多个任务来实现其应用功能。对于每一个任务,它一块内存是私有的,那就是栈!当任务运行时,其需要用栈来做为函数调用时的参数传递空间,以及用栈来存储函数内的局部变量。假设我们的单体程序需要创建两个任务A和B,这需要通过调用操作系统中的任务创建函数来达到这一目的。操作系统所提供的任务创建API往往需要我们指定任务栈的大小,有的甚至可以指定栈内存空间。一旦任务创建的API被调用,那么操作系统会调用堆分配API为任务分配栈,此时的内存布局如图 3所示。任务创建完了以后,各任务就可以根据应用程序逻辑的需要审请堆空间以实现其业务逻辑。
评论