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