堆我們說過了,那接下來我們看一看如果我們的單體程序繼續(xù)運行,會出現(xiàn)什么樣的內(nèi)存布局。我們知道,通常我們的單體程序在初始化時往往需要創(chuàng)建多個任務來實現(xiàn)其應用功能。對于每一個任務,它一塊內(nèi)存是私有的,那就是棧!當任務運行時,其需要用棧來做為函數(shù)調(diào)用時的參數(shù)傳遞空間,以及用棧來存儲函數(shù)內(nèi)的局部變量。假設我們的單體程序需要創(chuàng)建兩個任務A和B,這需要通過調(diào)用操作系統(tǒng)中的任務創(chuàng)建函數(shù)來達到這一目的。操作系統(tǒng)所提供的任務創(chuàng)建API往往需要我們指定任務棧的大小,有的甚至可以指定棧內(nèi)存空間。一旦任務創(chuàng)建的API被調(diào)用,那么操作系統(tǒng)會調(diào)用堆分配API為任務分配棧,此時的內(nèi)存布局如圖 3所示。任務創(chuàng)建完了以后,各任務就可以根據(jù)應用程序邏輯的需要審請堆空間以實現(xiàn)其業(yè)務邏輯。
評論