1

私はいくつかの実験を通じて Linux カーネルを学んできました。最近、一方のプロセスのページをもう一方のプロセスの vma 構造に挿入することで、2 つのユーザー空間プロセス間でページを共有できるかどうか疑問に思っています。 addr を netlink 経由でカーネルに送り返します。挿入はドライバ モジュールで行われます。このテストの理由は、2 つのプロセスが互いに直接通信していない可能性があり、読み取り専用メモリの重複ページが原因である可能性があるためです。効率と冗長性を考慮すると、悪い選択です。

そして、いくつかの調査の後、vm_insert_page 関数と従来の remap_pfn_range を見つけました。ただし、lxr には次のように書かれています。

/** 2020 * vm_insert_page - ユーザー vma に単一ページを挿入

2021 * @vma: マップ先のユーザー vma

2022 * @addr: このページの対象ユーザーアドレス

2023 * @page: ソースカーネルページ

2024年 *

2025 * これにより、ドライバーは割り当てられた個々のページを挿入できるようになります

2026 * ユーザー vma に。

2027年 *

2028 *ページは、きれいな個別のカーネル割り当てでなければなりません。"

lxrから

これは、既存のページを別の vma に挿入することはできないということですか?この関数は、新しく作成されたページでのみ呼び出すことができますか?ページは参照カウント番号で共有できるといつも思っていました。

4

0 に答える 0