RAM メモリにパーティション スキームがないのはなぜですか?

RAM メモリにパーティション スキームがないのはなぜですか?

これを尋ねる別の方法は次のようになります。

なぜハードドライブ、ペンドライブ、SSD にはパーティション スキームが必要なのに、RAM には必要ないのでしょうか?

メモリの仕組みがどのようになっているのかをより深く理解しようとしているだけです。

答え1

まあ、問題はもう少し複雑です。

まず、質問で述べられている仮定は誤りです。ハードディスクとフラッシュ メモリには実際にはパーティションはまったく必要ありません。ハードディスクに生データを書き込んで、それを読み戻すだけで、問題なく動作します。比較的単純なコンピュータ システムの中には、パーティションを使用する必要がないため、現在でもパーティションを使用していないものもあります。たとえば、私の机の上には、ATmega 162 マイクロコントローラをベースにしたコンピュータがあり、パーティションなしでフラッシュを問題なく使用しています。

基本的に、パーティションはシステム設計者間の労働責任の分離を可能にします。私の 162 では、各データ ビットがどこに保存され、各フラッシュ セルが何回アクセスされるかを把握して、ウェア レベリングを実装する必要があります。そのためには、ファイルさえ必要ありません。ただし、問題は、私の小型コンピューターには 16 KiB のフラッシュしかなく、その量は手作業とソース コードのコメントで管理できるということです。引き出しが 1 つしかない机のようなものです。そこに何でも置くことができ、簡単に手を伸ばして取り出すことができます。

今日のデスクトップ コンピュータのような大規模なコンピュータ システムでは、ソフトウェアは何千人ものプログラマが別々に作業した結果です。プログラマは何らかの方法でデータを保存する必要があり、そのためにファイルとパーティションが必要です。ファイルとパーティションがあれば、プログラマは作業に必要なデータだけに集中でき、他のデータの損傷を心配する必要がありません。ファイルシステム プログラミングに取り組んでいるプログラマにデータの物理的な保存を任せることができます。引き出しの例を続けると、これは倉庫のシステムがあり、在庫に何十万もの商品がある場合に 1 つの商品を見つけようとするようなものです。したがって、たとえば単純な引き出しに手を伸ばして鉛筆を取り出すことはできますが、倉庫の場合、鉛筆は倉庫 3、セクション P、棚 273、レベル 3、ボックス 5 にあります。

実際には必要がないのにパーティションを使用する理由が明確になったと思います。

さて、RAM に移りましょう。RAM にはパーティションがないというのも真実ではありません。パーティションを使用する基本的な理由は整理整頓であり、RAM も整理整頓されています。ただし、RAM の場合、システムのカーネルが各情報ビットの保存場所を決定し、スペースの使用状況を追跡します。

私のシンプルな ATmega 162 上のプログラムと、Windows のような最新のオペレーティング システム上のプログラムの動作を比較してみましょう。162 では、プログラムには、データを格納するために使用するメモリ位置のアドレスがあらかじめプログラムされています。162 にはプログラムが 1 つしかないため、別のプログラムが使用するデータの上書きやメモリの割り当てについて心配する必要はありません。各メモリ セルに必要なものを書き込むだけで、コンピュータが動作している間はそこに残ります。

一方、Windows では、多数のプログラムを同時に実行することができ、それらすべてがメモリにデータを書き込んだり、メモリからデータを読み出したりします。つまり、個々のプログラムがメモリ セルに直接アクセスすることはできません (また、プログラマーは、特定のコンピューターのメモリにアクセスする方法や、そのコンピューターに搭載されている RAM の量などを知っておく必要があります。この時点で、数千人対 1 人のプログラマーの議論に戻ります)。代わりに、各プログラムが起動すると、カーネルがそのプログラムにメモリを割り当て、プログラムにとっては、コンピューターで実行されている唯一のプログラムであるように見えます。カーネルは、プログラムが他のプログラムに割り当てられたメモリを読み込んだり書き込んだりしないようにし、データとしてマークされたメモリを実行しようとせず、システム全体を危険にさらさないようにするために存在します。したがって、基本的に Windows および他の多くの最新のオペレーティング システムでは、各プログラムが独自の RAM パーティションを取得します。また、32 ビット システムでは、各プログラムが最大 2 GiB の RAM しか使用できないことも興味深い点です。これは、「パーティション」のサイズの上限だったためです。

ここで少し余談をしたいと思います。RAM のパーティションによって被害を受けるプログラムがいくつかあります。たとえば、コンピュータ ゲームで不正行為を可能にするトレーナーと呼ばれるプログラムがありました。これらのプログラムは、ゲームがライフ数や健康状態などのデータを保存するメモリの場所を見つけ、そのデータに直接アクセスして変更します。一方、重要なシステム サービスによって使用されるメモリにアクセスし、それを破壊して悪事を働くウイルスもありました。

他に取り上げる価値のあることは、ページファイルまたはスワップ パーティションです。アプリケーションを作成するプログラマーにとって、プログラムがページファイル内にあるか RAM 内にあるかは重要ではありません。カーネルがそれを処理してくれるからです。私の ATmega 162 では、状況はもう少し複雑です。使用可能な RAM よりも多くの RAM を使用する必要がある場合、まず RAM を使い果たした状況を手動で検出し、その後、手動で RAM からフラッシュにデータをコピーし、RAM を解放し、必要な用途に使用し、再び解放し、フラッシュから RAM にデータを移動し、フラッシュ メモリの占有領域を解放する必要があります。デスクトップ コンピュータでは、プログラムはディスクにスワップされてから RAM に戻されたかどうかさえわかりません。

もう 1 つ興味深いのは、パフォーマンスです。引き出しと倉庫の例に戻りましょう。倉庫からすべてのアイテムを取り出して、1 つの山にまとめます。引き出しから 1 本の鉛筆を取り出す必要がある場合は、引き出しを開けて鉛筆を取り出すだけです。他の鉛筆、ノート、定規、キャンディー バー、消しゴムなどの山から 1 本の特定の鉛筆を取り出す必要がある場合は、それを探すのにかなりの時間を費やす必要があります。その時間 (平均的な場合) は、整理された倉庫で同じ鉛筆を見つけるのに必要な時間に比べてはるかに長くなります。一方、整理された倉庫で鉛筆を見つけるのに必要な時間は、引き出しで鉛筆を見つけるのに必要な時間よりもはるかに長くなります。したがって、一部の方法は少量のデータでうまく機能し、一部の方法は大量のデータでうまく機能します。ファイル システムは、各データを簡単に見つけることができる論理的な方法でディスクにデータを格納することでパフォーマンスを向上させます。一部のファイル システムには、他の利点もあります。フラッシュ メモリ用に設計されたファイルシステムである JFFS2 の場合、ファイルシステムはウェア レベリングを実装しているため、ユーザーやハードウェア設計者がウェア レベリングを行う必要はありません。

さらに興味深いのは、標準のファイルシステムを RAM にも使用できることです。RAM を占有してファイルシステムのように整理し、プログラムがディスク領域のように使用できるようにするプログラムがあります。

興味深いリンクをいくつか紹介します: Wikipeda メモリ管理の記事RAM 内のデータがどのように、またなぜパーティション分割されるかを説明します。 オペレーティング システムの記事、メモリ セクションメモリのセグメンテーションや仮想メモリのページングなどが必要な理由を説明します。

答え2

極端に単純化すると、RAM にはレイアウト スキームがありますが、ハードウェアによって抽象化されます。

内部的には、RAM はスプレッドシートのように行と列に並べられた「メモリセル」のマトリックスとして配置されています。各メモリセルは 1 ビットのデータを格納するために使用され、データの行と列の位置 (またはアドレス) を示すことで瞬時にデータを取得できます。

これは、長期保存の仕組みに関する基本的な概念とあまり変わりません。ファイル システムとパーティション マップは、生のディスクに直接アクセスする必要がないようにするための単なる抽象化です。

答え3

ハード ドライブのパーティション スキームは、同じプラッターの異なる部分に共存できる複数の互換性のないオペレーティング システムをインストールできるようにするために作成されました。ペン ドライブと SSD ドライブは、その古い兄弟であるハード ドライブからスキームを継承します。

通常、パーソナル コンピュータの場合、RAM は一度に 1 つのオペレーティング システムによってのみ使用されるため、パーティション スキームはありません。ただし、一部の大型コンピュータ (メインフレーム) では、RAM のパーティション スキームも存在します。

答え4

RAM はページ単位で編成されており、これらのページは事前の領域割り当てを必要とせずに動的 (MMU) に構造化されるため、パーティション分割は必要ありません。ただし、ハードウェア コンポーネント (主に一部のグラフィック カードですが、その他のコンポーネントでもかまいません) が OS の起動前に物理 RAM の一部を予約すると、RAM で何らかの一時的なパーティション分割が行われます。

実際、ハードドライブ、ペンドライブ、または SSD にもパーティション スキームは実際には必要ではありません。少なくとも、必要であるべきではありません。BIOS (または同等のファームウェア) やブート ローダーなど、適切に動作するためにパーティション テーブルを必要とする避けられないコンポーネントがまだありますが、それ以外の場合は、オペレーティング システム (より正確にはファイル システムとボリューム マネージャー) の設計上の制限のためにパーティションが必要になります。

ZFS プールの概念では、複数のオペレーティング システムを起動する場合や、これらの OS に複数のボリュームとファイル システムが必要な場合でも、パーティションは必要ないことがわかりました。

パーティションは、ドライブが ZFS (または仮想的な同等物) をサポートしていない 1 つ以上の OS によって使用されている場合にのみ必要になります。

関連情報