Linuxアーキテクチャの詳細を学ぶためのリソースはありますか? [閉鎖]

Linuxアーキテクチャの詳細を学ぶためのリソースはありますか? [閉鎖]

私はLinuxファイルの階層とオペレーティングシステムがより深いレベルで動作する方法を理解したいと思います。学べる電子書籍やウェブページはありますか?

ベストアンサー1

Linuxファイル/ディレクトリ階層は次のように構成されています。ファイル階層標準またはFHS。

オペレーティングシステムが「より深い」レベルで動作する方法は、より複雑なトピックです。通常、サーフェス階層はユーザーコマンドです。主にマニュアルページの第1章で扱う/binおよび/usr/binディレクトリのコマンドです。次のレベルは、Linuxを含むほとんどのUNIXシステムで第3章でカバーされている標準ライブラリの機能とインタフェース(プログラミング用語)です。システムレベルのユーティリティは/ sbinと/ usr / sbinにあり、マニュアルの第8章に記載されており、設定ファイルは/ etcに保存されており、第5章のマニュアルページに記載されています。

次に、低詳細レベルはシステムコールインターフェイスです。これについてはセクション2/2章のマニュアルページで説明します。システムコールはカーネルの関数です。呼び出し方法の詳細は、ほとんどのCプログラミングライブラリ(libc ---必須Linuxシステムではglibcとして提供されています--- C用のGNU lib)で提供されています。

カーネル自体はCで書かれていますが、鶏と卵の問題を考えると、libcにリンクされていません。したがって、カーネルはCライブラリが依存する機能を提供します。 「ls」コマンド、シェル、エディタ、実際にソースコードを実行しているプログラムに変換するために使用されるコンパイラ、リンカなどのユーザ空間プログラムは、すべてこれらのCライブラリにリンクされています。 (Cライブラリが独自の実装でシステムコールを「ラップ」することも一般的です。これはシステムコールと同じ名前ですが、ある程度移植性を提供し、デバッグ、トレース、またはエラー処理用のフックを追加することもできます。)

もちろん、最も深い詳細レベルはカーネルソースコード自体です。このファイルは、カーネルが実装する内容を正確に文書化します。たとえば、カーネルが "init"プロセスとして見つけて実行しようとしている場所とファイル名のリストを正確に表示するには、init / main.cで見ることができます。

数年前、私はガイドツアーとレッスンを含む一連のカーネルソースコード学習コースを構築するためにシンプルで思慮深く参加し、それを理解するためのオンライン学習ガイドを作成しました。一部のコンテンツは次のページに文書化されています。Wikiversity:Linuxカーネルのソースコードを読む。好奇心旺盛であり、自ら動機づけられた読者が始めるのを助けるいくつかの有用な議論もある。 (しかし、実際に研究するには、Cソースコードを読むことができなければならず、いくつかのインラインアセンブリを知る必要があるかもしれません。)

本当の質問は、アナウンサーが通常困っている人に「どうやってクク?」と叫ぶことです。

おすすめ記事