スワップせずにページングを管理する方法。このような場合は、ページエラーをどのように管理する必要がありますか?
使用可能なスワップがない場合は、ページングを管理する方法を意味します。 free_pagesリストと割り当てられた_pagesリストの2つのページリストがあることを知っています。 free_pagesリストのページが低くなると、割り当て_ページリストのLRUページをスワップパーティションに移動します。スワップパーティションがないとどうなるか知りたいです。
答え1
あなたの問題を理解する限り、通常は次のように発生します。
メモリが割り当てられている場合:
- メモリは割り当てられているとマークされますが、物理メモリは割り当てられません(したがって、アクセス時にページエラーが発生します)。 Linuxではこの段階で停止しますが、システムは物理スペースをすぐに割り当てることができます。その後、OOMが発生しないことを除いて、最後にページエラーに似たアルゴリズムを実行します。
ページ障害がある場合(マッピングされていないページにアクセスする)
- メモリが割り当てられていることを確認し、そうでない場合はエラーを返します。
- 無料の実際のページがあることを確認してください。ある場合は5に進みます
- ディスクに書き換え可能な部分(キャッシュ内のファイルなど)があるか、スワップ領域に空き容量があるか(スワップ領域がない場合はそのサイズのスワップ領域と見なされます)。ディスクに書き換えられたファイル/ブロック、またはディスクに書き込まれたページがある場合は、マッピングを解除して5に進みます。両方が利用可能な場合は、どちらかを選択します。
- OOM条件を返します。これはカーネルで発生する状況によって異なります。ユーザーに、エラー、カーネルパニック/ブルースクリーン、終了するプロセスの検索などが表示されることがあります。
- 問題を引き起こしているページを解放されたページにマップします。ページがスワップされると、スワップからページを読み取ってページに入れます。ページがファイルに裏付けられている場合、ファイルが読み取られ、コンテンツがファイルに配置されます。
一般に、スワップがないことはスワップ全体と同じであると言えます。
答え2
交換して使用しないアイテムの移動を許可します。ページメモリから検索してディスクに書き込みます。ただし、実際の状況によって必ずしもそうする必要はない。ページングスワップしなくてもジョブが発生します。
答え3
あなたの質問を正しく理解することは、スワップスペースが定義されていない場合、ページングがどのように発生するかを尋ねることです。
従来のUnixアプローチを使用するオペレーティングシステムでは、仮想メモリは常に物理RAMによってサポートされているため、メモリマッピングファイルや偽のポインタなどの関連性がない場合を除き、スワップ領域の欠落によりページエラーが発生することはありません。
Linuxなどの過度に使用されているオペレーティングシステムでは厳密な保存が発生しないため、使用可能なRAMがなくてもマップされていないページに初めてアクセスすると、OOMキラーやその他の破壊/エラーイベントが発生します。