2017-01-02 2 views
1

私は、プロセスがコンピュータによってどのように実装されているかを読んでいて、スタックとヒープに言及しています。これは私にはとても涼しかったです。何らかのコンピュータサイエンスの背景がないということは、これらのことが私にとってかなり難解だったことを意味します。RAMは概念的に 'スタック'と 'ヒープメモリ'に分けられますか?

非常に基本的なレベルでは、プロセスは、固定サイズのスタックと、集合的に「ヒープ」スペースと呼ばれる関連する可変サイズのデータ​​構造としてRAMに表されています。スタックにフレームが追加されるため、ヒープスペースに格納されたデータの作成、編集、削除が行われ、プロセスの状態が変更されます。

私の質問は、です。すべてのRAMの使用をヒープの一部またはスタックの一部として分類できますか?

これらのカテゴリに該当しないRAMには、ほかにどのようなものを格納できますか?

答えて

1

はい、非常に単純なシステム、特に古くてマルチタスクをサポートしていないシステムでは、すべてのユーザーメモリをユーザーコード、ユーザーデータ、ユーザーヒープデータ、ユーザースタックデータの組み合わせで使用できます。プログラマはメモリを何に使うべきかは、プログラマに任されています。記憶は気にしない。しかし、当然のことながら、コードが必要であり、ほとんどの場合、スタックする必要があります。他のすべてはオプションです。

+0

コンピュータがマルチタスクをサポートしていたとしても、RAM内のすべてのメモリが何らかのプロセスまたは他のプロセスに対応していると考えました。つまり、スタックとヒープに対応する必要があります。 「スタック」または「ヒープ」の見出しに該当しないRAMには、他にどのようなものがありますか? –

+1

マルチタスクにはオプションがあります。アドレス空間は複数のプログラムで共有されているか、すべてのプログラムが独自のものを持っています。前者の場合、同じアドレス空間内に複数のヒープとスタックとコード部分が存在する可能性があります。後者の場合、明示的に複数を作成しない限り、存在することはできません。物理メモリ(すべてのアドレス空間の背後)には、プログラムの状態をディスクに完全に保存し、別の場所にロードする必要がなければ、複数のスタックとヒープを複数のプログラムから含めることができます。 –

+0

私が言ったように、メモリはそれに格納されているものを気にしません。コードまたはデータ(スタックまたはヒープを含む)。初期化されていない(電源投入後)ことができ、ややランダムなコンテンツも含まれます。 –

関連する問題