メモリ管理は2つの部分から成ります: 仮想メモリ管理

メモリ管理は2つの部分から成ります: 仮想メモリ管理

[[402636]]

この記事はWeChatの公開アカウント「Flying Veal」から転載したもので、著者はFeitian Vealです。記事を転載する場合は飛天牛肉公式アカウントまでご連絡ください。

従来のストレージ管理の問題点

仮想メモリはなぜ登場したのでしょうか?登場の背景は何でしょうか?

前回の物理メモリ管理の記事でも述べたように、ユーザープログラムの機能が増えると、プロセスが必要とするメモリ空間はどんどん大きくなっていきます。プロセス スペースは物理メモリの実際のサイズを簡単に超過し、プロセスが実行できなくなる可能性があります。

したがって、メモリ不足の問題を解決し、大きなプログラムと小さなメモリ間の矛盾を緩和するためには、メモリ容量を拡張することが不可欠です。

メモリ容量の拡張は、物理的側面と論理的側面の両方から考えることができます。物理的な拡張にはそれほど技術的な内容は必要ありません。当然ながら、私たちが研究すべきことは、記憶容量を論理的に拡張する方法です。

いわゆる論理的拡張とは、物理メモリの容量は実際には変わっていないが、格納できるものが増え、実際のメモリよりもはるかに大きなメモリがあるようにユーザーに見えることを意味します。

メモリの主な論理拡張テクノロジには、オーバーレイ テクノロジ、スワップ テクノロジ、仮想メモリ (仮想メモリ) (仮想ストレージとも呼ばれます) の 3 つがあります。実際、これらのロジック拡張テクノロジのコアコンセプトは同じです。これらはすべて、他のプロセス (またはプロセスの一部) が占有できるメモリ領域を解放するために、どのプロセス (またはプロセスの一部) をメモリから外部メモリ (ディスク) に一時的に移動する必要があるかを検討します。

初期のオペレーティング システムに存在していた 2 つの論理拡張テクノロジであるオーバーレイとスワッピングは、今では過去のものとなりました。以下に簡単な紹介をします。

前述のように、初期のオペレーティング システムでは、メモリ空間はシステム領域 (オペレーティング システム関連のデータを格納するために使用) とユーザー領域 (ユーザー プロセス関連のデータを格納するために使用) の 2 つの部分にのみ分割されていました。メモリ内に存在できるユーザー プログラムは 1 つだけであり、ユーザー プログラムはユーザー領域全体を占有します。明らかに、メモリ空間はユーザー プログラムを収容できないことがよくあります。

オーバーレイ技術の基本的な考え方は、プログラムの実行中は、プログラムとデータのすべての部分に常にアクセスする必要はないということです(特に大規模なプログラム)。したがって、ユーザー空間 (メモリ) は、固定領域と 1 つ以上のオーバーレイ領域に分割できます。

プログラムの頻繁にアクティブになる部分を固定領域に配置し、残りの部分を呼び出し関係に従ってセグメント化します。まず、これから使用するセグメントをオーバーレイ領域に配置し、その他のセグメントを外部メモリ (ディスク) に配置します。呼び出しが必要になる前に、ユーザーは特定のシステム コールを設定して、外部メモリ内のセグメントをオーバーレイ領域に転送し、オーバーレイ領域内の元のセグメントを置き換えます。

オーバーレイ技術の欠点は明らかであり、受け入れられないと言えます。つまり、オーバーレイ技術では、メモリ容量不足の問題がユーザーに委ねられます。オペレーティング システムは、オーバーレイ セグメントをメモリにロードするためのシステム コールのみをユーザーに提供しますが、ユーザーは、上書きするセグメントとメモリにロードするセグメントを指定する必要があります。

では、コンピューターを使用するときは、プログラムがクラッシュしないようにする方法を考えなければならないのでしょうか?

カバレッジ テクノロジは、実際には同じジョブ/プロセスの異なるセグメント間で使用されていることがわかります。では、異なるジョブ/プロセス間ではどうでしょうか?

ここでスイッチング技術が役立ちます。

スワッピングの基本的な考え方は、アイドル状態のプロセス/ジョブは主に外部メモリ (ディスク) に保存されるというものです。プロセス/ジョブを実行する必要がある場合、プロセス/ジョブはディスクからメモリに完全にロードされ、プロセスは一定期間実行された後、ディスクに戻されます。したがって、プロセス/ジョブが実行されていない場合は、メモリを占有しません。

実際、オーバーレイ テクノロジとスワップ テクノロジはそれぞれ、従来のストレージ管理 (物理メモリ管理) における問題を解決します。

  • オーバーレイ技術は、ジョブ/プロセスが実行を開始する前に一度にメモリにロードされなければならないという制限を打ち破ります(1回限り)
  • スワッピング技術は、ジョブがメモリにロードされると、ジョブが完了するまでメモリ内に残る(常駐)という制限を打ち破ります。

もちろん、いずれにせよ、これら 2 つの論理拡張技術は過去のものとなり、現在は仮想メモリ技術が主流となっています。これら 2 つの古いテクノロジの特性を組み合わせ、従来のストレージ管理に存在する 2 つの問題を単独で解決します。

仮想メモリとは

上記のスワップ技術を基礎とすれば、仮想メモリを理解することはそれほど難しくないでしょう。

もちろん、その前に、仮想メモリは実際のものと見なすべきではないことを強調しておかなければなりません。それは技術です!スワップ技術やオーバーレイ技術と同様に、メモリ空間を論理的に拡張するために使用される技術です。

仮想メモリ技術は、局所性の原則という非常に重要な原則に基づいています。

1) 時間的局所性: プログラム内の命令が実行されると、その命令がすぐに再度実行される可能性が高くなります。データの一部がアクセスされた場合、そのデータはすぐに再度アクセスされる可能性があります。 (プログラム内にループがたくさんあるため)

2) 空間的局所性: プログラムがストレージユニットにアクセスすると、その近くのストレージユニットにもすぐにアクセスされる可能性が高くなります (多くのデータがメモリに連続して保存され、プログラム命令もメモリに順番に保存されるため)

この局所性の原則に基づいて、プログラムをメモリにロードするときに、すぐに使用されるプログラムの部分だけをメモリにロードし、一時的に使用されない部分は外部メモリ(ディスク)に保持したまま、プログラムを正常に実行することができます。

プログラム実行中に、CPU が必要とする情報がメモリ内にない場合、オペレーティング システムは必要な情報を外部メモリ (ディスク) からメモリにロードし、プログラムの実行を継続する役割を担います。

メインメモリにロードするときにメモリ領域が不足している場合は、オペレーティングシステムがメインメモリ内の一時的に使用されていない情報を外部メモリにスワップアウトする役割を担います。

上記は仮想メモリ技術です。

仮想メモリ技術を実装する方法

仮想メモリを使用すると、ジョブ/プロセスをメモリに複数回ロードできることがわかります。連続割り当てを使用する場合、実装が不便です。したがって、仮想メモリ テクノロジの実装は、不連続な割り当て管理に基づいています。

従来の基本ページング管理、基本セグメンテーション管理、基本セグメント ページ管理、および仮想メモリ テクノロジの組み合わせは、それぞれ、デマンド ページング管理 (ページ化仮想メモリ システム)、デマンド セグメンテーション管理 (セグメント化仮想メモリ システム)、およびデマンド セグメント ページ管理 (セグメント ページ化仮想メモリ システム) と呼ばれます。

これらの概念は混同されやすいですが、実際には区別するのは非常に簡単です。 Baidu 百科事典から抜粋したこの文章を覚えておいてください。

リクエストページングやページ置換の機能がない場合、基本ページング管理(または純粋ページング管理)と呼ばれます。仮想メモリの実装をサポートする機能はありません。各ジョブ (プロセス) は、実行する前にメモリに完全にロードされる必要があります。

リクエストセグメントのストレージ管理も同様です。セグメントストレージ管理を基盤としていますが、セグメント調整とセグメント置換を要求する機能が追加されています。

リクエスト ページング、ページ置換、リクエスト セグメンテーション、セグメント置換の概念は似ています。ここでは、リクエスト ページングとページ置換を例に挙げて説明します。

  • プログラム実行中、アクセスされた情報がメインメモリにない場合、オペレーティングシステムは必要な情報を外部メモリ(ディスク)からメインメモリにロードし、その後プログラムの実行を続行する責任があります(オペレーティングシステムは、メインメモリ内の不足しているページをディスクからメインメモリにロードするための要求ページング機能を提供する必要があります)。
  • メモリ領域が不足している場合、メモリ内の一時的に使用されていない情報をディスクにスワップアウトする責任はオペレーティング システムにあります (一時的に使用されていないページをディスクにスワップアウトするためのページ置換機能をオペレーティング システムが提供している必要があります)。

具体的には、ページ化された仮想メモリ システムでは、CPU がアクセスするページがメイン メモリに存在しない場合は常にページ フォールト割り込みが生成され、オペレーティング システムのページ フォールト割り込み ハンドラが割り込みを処理します。このとき、ページが欠落しているプロセス/ジョブはブロックされ、ブロッキング キューに配置されます。ページングが完了すると、起動され、準備完了キューに戻されます。

  • メモリ内に空きブロックがある場合は、空きブロックがプロセスに割り当てられ、不足しているページがこのブロックにロードされ、ページ テーブル内の対応するページ テーブル エントリが変更されます。
  • メモリ内に空きブロックがない場合、ページ置換アルゴリズムは削除するページを選択します。メモリ内のページが変更された場合は、外部メモリに書き戻す必要があります。変更されていないページを外部メモリに書き戻す必要はありません。

これは単純なプロセスではなく、基本的なページング管理における単純なページ テーブルではこのようなタスクを実行できなくなっていることがわかります。

まず、基本的なページ管理のページ テーブルを確認しましょう。このページ テーブルには、ページ番号とブロック番号の 2 つのフィールドしかありません。

リクエスト ページング管理のページ テーブルは当然ながらはるかに複雑です。

1) 「デマンド ページング」機能を実装するには、オペレーティング システムは各ページがメモリにロードされているかどうかを知る必要があります。そうでない場合は、ディスク上のページの場所も知っておく必要があります。

2) メモリ空間が不足している場合、「ページ置換」機能を実装するために、オペレーティング システムは特定のインジケータを使用して、スワップアウトするページを決定する必要があります。一部のページが変更されていない場合は、それらをディスクに書き戻すのに時間を無駄にする必要はありません。一部のページが変更されている場合は、ディスク上の古いデータを上書きする必要があります。したがって、オペレーティング システムは、各ページが変更されたかどうかに関する情報も記録する必要があります。

このため、リクエスト ページング管理用のページ テーブルに 4 つのフィールドが追加されます。

  • ステータスビット: ページがメモリにロードされたかどうか
  • アクセスフィールド: ページ置換アルゴリズムがページをスワップアウトするときに参照できるように、ページが最近アクセスされた回数、またはページが最後にアクセスされた時間を記録できます。
  • 変更ビット: ページがメモリにロードされた後に変更されたかどうか
  • 外部メモリアドレス: 外部メモリ内のページの保存アドレス

ページ置換アルゴリズムも非常に重要なトピックであり、この記事で一緒に書くべきでした。しかし、「ページ置換」問題は仮想メモリだけでなく、コンピュータ設計の他の領域にも存在すると考えました (たとえば、ほとんどのコンピュータは、最近使用した 32 バイトまたは 64 バイトのストレージ ブロックを 1 つ以上のキャッシュに保存します。これらのキャッシュがいっぱいになると、最近使用したスト​​レージ ブロックを保存するために、いくつかのブロックを選択して破棄する必要があります)。そのため、後で別の記事を開くことにしました。

<<:  Kafka はなぜこんなに速いのでしょうか?

>>:  Borei DataとAlibaba Cloudが共同で新しいクラウドダイヤリング製品をリリースし、クラウドネイティブ時代のインテリジェントな運用とメンテナンスをリード

推薦する

青大根外部リンク2.0の時代では、ソフト記事外部リンクは役に立たなくなった

Baidu からの公式ニュース: 一部のウェブサイトがさまざまな方法であらゆる場所にプロモーション ...

Douyinグループの管理は拡大を続け、企業が短編動画マーケティングを行うのを支援している。

月収10万元の起業の夢を実現するミニプログラム起業支援プラン現在、短編動画は現代人の生活に欠かせない...

SEOビジョン: Baiduは「ユーザーエクスペリエンス」で知られています

Baidu SEO を長期間続けていると、自然とある程度の経験が身に付くでしょう。 SEOは非常に面...

エッジコンピューティングの成功または失敗の鍵は何でしょうか?

国が新たなインフラ戦略を継続的に推進するにつれ、国内の5Gネットワ​​ーク構築は急速な発展段階に入っ...

パートナーと連携して前進し、質の高いサービスで政府と企業の市場を統合します

先日、盛況のうちに終了した「ファーウェイ中国エコシステムカンファレンス2021」において、ファーウェ...

高品質な外部リンクを構築する方法: 投稿、Q&A、ソフト記事

インターネット業界で働く人なら、「コンテンツは王様、外部リンクは女王」という言葉を聞いたことがあるは...

Baiduプロモーションアシスタントキーワードマイニングツールの紹介と使い方

キーワードマイニングは私たちにとって最大の悩みの種です。お客様がどんな言葉を検索したいのか分からない...

100TB 香港クラウド VPS - 376M メモリ/10G ハードディスク/1T トラフィック/xen/onapp

UK2 グループの 100TB もクラウド VPS の提供を開始しました。もちろん、vps.net ...

Google ハングアウトは、国際通話の最初の 60 秒間をユーザーに無料で提供します

Google は、ビデオ グループ チャット ソフトウェア Hangouts の導入をユーザーに促す...

テンセントクラウドはいくつかのコア製品の値下げを発表、最大の値下げは40%に達した。

5月16日、テンセントクラウドは同社の主要クラウド製品の数種類の値下げを発表し、一部の製品ラインでは...

Weiboマーケティングは誰でもできるものではない

何もすることがなかったので、テンセントの微博と新浪微博を開きました。どちらも今最もホットなソーシャル...

ケーススタディ: ソーシャルシグナルの SEO ガイド

ランキング要因としてのソーシャルシグナルの簡単な歴史約 2 年前、SEO 業界のトップ ウェブマスタ...

ウェブマスターネットワークからの毎日のレポート:Yixunが家電市場に参入、Tencent Enterprise QQが復活

1. Googleの.searchなどのトップレベルドメインの申請は業界団体から反対された北京時間3...

IT ハイブリッド クラウド戦略: 何を、なぜ、どのように構築するのか?

「ハイブリッド」という言葉は、通常は自動車に関連していますが、ほとんどの人はその言葉を知っています。...