2016-04-24 15 views
-2

プログラムは、スタック、データ、コード、ヒープの4つの部分に分かれています。スタックとヒープの違いは何ですか?

私はそれらのそれぞれが(Javaで使われているような)データ構造であることを知っていますが、オペレーティングシステムの違いと定義は何ですか?

答えて

1

プログラムは、スタック、データ、コード、ヒープの4つの部分に分割されています。

これは正確な出発点ではありません。

プログラムは、さまざまな属性を持つプログラムセクションに分割されています。

  • 読み取り専用/いいえ(あなたがデータを呼び出している)を実行
  • 読み取り専用/実行(あなたがコードを呼び出すもの)
  • 読み取り/書き込み(ヒープとスタックの両方を含むもの)。

スタックは、プッシュ操作とポップ操作を使用して割り当てられ解放されたメモリブロックです。通常、割り当てと解放はスタックポインタレジスタを使用して実装されます。

ヒープは、1つまたは複数のメモリブロックで、任意の順序とサイズで割り当ておよび解放できます。オペレーティングシステムは、プログラムヒープのすべてについて知識がありません。これらは、コードにリンクされたライブラリによって管理されます(ただし、オペレーティングシステムには独自のヒープがあります)。オペレーティングシステムは、これらのメモリブロックを単に見るだけです。

関連する問題