長くて技術的な内容が多いので、クリックしてフォローしていけば迷うことはありません。
序文: Linux カーネルについて理解する
コンピュータ システムはハードウェアとソフトウェアの共生であり、相互に依存しており、分離することはできません。コンピューター ハードウェアLinux カーネル移植手順には、コンピューター シリンダーを構成する周辺デバイス、プロセッサ、メモリ、ハード ドライブ、その他の電子デバイスが豊富に含まれています。また、それを操作および制御するためのソフトウェアがなければ、単独で動作することはできません。この制御作業を実行するソフトウェアはオペレーティング システムと呼ばれ、Linux 用語では「カーネル」または「コア」と呼ばれます。 Linux カーネルの主要モジュール (コンポーネント) は、ストレージ管理、CPU とプロセス管理、ファイル システム、デバイス管理とドライバー、ネットワーク通信 Linux フォーラム、システム初期化 (ブート)、システム コールなどの部分に分かれています。 。
Linux カーネルは、多くの重要なアーキテクチャ特性を実装しています。より高いレベルまたはより低いレベルで、カーネルはサブシステムとして定義されます。 Linux は、これらすべての基本サービスをカーネルに統合しているため、全体として見ることもできます。これはマイクロカーネル アーキテクチャとは異なり、前者は通信、I/O、メモリ、プロセス管理などのいくつかの基本サービスを提供し、より具体的なサービスはマイクロカーネル層に挿入されます。
Linux カーネルは時間の経過とともに、ビデオ メモリと CPU の使用効率が向上し、非常に安定しています。 Linux の場合、最も興味深いのは、このようなサイズと複雑さにも関わらず、優れた移植性を備えていることです。 Linux は、さまざまなアーキテクチャ上の制約や要件を持つ多数のプロセッサおよびプラットフォーム上で実行できるようにコンパイルされています。反例として、Linux は、グラフィックス メモリ管理ユニット (MMU) を備えたプロセッサ上で実行することも、MMU を提供しないプロセッサ上でも実行できることも挙げられます。 Linux カーネルの uClinux ポートは、非 MMU のサポートを提供します。 IT業界の場合
組み込み開発、ドライバー開発、Android 開発、C 開発、Java 開発など (基礎的な側面に触れる場合)
###それで###カーネルを理解します。カーネルは、開発作業に相応の利点をもたらします。
カーネルを理解する: 基礎となる原則と開発ソース コードをより深く理解できるようになります。
コアは筆記試験のおまけアイテムです。
カーネルはエキスパートになる唯一の方法です。
カーネル開発に従事しているかどうかに関係なく、カーネル テクノロジは、スキルを確保し、視野を広げ、技術スキルを高めるための最良の選択です。
次の学習:
Linuxカーネルの分析「脆弱性セキュリティと仮想ビデオメモリ」
Linux カーネルソケットの原理とアーキテクチャの分析
Linuxカーネル「物理メモリモデル」の解析
カーネルの推奨学習ルート. カーネルを学習するのが好きで、カーネルについてさらに詳しく知りたい場合は、これを参照してください。 1: オペレーティング システムの原則/コンパイル トピック 1: オペレーティング システムの原則
プロセス管理: プロセスのステータスと切り替え、プロセスの相互排他と同期、プロセッサのスケジューリング、プロセスのデッドロック
ビデオ メモリ管理: ストレージ構造、パーティション ストレージ管理、セグメント管理、ページ管理、仮想ストレージ
デバイス管理: Cドライブキャッシュ、RAID (Cドライブアレイ)、I/Oバッファ
ファイル管理: ファイル編成構造、ヒープファイルの原則、ストレージスペース管理、ファイルディレクトリ管理
2: アセンブリ言語集中講義
x86/x86_64 アーキテクチャ: x86/x86_64 アーキテクチャ、アセンブリ言語の基本、データ転送、算術演算、アドレス指定、プロシージャと条件の処理、浮動小数点処理、および命令エンコード
ARM アーキテクチャ: ARM コア マイクロプロセッサ、ARM 共通命令システム、ARM アセンブリ プログラムとデバッグ、例外割り込み/リセット ハンドラー/SWI 例外割り込み、RealViewMDK のインストールと構成、ARM アセンブリと C ハイブリッドの実装、データのロードとストレージ コマンドの実装
2: プロセス管理トピック 1: プロセスの基本
Linux カーネルのソース コード構成構造
プロセス原理とプロセスステータス
ライフサイクルとシステムコール: コピーオンライトの原則、プロセスメモリレイアウト、プロセススタック管理、システムコールの実装
Task_struct データ構造解析
2: プロセスのスケジューリング
スケジュール戦略: SCHED_DEADLINE、SCHED_FIFO、SCHED_RR、SCHED_NORMAL
プロセス優先度: スケジュール優先度、静的優先度、通常優先度、リアルタイム優先度
クラス分析のスケジュール: stop_sched_class、dl_sched_class、rt_sched_class、cfs_sched_class、idle_shced_class
SMP スケジューリング: スレッドの移行/プロセッサーの分離、期限スケジューリングのためのプロセッサー・ロード・バランシング、リアルタイム・スケジューリングのためのプロセッサー・ロード・バランシング、および公平なスケジューリングのためのプロセッサー・ロード・バランシング
3: ビデオ メモリ管理トピック 1: ビデオ メモリの原則
SMP/NUMA モデルの構成
化学記憶の構成構造とモデル
ページ テーブル/ページ テーブル キャッシュ: ページ テーブル フレームワークのディレクトリ構造、TLB エントリの形式と管理、アドレス空間識別子 (ASID)、仮想マシン識別子 (VMID)
プロセッサ キャッシュ: キャッシュの構造と戦略、SMP キャッシュの一貫性、キャッシュと TLB の制御
ビデオメモリマッピング:データ構造解析、ビデオメモリマッピングの作成、ビデオメモリマッピングの削除、システムコール実装
2: 仮想ビデオメモリ
ブロック アロケータ: ビデオ メモリ アロケータの原理、ページ割り当てとページ解放、SLAB ブロック アロケータ、SLOB ブロック アロケータ、SLUB ブロック アロケータ、システム スケジューリング ソケット
包括的なページ モジュール: 標準ジャイアント ページ、透過ジャイアント ページ、LRU アルゴリズムとリバース マッピング、直接および非同期ページ リサイクル原則、非アクティブ ページをリサイクルするための実装計画、ページ交換原則、スラブ キャッシュのリサイクル原則、ページ フォールト例外処理、メモリデフラグ、ビデオ メモリのリサイクルの開始、スワップ エリアのデータ構造/作成/アクティブ化、メモリ枯渇の技術原則、ページ欠落例外の調整方法、KASAN 検査ツール、スワップ ページ欠落例外の処理
ビデオ メモリ バリアとカーネル相互排除テクノロジー
次の学習:
カーネルは学習する必要があります|「物理ビデオ メモリと仮想ビデオ メモリ」|VMA 管理/malloc/mmap
Linux カーネル テクノロジ ポイント|ページ割り当てパス|スラブ アロケータの実装
3: ビデオメモリシステムコール
kmalloc/vmalloc
ビデオメモリプールの原理と実装動作
ビデオメモリ最適化パラメータと実装
ページキャッシュの実装
ブロックキャッシュの実装
4: パフォーマンス分析ツール
パフォーマンスの原理メカニズムとインストール構成
パフォーマンス データ収集コマンド 29 ツール アプリケーション
perf はフレーム グラフ分析のためのデータを収集します
4: ネットワーク契約スタックのトピック 1: ネットワーク インフラストラクチャ
ICMP契約
ユーザー データグラム コントラクト (UDP)
伝送制御契約 (TCP)
ストリーム制御送信契約 (SCTP)
データグラム クロストーク制御契約 (DCCP)
IPv4 ポリシー ルーティング
無線サブシステム モジュール: 802.11MAC フレーム構造解析、スキャン/認証/関連付け、mac80211 受信および送信実装、高スループット (802.11n)、メッシュ ネットワーク (802.11s)
IPv4 リダイレクト メッセージ/FIB テーブル
2: ネットワーク契約スタック
ARP (アドレス解決契約)
ユーザー データグラム コントラクト (UDP)
伝送制御契約 (TCP)
中間ルーティング: マルチキャスト ルーティング、ポリシー ルーティング、マルチパス ルーティング
IPv4 パケットの受信/送信
IPv6 パケットの受信/送信
InfiniBand スタック アーキテクチャ: RDMA (リモート ダイレクト メモリ アクセス) 構造、InfiniBand コンポーネントとアドレス指定、InfiniBand 機能とデータ パケット、プロトコル スタック登録/パケット受信/パケット送信プロセス スキーム
次の学習: Linux カーネル コントラクト スタック アーキテクチャを 90 分でマスターする
3: システム API 呼び出し
POSIX ネットワーク API 呼び出し
epoll カーネルの原理と実装
ネットワークシステムパラメータの設定
5: デバイス ドライバーのトピック 1: デバイス ドライバー サブシステム
I/O メカニズムの原理
リソースの割り当てと管理
キャラクターデバイスサブシステム
ブロックデバイスサブシステム
ネットワーク インターフェイス カード ドライバー
2: Linux デバイス モデル
LDM の詳細な分析: LDM データ構造、デバイス ドライバー、kobject 構造、kobj_type、カーネル オブジェクト コレクション
デバイス モデルと sysfs: sysfs ファイルとプロパティ。sysfs プロパティ ファイルのアドレス指定を可能にします。
3: キャラクターデバイスの操作
メインデバイスとセカンダリデバイス
デバイスファイルを開く
キャラクターデバイスの割り当てと登録
ファイル操作の実装の書き込み: オープン/リリース モード、読み取り/書き込みモード、llseek/poll メソッド、file_operations 構造体の充填
モジュールの挿入と削除
4: デバイス操作をブロックする
ブロックデバイスの表現とデータ構造
BIO データ構造
ioctlシステムコール
バスモジュール: ISAバス、PCI/PCI-Eバス、USBバス、VESAバス、I2Cバス
5: ネットワーク カード デバイス ドライバー
データ構造: ソケットバッファ構造、ネットワークソケット構造
バッファ管理と同時実行制御
ISAネットワークドライバー
ATM非同期転送モード
ネットワークスループット
次の学習: Linux カーネル ソケット通信プロセスのソース コード分析の分析
6: カーネルコンポーネントのトピック 1: 時間管理
世界時サブシステム
高フレームレートタイマー
動的クロックデータ構造
タイマーシステムコール
2: ページとブロックのキャッシュ
ページキャッシュ構造の操作と実装
ブロックキャッシュの構造と実装
アドレス空間のデータ構造とページ ツリー
3: データの同期
番号システム同期メカニズム
inode の同期とクロストーク
強制ライトバックと完全同期
4: カーネルアクティビティ
割り込みタイプ/ハードウェア IRQ
irq_desc データ構造
IRQ とソフト割り込みの処理
タスクレットの作成/登録/実行
待機キューと完了量
7: ファイル システムのトピック
1: 仮想ファイル システム VFS
ファイルシステムの種類とファイルモデルの調査
データ構造: スーパーブロック(super_block)、マウントディスクリプタ(マウント構造)、インデックスノード(inode構造)、ディレクトリエントリ(dentry構造)
ファイル システム コール: ファイルのオープン/クローズ、ファイルの作成/削除、ファイルの読み取り/書き込み、ファイル ライトバックの技術原則/ソケットの実装
ファイルシステムのマウント: システムコールのマウント処理プロセス、バインドマウント/名前空間のマウント、rootfs ファイルシステムのマウント/登録
永続的なファイル システムなし: proc ファイル システム (proc データ構造、proc データ項目のロード、データの読み取りと書き込みの実装)、単純なファイル システム (シーケンシャル ファイル、スケジューリング ファイル システム、疑似ファイル システム)
2: C ドライブ ファイル システム
Ext2 ファイルシステム: 化学構造とデータ構造、ファイルシステムの作成、ファイルシステムの操作
Ext3 ファイル システム
Ext4 ファイル システム
ログJBD2
3: ユーザー空間ファイル システム
ヒューズ アーキテクチャの設計と原理
コア 5 キューを融合する
ユーザー空間のプロセスと実装計画を融合する
8: カーネル プロジェクトの実践的なトピック
1-Linuxカーネルのコンパイルとシステム置き換えの実装方法
2-プロセス間通信・管理(許可・優先度)実装計画
3-NIC ネットワーク カード ドライバーの実装
4-mmap システム コール/マッピング ユーザー ビデオ メモリの実装
5-Linux メモリ パラメータ システムの実装
6-デバッグとパフォーマンスの最適化 (debugfs/printk/ftrace)
7-スラブ ブロック アロケータのビデオ メモリ割り当て実装メカニズム
8-タスクレット/フロントライン スレッドとタイマーの実装
9-Linux カーネル proc ファイル システムの実装
10-Linux カーネル ファイアウォール iptables の実装
以上が非 MMU サポートは、Linux カーネルの uClinux ポートによって提供されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。