GNU/Linux >> Linux の 問題 >  >> Linux

Linus が自伝で語っている page-to-disk 機能は、本質的に私たちが現在使用しているスワッピングの概念ですか?

はい、これは実質的にスワッピングです。 0.12 のリリース ノートの引用:

<ブロック引用>

仮想メモリ。

「mkfs」プログラムに加えて、「mkswap」プログラムがルート ディスクに追加されました。構文は同じです:"mkswap -c /dev/hdX nnn", そして再び:これはパーティションを上書きするので注意してください.次に、ブート イメージのオフセット 506 のワードを目的のデバイスに変更することで、スワッピングを有効にできます。ルート ファイルシステムの設定と同じプログラムを使用します (もちろん、508 オフセットを 506 に変更します)。

ノート!これは、2M マシンを所有する Robert Blum によってテストされており、多くのメモリを必要とせずに gcc を実行できます。しかし、私のディスク容量が beta-gcc-2.0 によって食い尽くされたので、私はそれを使用するのをやめなければなりませんでした。クリスマスの時期です。したがって、新しい変更が VM で裏目に出た可能性がありますが、それは間違いありません。

0.12 では、ページングは​​デバイスへのスワップだけでなく、多くの機能に使用されます:デマンド ロード (使用時にバイナリからページをロードするだけ)、共有 (プロセス間で共通のページを共有する)。


はい、まさにページングまたはスワッピングとして知られている概念です。 (昔は、これらの用語は少し異なる意味を持っていましたが、21 世紀では、一部の非 Unix オペレーティング システムのコンテキストを除いて、同義語になっています。)

はっきりさせておくと、スワッピングは革新的な機能ではありませんでした。ほとんどの「本格的な」Unix システムにはスワッピングがあり、この機能は Unix よりも古いものです。 MINIX が教育目的であるのに対し、スワッピングは Linux を「真面目な」Unix に変えることでした。

今日のスワッピングは、依然として同じ概念です。どのページを保存するか、いつ保存するかを決定するためのヒューリスティックは、はるかに複雑になっていますが、基本原則はそのままです。


スワッピングは、仮想メモリやメモリ保護よりも前の概念です。プロセスをディスクに配置して、別のプロセスのためのスペースを確保することを意味します。この点に関して、元の Unix には 2 つの癖がありました。プログラム コードをメモリに 1 回だけ保持し、データ セクションのみをスワップ アウトする「共有テキスト」プログラムです。また、メモリ イメージを置き換えずにコピー (子) を実行したまま、プロセスをディスクにスワップ アウトする "fork" システム コールがありました。

スワッピングとは対照的に、Page-to-disk では、物理メモリに適合しないプロセスを実行できます。保護可能なメモリ、仮想アドレスから物理アドレスへのメモリ マッピング、およびマップされていない仮想アドレスから合理的に選択可能な物理アドレスへのマッピングの変更と、中止しなければならなかったコマンドの再開を可能にする再起動可能なページ フォールト メカニズムが必要です。不足しているマッピングの。

UNIX は MMU なしで 68000 プロセッサ (スワッピングを含む) で実行でき、メモリ保護に利用できる場合は MMU を有効に利用しましたが、ページ フォールト後にプログラムを再開できるメカニズムを実際に備えるには 68010 が必要でした。 /P>

80386 は多くの点で安っぽく時代遅れのデザインでした。しかし、組み込みの MMU と適切なページ フォールト機能により、単にスワップするだけでなく、ページからディスクへのページ フォールトが可能な UNIX ライクなシステムですぐに実行できるようになりました。

現代のシステムの神へのシリコンの大きな犠牲 (本格的な MMU と仮想化可能な CPU の設計にはかなりのダイスペースが必要でした) が、主に愛好家によって取り上げられたことは、一種の歴史的な皮肉です。 Xenix や OS/2 のような大きな魚」は最終的に道端に落ちました.

「スワップされた」と同じように「何もページインされておらず、実行がスケジュールされていない」と呼ぶことができますが、「スワップされた」の本来の意味のように、実際には全か無かの命題ではありません。

それ以来、デマンド ページングは​​通常のスワッピングよりもはるかに便利で拡張性が高く、必要な CPU と MMU 機能が一般的になったときに置き換えられたため、その違いは数十年で失われました。


Linux
  1. Linuxgrepコマンドの使用方法

  2. Linuxでhistoryコマンドを使用する方法

  3. カーネルはどれくらいの RAM を使用しますか?

  1. Linuxカーネル:イノベーショントップ5

  2. 使用中のWordpressのバージョンを確認してください

  3. 新しい ext4 インライン データ機能の使用方法(inode に直接データを保存する)

  1. basenameコマンドの使用方法は?

  2. CFSのvruntimeの概念は何ですか

  3. shm_open を使用する理由