0

仮想マシンとプログラミング言語全般について、本にあるものをいくつか実装することで、もう少し学ぼうとしています。私が現在読んでいる本では、スタックとヒープを 1 つのメモリ領域に保持しています。スタックは上向きに成長し、ヒープは下向きに成長します。2つの異なるメモリ領域を区別する必要がないため、ロード/ストア操作のより単純な戦略以外に、これの利点が何であるかを知りたいです。

私が尋ねる理由は、本の計画から逸脱し、スタックとヒープに 2 つの異なるメモリ領域を持たせることを考えているからです。それは私にとってより理にかなっているように思え、スタックとヒープのレジスタが互いに衝突することを心配する必要はありません。

4

2 に答える 2

1

メモリが限られていて仮想メモリがない古いマシンでは、メモリの 2 つのセクションは、マシンの空き領域の両端を表していました。48k の連続スペースがある場合、一方の端は上向きに成長するスタックであり、もう一方は下向きに成長するヒープです。最終的にそれらは衝突し、「メモリ不足」になります。

インスピレーションはそこから生まれます。最新のマシンは確かに (必然的に) メモリに問題がなく、ヒープやスタックなどの異種の部分を分離するのに役立つ VM システムがあります。その場合、一方を「成長」し、もう一方を「成長」する本当の理由はありません。むしろ、それらを目的のサイズに割り当て、使い果たされるまで成長を開始します。

また、もちろん、現在、VM を使用して実行などを制御できるのは、スタック (またはヒープ領域) です。過去の小型で古いマシンでは、実際には問題ではありませんでした。

于 2014-02-02T06:59:30.023 に答える