元東大教員から学ぶLinuxカーネル

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity/Vyper,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

Linuxカーネルとは,C言語で開発されたオープンソースのOSです.

Linuxカーネルは主に以下のコンピュータで広く利用されています.

事前に必要な基礎知識

ChishiroのC言語で紹介している事前に必要な基礎知識を一通り習得しているとします.

C言語
ChishiroのC言語

こういった私から学べます. Windows,MacOS,Linux/UNIX,FreeBSD等のOS開発に利用されるプログラミング言語「C言語」に関する記事を紹介します. C言語を習得してコンピュータ ...

続きを見る

LinuxカーネルはC言語で書かれています.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!

友だち追加

参考資料

Linux Kernel Programming

Linux Kernel Programmingは,2021年3月19日に発売したLinuxカーネルの本です.

対応しているLinuxカーネルのバージョンは5.4(LTS)です.

Part 1とPart 2があり,Linuxカーネルの中身が深く理解できます.(その分,難しいです.)



動かしながらゼロから学ぶ Linuxカーネルの教科書

動かしながらゼロから学ぶ Linuxカーネルの教科書は,2020年9月10日に発売した本です.

Linuxカーネルの基礎がわかります.


超例解Linuxカーネルプログラミング

超例解Linuxカーネルプログラミングは,2019年7月18日に発売した本です.

Linuxカーネルの修正方法がわかります.

対応しているLinuxカーネルのバージョンは4.16~5.0です.


Linuxデバイスドライバの開発

Linuxデバイスドライバの開発は,2021年8月26日に発売した本です.

Linuxのデバイスドライバの開発やデバッグ方法がわかります.


OSやLinuxカーネルのWeb資料

ハードウェアのマニュアル

Linuxカーネルを理解するためには,ハードウェアのマニュアルを参照する必要があります.

あなたのPCによく搭載されているIntel CPUのマニュアルと,iPhone/Androidのスマートフォンに搭載されているARM CPUのマニュアルを紹介します.

Intel CPUのマニュアル

Intel CPUのレジスタ長が32ビット(x86)と64ビット(x64)の命令セットアーキテクチャのマニュアルです.

ARM CPUのマニュアル

ARM CPUのレジスタ長が32ビット(ARM)と64ビット(ARM64/AARCH64)の命令セットアーキテクチャ(ARMとARM64(AARCH64))のマニュアルです.

Linuxカーネル

第1回Linuxカーネル
【第1回】元東大教員から学ぶLinuxカーネル「Linuxカーネルとは」

こういった私から学べます. Linuxカーネルの記事一覧はこちらからどうぞ. 目次1 Linuxカーネルとは2 Linuxの歴史3 Linuxのオープンソースモデル4 Linuxカーネルのリリースサイ ...

続きを見る

第2回Linuxカーネル
【第2回】元東大教員から学ぶLinuxカーネル「開発ツールとカーネルプログラミング vs. ユーザプログラミング」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回は,Linuxカーネルの開発ツールとカーネル vs. ユーザプログラミングを ...

続きを見る

第3回 Linuxカーネル
【第3回】元東大教員から学ぶLinuxカーネル「アイソレーションとシステムコール」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは,「アイソレーションとシステムコール」です. アイソレーションとシ ...

続きを見る

第4回 Linuxカーネル
【第4回】元東大教員から学ぶLinuxカーネル「カーネルのデータ構造」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは,「カーネルのデータ構造」です. 以下のデータ構造を理解しているこ ...

続きを見る

第5回Linuxカーネル
【第5回】元東大教員から学ぶLinuxカーネル「プロセス管理」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはプロセス管理です. プロセス管理により,プロセスのライフサイクルが ...

続きを見る

第6回Linuxカーネル
【第6回】元東大教員から学ぶLinuxカーネル「プロセススケジューリング」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはプロセススケジューリングです. Linuxカーネルがどのようにタス ...

続きを見る

第7回Linuxカーネル
【第7回】元東大教員から学ぶLinuxカーネル「割り込み」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは割り込みです. 割り込みを理解すると,ハードウェアとOSがどのよう ...

続きを見る

第8回Linuxカーネル
【第8回】元東大教員から学ぶLinuxカーネル「同期」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは同期です. 同期を理解すると,カーネルの本質的な課題が深く理解でき ...

続きを見る

第9回Linuxカーネル
【第9回】元東大教員から学ぶLinuxカーネル「タイマと時間管理」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはタイマと時間管理です. Linuxカーネルの時間の概念がわかります ...

続きを見る

第10回Linuxカーネル
【第10回】元東大教員から学ぶLinuxカーネル「メモリ管理」

こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはメモリ管理です. メモリ管理を理解することで,カーネルレベルのメモ ...

続きを見る

C言語でLinuxカーネルのカーネルレベルプログラミング

C言語 Linuxカーネル ビルド
【C言語】Linuxカーネルのビルド方法と新しいシステムコールの実装方法

こういった悩みにお答えします. こういった私から学べます. 目次1 Linuxカーネルのビルド方法1.1 GRUBを編集して起動するLinuxカーネルを指定1.2 Linuxカーネルのビルド環境の構築 ...

続きを見る

C言語 Linux カーネルモジュール
【C言語】Linuxのカーネルモジュールで「Hello World!」を表示する方法

こういった悩みにお答えします. こういった私から学べます. 目次1 【C言語】Linuxのカーネルモジュール2 カーネルモジュールで「Hello World!」を表示2.1 カーネルモジュールのビルド ...

続きを見る

C言語 Linuxカーネル デバッグ
【C言語】Linuxカーネルのデバッグ方法【printk,BUG_ON,WARN_ON,QEMU,GDB】

こういった悩みにお答えします. こういった私から学べます. 本記事は以下の記事を理解していることを前提とします. 目次1 【C言語】Linuxカーネルのデバッグ方法2 printk関数2.1 prin ...

続きを見る

C言語 Linuxカーネル PREEMPT_RT
【C言語】LinuxカーネルのPREEMPT_RTパッチでリアルタイムプログラミング

こういった悩みにお答えします. こういった私から学べます. 目次1 【C言語】LinuxカーネルのPREEMPT_RTパッチでリアルタイムプログラミング2 LinuxカーネルのPREEMPT_RTパッ ...

続きを見る