-1

私はメモリ共有をいじります.20GBを超えると、特定のユーザーに256MBのブロック(他のサイズはありません)を割り当て、それらを他のプロセスとmmap(共有)するため、ゴッドケーキはタイトルが言うことをすることを望んでいます. 64 ビットの仮想アドレス空間は巨大 (16EB) です。ユーザー マネージャーのコードとデータを、ユーザーのメモリとは別の場所に保管する必要があるだけです。

パーフェクトは次のような機能です。

void *malloc(size_t n, void *from, void *to);
4

1 に答える 1

1

POSIX をサポートするシステムを使用していると仮定して、共有メモリ セグメントを で作成または検索しshmget、 でアタッチしshmatます。完了したらshmdt、 で共有メモリ セグメントをデタッチして削除しshmctlます。これらのルーチンのドキュメントを読むのはあなたに任せます。

共有メモリをマップする特定のアドレスをshmat要求できますが、通常はその必要はありません。address パラメータに 0 を渡すと、アドレスshmatが選択されます。高いアドレスを設定しても、共有メモリを他のメモリから分離することはできませんが、メモリ内の意図しない場所への書き込みを行うバッファ オーバーランによって発生する可能性のあるエラーを軽減または変更する可能性はあります。

于 2012-08-26T11:35:18.197 に答える