2011-06-26 2 views
3

カーネルモードでユーザープロセスのページからデータをコピーする方法については、私は不思議でした。私はプロセスのmm_structとすべてのvm_area_structsにアクセスできます。 vm_opsでは、私はアクセス方法を見ましたが、その仕組みが不明です。どんな助けもありがとう。ユーザープロセスのmm_structまたはvm_area_structからデータを読み取る

+0

私はあなたがここで何をしようとしているのか興味がありますか? –

+0

書き込みフォルトが別の場所で発生したときにデータをコピーし、ディスクからページを読み込まないようにしたいだけです。 –

答えて

2

これは、linux/mm.hで宣言されているaccess_process_vmメソッドで行うことができます(私はこの時点で覚えていないと思います)。これはプロセスメモリにアクセスするための安全な方法であり、必要なのはプロセスのtask_struct、書き込み/読み込みのためのバッファ、プロセスのVM空間内のサイズ、アドレス、読み書きの可否です。これが安全な理由は、これを処理するための適切なロックがすべて存在し、get_user_pagesが失敗した場合にユーザースペースページを取得するバックアップメソッドがあるためです。戻り値は、VM空間から読み取られたバイト数です。

関連する問題