標準CライブラリはデフォルトでLinuxのメインメモリにロードされますか?

標準CライブラリはデフォルトでLinuxのメインメモリにロードされますか?

ほとんどのLinuxカーネルはCで書かれているので、カーネルがメインメモリにロードされると、標準のCライブラリもLinuxカーネルと共にロードされますか?

これがCで書かれたプログラムが他のプログラムよりもメモリを消費しにくい理由であれば、標準のCライブラリがすでにロードされているため、Linuxシステムで実行すると、他の言語で書かれたプログラムよりも高速です(ページフォールトが少ない)。

ベストアンサー1

カーネルはCで書かれていますが、Cライブラリ(例:デイブ・トンプソン_085「と指摘した。離れた"). これは、カーネルで使用するためにカーネルと共にロードされた C ライブラリはカーネルでのみ使用されます (カーネルが何らかの方法でユーザー空間に明示的にアクセスできるようにしない限り)。

つまり、ほとんどの場合、最も古いプログラムはカーネルの起動後に実行されます(initramfsのプログラムは独自のCライブラリコピーを使用しますが、最終的にはinitCライブラリを使用するため、最終的には初期には一般的なライブラリ部品が常に物理メモリに残ります。可能性が高いです。

カーネルには次の実装が含まれています。多くのCライブラリ関数または変形(例:printk代わりにprintf);しかし、誰もが標準に正確に従うわけではありません。場合によっては、Cライブラリ関数の実装翻訳者代わりに使用されます。

(C以外の言語で書かれたほとんどのプログラムは最終的にCライブラリを使用します。)

おすすめ記事