ゴッドソンCPUと組み合わせてLinuxカーネルを学ぶ方法は?



How Learn Linux Kernel Combination With Godson Cpu



前書き: 「「コア」を使用したコアの探索:Loongsonに基づくLinuxカーネルの探索と分析」は、Loongsonプラットフォームに基づいており、ソースコードを組み合わせてLinux-5.xカーネルを探索および分析する本です。

テキストの数:1583、おおよその読書時間:1



Linuxカーネルを分析する多くの古典的な本、特にLinuxカーネルの分野の本が市場に出回っています。 四庫全書 ':' Linuxカーネルの設計と実装 '、' Linuxデバイスドライバー '、' Linuxカーネルの詳細な理解 '、および' Linuxカーネルソースコードのシナリオ分析 '。

ただし、一方で、既存の書籍のほとんどはX86またはARMアーキテクチャに基づいていますが、既存の書籍のほとんどはLinuxカーネルバージョン2.4または2.6に基づいていますが、近年。



同時に、Godsonカーネルの開発に携わってきた「標準チュートリアル」は、「Longsonプロセッサユーザーマニュアル」、「MIPSアーキテクチャの展望」、「Linuxカーネルの詳細な理解」です。ただし、「Longsonプロセッサユーザーマニュアル」にはLinuxカーネルは含まれていません。「MIPSアーキテクチャの展望」では、従来のMIPSプロセッサについて説明しています。これは、実際のGodsonおよび「Linuxカーネルの詳細な理解」で使用されているカーネルバージョンからはかけ離れています。古すぎる。

したがって、中国科学院計算技術研究所の研究者であるZhang Fuxinは、勧告の中で次のように述べています。 Godsonプラットフォームに基づくこのカーネル開発本の発行は、タイミングと一致しています。 「」

著者:陳華は
医者、シニアエンジニア。江蘇航空宇宙Longmeng情報技術株式会社の現在の副チーフエンジニアは、Loongson-3プロセッサのコア開発を担当しています。 LinuxカーネルのMIPS / Loongson 3のメンテナとして、大量のコードがLinuxカーネルに正式に送信されます。



50%割引、全国送料無料(遠隔地を除く)
ネットワーク全体にとって最も有益な、限られた時間5日

なぜこの本を書くのですか?

私は誰?私はLinuxとGodsonの両方を愛する開発者です。私は16年前にLinuxカーネルを使い始めました。私は12年前にLoongsonComputerで働き始めました。彼は10年前にLoongson工業化基地に加わりました。過去10年間、彼はLoongsonと共に成長しました。今では、LinuxカーネルのGodson3のメンテナーになっています。

「あなたがすることをしなさい、あなたがしていることを愛しなさい」と言う人もいますが、私は「あなたがしていることを愛し、あなたがしていることをしなさい」は持続可能な開発とより一致していると思います。 LoongsonとLinuxはどちらも私のお気に入りであり、研究へのモチベーションに満ちています。結局のところ、人間の脳の能力は限られており、知識システムが拡大し続けるにつれてメモが不可欠であるため、カーネルのソースコードを読むときは常にメモを取る習慣がありました。私がメモを取る方法は 'で始まります コードの抜粋+適度な単純化+コメント分析 '主に、しかし時間の経過とカーネルバージョンのアップグレードにより、ノートの総数はますます大きくなり、異なるバージョンでの同じ名前の機能が認識できなくなりました。そのため、メモに複数のソースコードを記録しなければならないことがよくあります。バージョンを作成し、コードスニペットの先頭にバージョンマークを追加します。音符は主に自己読み取り用ですが、熱力学の第二法則が示すように、音符の読みやすさは必然的に低下します(エントロピーが大きすぎます)。

それ以来、メモを整理して本に書くというアイデアが生まれました。元々のアイデアは2013年から2014年に形成されましたが、私が書き始めたのは2015年でした。本を書く過程で、解析方法は、簡略化されたコードの特性を可能な限りメモに残しましたが、すべて最新のLTSバージョン(長期保守安定バージョン)、つまり5.4.xバージョンを採用しました。 、カーネルバージョンの選択で。

この本のために何が選ばれましたか?

この本はLoongsonプラットフォームに焦点を当てており、主にLinuxカーネルのソースコードを分析しています。まず、LoongsonプロセッサとLinuxカーネルの概要を説明し、紹介します。 コードを読み取るための高速で効果的な方法 、つまり、「最初に概要を確認してから、単語をかみ砕きます。」

オペレーティングシステムは、コンピューター全体のマネージャーです。それは本質的に大規模なソフトウェアプラットフォームです。プログラムの実行フローに従うのは自然なことです。したがって、GodsonコンピューターのLinuxカーネルから 起動プロセス Linuxカーネルの研究を開始することは、LoongsonプロセッサとLinuxカーネルのマクロな印象を得る良いエントリポイントです。

カーネルはオペレーティングシステムの最も基本的で重要な部分であり、その3つの基本的な機能は次のとおりです。 割り込み/例外処理、メモリ管理、プロセス管理 。これらの3つの章の内容は、「基本から上位レベルまで」および「幅優先と深さ2番目」の記述原則に可能な限り準拠しているため、読者は必要に応じて読み上げ順序を簡単に調整できます。 Linuxカーネルは、X86、ARM、MIPS、PowerPCなどの複数のアーキテクチャーをサポートしますが、上位レベルのアプリケーションに対して基本的に一貫した操作インターフェイスを提供します。したがって、カーネルの3つの基本機能の一部は、アーキテクチャに関連する特定のコンテンツであり、一部は、アーキテクチャに依存しない一般的なフレームワークです。

Linuxは統合されたカーネルオペレーティングシステムであるため、デバイスドライバーもカーネルレイヤーに実装されます。デバイスドライバの範囲は非常に広く、この本ではすべてを網羅することはできません。一般的に使用される2つの典型的なものだけです。 デバイスドライバ -原理を説明するためのRadeonグラフィックカードとE1000Eネットワークカード。

Linuxカーネルは広範で深遠です。この本には数百ページが飛び散っていますが、2,000万行を超えるソースコードは実際にはほんの一滴です。私はコンテンツの範囲をより包括的にしようとしましたが、それは関係しているだけでした カーネルの起動、異常な割り込み、メモリ管理、プロセス管理、デバイスドライバー、電源管理 いくつかの一般的なトピックを待っていますが、ファイルシステムやネットワークプロトコルなどについてはほとんど何もありません。

数千万行のソースコードを読み取る方法は?

ソフトウェアのソースコードを読むことは、すべての開発者、特にカーネル開発者にとって唯一の方法です。なぜなら カーネル開発は、車輪の再発明を大幅に行うことではなく、既存のカーネル設計フレームワークを可能な限り理解して再利用することです。 、次に、同様の機能モジュールを参照して、必要な機能を追加または書き換えます。コアと特定のサブシステムの全体的なフレームワークが統合された後、巨人の肩の上に立ってフレームワーク自体を改善し、独立したイノベーションを実現することができます。

'でコードを読む 幅優先 'with' 深さ優先 'ふたつのやり方。コードは木のようなものです。 「幅優先」とは、最初に幹を見つけ、次に幹にある枝の数を把握し、目的の枝に移動して意味のある葉を見つける必要があることを意味します。「深さ優先」とは、最初の枝、あなたはすぐに深く行き、すべての葉を見つけます。この本は幅優先を最初に推奨していますが、適切な場合は、深さも考慮する必要があります。したがって、この本は 'を使用します ツリー表示 'with' チェーンビュー 'カーネルのソースコードを解析するため。これは、私や同僚が日常業務でよく使用する方法でもあります。ツリービューには幅があり、大きな関数のバックボーンをすばやく理解できます。チェーンビューには奥行きがあり、主要な関数の呼び出しを直感的に理解できます。 。

(ツリー表示)

(チェーンビュー)

多くの既存の本では、フローチャートはコードロジックを説明するために使用されます。ただし、フローチャートは直感的ですが、その記述能力には限界があり(特にツリービューの階層表現能力の欠如)、関数の実行プロセスを正確に記述することが難しい場合があります。多大な労力を費やして作成された正確なフローチャートは、その複雑さのために直感的な機能を失うことがよくあります。さらに、フローチャートだけではソースコードを完全に理解することはできませんが、ソースコードをフローチャートと比較する必要があります。

したがって、この本は 簡略化されたソースコード (つまり、ツリービューとチェーンビュー)フローチャートの代わりに、一方ではマルチレベル関数の複雑な呼び出し関係をすばやく理解でき、他方ではソースコードとフローチャート。

ツリービューとチェーンビューの紹介に加えて、冒頭の章の最初の章では、最初に「最初にアウトラインを見て、次に単語を噛む」というコードの読み取り方法を紹介します。具体的には、4つのステップに分かれています。 エントリポイントを特定する 「」 主なコンテキストを明確にする 「」 名前が示すように関数を参照してください 「」 パッチファイルを理解する 」。

2015年の執筆開始から現在まで、「「コア」を使用したコアの探索:ゴッドソンに基づくLinuxカーネルの探索と分析」という本が形になりましたが、部外者にとっては紆余曲折だけでは十分ではありません。本を書いている途中で、基本原理をみんなに説明しようとすると、以前は理解できなかったのだと気づきました。本を書くことの最大の受益者は私自身であるとさえ言えます。なぜなら、知識システム全体が本当に全面的に昇華しているからです。

この本を、情報産業の自治のために一緒に働いている同僚に捧げたいと思います。また、この本が読者に大きな利益をもたらすことを願っています。

50%割引、全国送料無料(遠隔地を除く)
5日以内にネットワーク全体にとって最も有益