ページングは、オペレーティング システムに関連するメモリ管理プロセスです。ページセグメントを使用して、一部のプロセスデータをセカンダリデータストレージからプライマリデータストレージまたはメモリに保存または取得します。ページング プロセスは、プロセスでページ上でエラーが発生し、新しい空きページによる割り当てプロセスを満たすことができない場合に発生します。 LRU プロセスでは、特定の置換アルゴリズム要件が生成されます。プロセスが新しいページを生成するとき、どのページを置き換える必要があるかを決定します。例を挙げてみましょう -
入力はこのプロセスに使用されます -
リーリープロセスの現在のページ = {5, 0, 1, 3, 2, 4, 1, 0, 5}
出力結果は次のとおりです: 8
###説明する -###割り当てられたメモリ ページは 5、0、1、3
このプロセス中に発生した障害 = 4
メモリを割り当てる必要があります。値は 2、LRU 5 を置き換えます:
このプロセス中に発生したエラー = 4 1 = 5
値 4 でメモリを割り当てる必要があります。LRU 0 を置き換えます:
このプロセス中に発生したエラー = 5 1 = 6
値 1 の必要なメモリはすでに存在します:
このプロセス中にエラーが発生しました = 6 0 = 6
最も最近使用されていない 3 つのメモリ ブロックを置き換えるために、値 0 のメモリを割り当てる必要があります:
このプロセス中に発生したエラー = 6 1 = 7
値 5 でメモリを割り当てる必要があります。これにより、LRU 2 が置き換えられます:
このプロセス中にエラーが発生しました = 7 1 = 8。
LRU のページ フォールトを評価するアルゴリズム
削除してプッシュしてください。
方法 2 - インデックス付きページングと LRU アルゴリズムによるハッシュ関数を使用してオペレーティング システムのメモリを管理し、C プログラムを使用してページ フォールトを検出します。
C プログラムは、オペレーティング システムのページ関連の最も最近使用されていない (LRU) アルゴリズムを使用したメモリ管理を示します
ページの移動を開始します。
データをコレクションに挿入します。
リクエストページの処理。
同時に起こり続けてください。
インデックスを宣言します。
ページフォールトの増加が開始されました。
コレクション内のページを見つけます。
見つかったページを現在のページに置き換えます。
障害を追加します。
インデックスを更新
サンプルコード1
リーリー ###出力### リーリー
//C++ program to find page faults by using indexes with LRU algorithm attached with the paging for memory management in Operating System using hashing function #include<bits/stdc++.h> using namespace std; int pageFaults(int pages[], int n, int capacity) { unordered_set<int> s; unordered_map<int, int> indexes; int page_faults = 0; for (int i=0; i<n; i++) { if (s.size() < capacity) { if (s.find(pages[i])==s.end()) { s.insert(pages[i]); page_faults++; } indexes[pages[i]] = i; } else { if (s.find(pages[i]) == s.end()) { int lru = INT_MAX, val; for (auto it=s.begin(); it!=s.end(); it++) { if (indexes[*it] < lru) { lru = indexes[*it]; val = *it; } } s.erase(val); s.insert(pages[i]); page_faults++; } indexes[pages[i]] = i; } } return page_faults; } int main() { int pages[] = {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2}; int n = sizeof(pages)/sizeof(pages[0]); int capacity = 4; cout << pageFaults(pages, n, capacity); return 0; }
6
最近最少使用(LRU)替换算法是一种特定的页面算法,我们可以使用它比任何其他算法更长的时间。该过程返回较少的页面错误,并能够完成页面分析。在本文中,我们学习了分页过程及其应用。通过使用上述提到的算法和语法,我们已经创建了一些代码以高效地解决问题陈述。
以上が最も最近使用されていないページ (LRU) でのページ フォールトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。