カーネルはどのように書かれますか? [閉鎖]

カーネルはどのように書かれますか? [閉鎖]

カーネルモードでプログラムを実行すると、標準Cライブラリは使用できません。プログラムがリンクする唯一のターゲットはカーネル自体だからです。したがって、カーネルで定義された関数を使用できます。ただし、カーネル自体はCで書かれ、特定のアーキテクチャ用にコンパイルされたプログラムです。 C標準ライブラリを使用してはいけませんが、ドライバもロード可能なモジュールなので、どのドライバも使用しないでください。だから私の質問は、カーネルを書くときに実際にどのC関数が使用されますか?カーネルを介さずにハードウェアと対話する方法は?ソースを確認するように言わないでください。これは私にとってとても新しいです、TY。

ベストアンサー1

Unixカーネルは伝統的に次のもので構成されています。一部アセンブリ言語コード。最近はソースコードを見たことはありませんが、これはまだ本当だと思います。

バラよりドライバは実際にハードウェアデバイスとどのように通信しますか? このトピックの概要を見てください。この質問に対する答えは、2つのコンピュータアーキテクチャについて説明します。ポートマッピングI / O(PMIO)を使用するシステムでは、カーネル〜しなければならない一部はアセンブリ言語で書かれていますが、いくつかの非常に短いルーチンを使用して実行することもできます。 MMIO(メモリマッピングI / O)を使用するシステムでは、デバイスドライバも完全にCで書くことができます。彼らがしなければならないのは、ポインタを宣言し、それをデバイスの仮想アドレスと同じに設定してから、メモリにアクセスするかのようにデバイスを操作するためだけに使用することです。

おすすめ記事