では、カーネル空間で定義されているユーザーレベル空間から読み取りたい構造体を考えてみましょう。ただし、ユーザーレベル空間には複数のプロセスがあります。
例:
カーネル モジュールには、グローバル構造体があります。構造体 { int a; int b; } テスト;
ユーザーレベルのモジュールで、そのグローバル構造体を「外部化」しました
extern struct { int a; int b; } テスト;
コンパイラは文句を言わないし、リンケージエディタも文句を言わない。ただし、ユーザーが複数のプロセスを持っている場合、その構造体はプロセスごとに複製されますか? extern と一緒に共有メモリを使用すると、カーネルの構造体にアクセスできます。n 個のプロセスがある場合、共有されているため、構造体は 1 つしかありません。1 つのユーザー レベル プロセスでカーネル レベル変数にアクセスできますが、それ以上のプロセスがある場合は、「外部化」された各構造体のクローンを取得します。
私の質問は、複数のユーザーレベルのプロセスがカーネルレベルの変数を読み取ることはできますか?