0

我知道了一個進程在內存中的結構如下:什麼決定了一個進程在內存中的結構?

enter image description here

(圖片來自操作系統的概念,第82頁)

但是,我也不清楚是什麼決定一個過程看起來像這樣。如果你看看非標準的操作系統/體系結構,我猜想進程可能(而且確實?)看起來不同。

這個結構是由OS決定的嗎?由程序的編譯器?由計算機體系結構?這些的組合?

+0

我對堆棧幀有同樣的問題 - 我應該問一個新的問題嗎? –

回答

-1

該圖代表了一個具體的實現或理想化。一個過程不一定有這樣的結構。在很多系統上,一個進程看起來只與圖中的內容有些相似。

+0

您沒有回答我的問題。請擴大這個答案(什麼決定這個過程是怎樣的?你的答案表明它只是操作系統),或者刪除答案並添加它作爲評論。 –

+0

問題是你的問題從一個錯誤的前提開始。一個過程不一定有你描述的結構。 – user3344003

0

我認爲這是一些委員會推薦的,然後像GCC這樣的工具就符合這個建議。二進制格式定義了這些段,操作系統及其工具有助於該格式在系統上運行的過程。可以說ELF由系統V推薦,然後由unix採用;而gcc生成ELF二進制文件以在unix上運行。所以我覺得故事可能從二進制格式開始,因爲它決定了內存映射(代碼,數據/堆/堆棧)。二進制格式以及其他黑客定義了要映射用於加載程序的內存映射。例如,ELF定義段(將文本,數據,堆棧中的代碼安排到內存中),GCC會在加載器加載這些段時生成ELF二進制段。操作系統也可以自由調整這些段的值,如堆棧大小。這些是我試圖鞏固的有爭議的大聲思想。

相關問題