2019-2020-1 20199326仕事の4週目の「Linuxカーネルの原理と分析」

学習コンテンツの4週目

Paodingjieniu Linuxカーネルの分析第三章:MenuOS建設

Linuxカーネルの分析第三の実験

私はいくつかの知識を学びました

  • オペレーティングシステム2つの剣:1割り込みコンテキストスイッチング - プロセスのコンテキストスイッチ2フィールドのサイトを保存し、復元
  • 命名規則Linuxカーネルバージョン:ABCD、Aはカーネルの実質的な変化を表し、Bはカーネルに大きな変更の数を意味し、Cは、カーネルの本当のバージョンであり、Dは、セキュリティパッチやバグ修正です
  • Linuxカーネルのソースディレクトリ構造:
    • これだけのx86ファイルディレクトリに焦点を当てる必要があります、基本的にはx86アーキテクチャです我々はコンピュータを使用し、Linuxカーネルの内容が異なるCPUとアーキテクチャをサポートすることができますアーチことができます
    • デバイス管理部に格納されているLinuxのストレージ・システムのブロック・コード
    • 暗号休日ストアなどCRC32、MD5、SHA1、としてそのC言語コードの暗号化アルゴリズム、
    • 文書には、いくつかのドキュメントを格納します
    • ドライバは、すべてのハードウェアドライバのソースコードをサポートするためのLinuxカーネル内に格納され、ディレクトリを駆動します
    • ファームウェアファームウェア
    • Linuxの一覧を示します達成FSファイルシステムは、様々なファイルシステムをサポートしています
    • 公共のヘッダファイルを格納したヘッダファイルのインクルードディレクトリ
    • 初期化初期化コードは、main.cのソースファイルは、全体Linuxカーネルのブートの出発点であるLinuxカーネルの開始時に保存されています
    • IPCは、プロセス間通信、ストレージは、IPCのLinuxのコードの実装によってサポートされています
    • 自身が必要とするコアコードの一部を格納するためのカーネルのカーネル、カーネルファイル
    • libの公共図書館、いくつかの公共図書館
    • MMは、メモリ管理、メモリ管理、ストレージ管理コードのLinuxカーネルであります
    • そのようなTCP / IPスタックなどのネット関連するコード・ストレージ・ネットワーク、
    • readmeファイルは、Linuxが何であるかを説明した文書は、Linuxは、ハードウェアやその他の問題に実行することができます。
  • より重要なのLinuxカーネル解析がアーチのx86ディレクトリの下のディレクトリ内のソースファイルで、次のカーネルスケジューリングおよびプロセス関連のコードの下のmain.cのinitディレクトリは、他のメモリ管理、ネットワーキング、ファイルシステムのコードがあります

ウェブテスト

Linuxカーネルのブートプロセスのフォローアップ分析

1. menuos

cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

開始効果が示されています

2. GDBのデバッグカーネルのトレース

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

別のシェル・ウィンドウを開き、次のLinuxカーネルディレクトリのgdbの入力入力して
GDBにセットブレークポイントを

file linux-3.18.6/vmlinux  #加载符号表
target remote:1234  #建立gdb和gdbserver之间的连接
break start_kernel  #设置断点
c   #让qemu上的linux继续运行
break rest_init #设置另一个断点
c  #继续执行

結果の図の実装

おすすめ

転載: www.cnblogs.com/funmary/p/11619990.html