ユーザープロセスは実行可能ファイル自体と共有ライブラリのファイル記述子をスケジュールしますか?たとえば、/proc/PID/fd
//に加えて、bash
少なくとも以下が表示されると予想されます。fd
stdin
stdout
stderr
- 一つのために
/usr/bin/bash
- 文書用の
/usr/lib/XXX/libc-2.XX.so
コピーの1部。
カーネル機能によるとload_elf_binary
fd
、少なくともaが実行可能ファイルに割り当てられているようです。
ただし、実際にはフォルダにはそのようなfd
項目はありません/proc/PID/fd
。おそらく存在しないからですtask_struct->files->fd_array
。したがって、質問は次のようになります。
- カーネルは、
file
プロセス固有の構造(例:/)でtask_struct
実行可能ファイルと共有ライブラリに対応するオブジェクトへのポインタを保存しますかthread_info
? - では、どのような構造なのでしょうか?
答え1
いいえ、通常、これらのエントリのファイル記述子はありません。ただし、/proc/PID/exe
実行中のバイナリが表示され、マップされたアイテムがどこにあるかが表示され/proc/PID/maps
ます。/proc/PID/map_files/
そしてこれが存在しなくても、カーネルはそれを追跡し続けることができます。カーネルメモリのすべてが/proc
。