本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Verse(UEFN), Assembler (x64,aarch64).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信や,Unreal Editor for Fortnite(UEFN)でゲーム開発に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でChatGPT/Geminiを訓練するプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
- UEFNで10本以上のゲームを開発し,フォートナイト上で公開(Fortnite,Fortnite.GG).
こういった私から学べます.
Linuxカーネルとは,C言語で開発されたオープンソースのOSです.
Linuxカーネルは主に以下のコンピュータで広く利用されています.
Linuxカーネルを学びたいあなたは,今すぐ本記事をブックマークしましょう!
目次
事前に必要な基礎知識
ChishiroのC言語で紹介している事前に必要な基礎知識を一通り習得しているとします.
-

-
ChishiroのC言語
こういった私から学べます. Windows,MacOS,Linux/UNIX,FreeBSD等のOS開発に利用されるプログラミング言語「C言語」に関する記事を紹介します. C言語を習得してコンピュータ ...
続きを見る
「ちょっとC言語の独学は難しいな...」と思うあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社を読みましょう.
-

-
元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社
こういった悩みにお答えします. こういった私が解説していきます. 私が大学の授業で初めてC言語を勉強した時は全然できませんでしたが,先生やTA,友人に相談しながら一生懸命C言語を勉強してできるようにな ...
続きを見る
本記事ではLinuxカーネルのバージョン5.15,ディストリビューションはUbuntu 22.04 LTSを利用します.
VMWareにLinux(Ubuntu 22.04 LTS)をインストールする方法を知りたいあなたはこちらからどうぞ.
-

-
VMwareでLinux(Ubuntu 22.04 LTS)のインストール【Sambaでファイル共有】
こういった悩みにお答えします. VMwareでLinux(Ubuntu 22.04 LTS)のインストール VMwareでLinux(Ubuntu 22.04 LTS)のインストールする方法を紹介しま ...
続きを見る
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資料
- Operating Systems: Three Easy Pieces
- Documentation Directory
- The Linux Kernel documentation
- Linux Weekly News
- Linux Inside
- Kernel Recipes
- Kernel Planet
- Elixir Cross Referencer
ハードウェアのマニュアル
Linuxカーネルを理解するためには,ハードウェアのマニュアルを参照する必要があります.
そこで,ハードウェアのアーキテクチャ共通のマニュアル,Intel/AMD64 CPUのマニュアル,iPhone/Androidのスマートフォンに搭載されているARM CPUのマニュアルを紹介します.
アーキテクチャ共通のマニュアル
アーキテクチャ共通のマニュアルは以下になります.
Intel/AMD64 CPUのマニュアル
Intel CPUのレジスタ長が32ビット(x86)と64ビット(x64)とAMD64のマニュアルです.
- Intel 64 and IA-32 Architectures Software Developer's Manual
- Intel 64 and IA-32 Architectures Optimization Reference Manual
- AMD64 Architecture Programmer’s Manual: Volumes 1-5
- 82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER (IOAPIC)
- IA-PC HPET (High Precision Event Timers) Specification
- The microarchitecture of Intel, AMD, and VIA CPUs
- Instruction tables
ARM CPUのマニュアル
ARM CPUのレジスタ長が32ビット(ARM)と64ビット(ARM64/AARCH64)のマニュアルです.
Linuxカーネル
-

-
【第1回】元東大教員から学ぶLinuxカーネル「Linuxカーネルとは」
こういった私から学べます. Linuxカーネルの記事一覧はこちらからどうぞ. Linuxカーネルとは Linuxカーネルとは,Operating System(OS)のカーネル(OSと中核となる部分) ...
続きを見る
-

-
【第2回】元東大教員から学ぶLinuxカーネル「開発ツールとカーネルプログラミング vs. ユーザプログラミング」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 開発ツールとカーネルプログラミング vs. ユーザプログラミング 今回は,Lin ...
続きを見る
-

-
【第3回】元東大教員から学ぶLinuxカーネル「アイソレーションとシステムコール」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは,「アイソレーションとシステムコール」です. アイソレーションとシ ...
続きを見る
-

-
【第4回】元東大教員から学ぶLinuxカーネル「カーネルのデータ構造」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは,「カーネルのデータ構造」です. 以下のデータ構造を理解しているこ ...
続きを見る
-

-
【第5回】元東大教員から学ぶLinuxカーネル「プロセス管理」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはプロセス管理です. プロセス管理により,プロセスのライフサイクルが ...
続きを見る
-

-
【第6回】元東大教員から学ぶLinuxカーネル「プロセススケジューリング」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはプロセススケジューリングです. Linuxカーネルがどのようにタス ...
続きを見る
-

-
【第7回】元東大教員から学ぶLinuxカーネル「割り込み」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは割り込みです. 割り込みを理解すると,ハードウェアとOSがどのよう ...
続きを見る
-

-
【第8回】元東大教員から学ぶLinuxカーネル「同期」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは同期です. 同期を理解すると,カーネルの本質的な課題が深く理解でき ...
続きを見る
-

-
【第9回】元東大教員から学ぶLinuxカーネル「タイマと時間管理」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはタイマと時間管理です. Linuxカーネルの時間の概念がわかります ...
続きを見る
-

-
【第10回】元東大教員から学ぶLinuxカーネル「メモリ管理」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはメモリ管理です. メモリ管理を理解することで,カーネルレベルのメモ ...
続きを見る
-

-
【第11回】元東大教員から学ぶLinuxカーネル「プロセスアドレス空間」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはプロセスアドレス空間です. プロセスアドレス空間を学ぶとページテー ...
続きを見る
-

-
【第12回】元東大教員から学ぶLinuxカーネル「仮想ファイルシステム」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマは仮想ファイルシステム(VFS:Virtual File Syste ...
続きを見る
-

-
【第13回】元東大教員から学ぶLinuxカーネル「ページキャッシュとページフォールト」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはページキャッシュとページフォールトです. 本記事を読むとページ,キ ...
続きを見る
-

-
【第14回】元東大教員から学ぶLinuxカーネル「ファイルシステムとクラッシュ整合性」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはファイルシステムとクラッシュ整合性です. 特に,Linuxカーネル ...
続きを見る
-

-
【第15回】元東大教員から学ぶLinuxカーネル「ブロックレイヤ」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはブロックレイヤです. ブロックレイヤでは,HDD/SDD等のデバイ ...
続きを見る
-

-
【第16回】元東大教員から学ぶLinuxカーネル「ソケット通信(TCP/UDP/IP)」
こういった私から学べます. 前回を読んでいない方はこちらからどうぞ. Linuxカーネルの記事一覧はこちらからどうぞ. 今回のテーマはソケット通信(TCP/UDP/IP)です. 本記事では,以下を習得 ...
続きを見る
C言語でLinuxカーネルのカーネルレベルプログラミング
-

-
【C言語】Linuxカーネルのビルド方法と新しいシステムコールの実装方法
こういった悩みにお答えします. こういった私から学べます. Linuxカーネルのビルド方法 Linuxカーネルのビルド方法を紹介します. LinuxカーネルをビルドするPC環境は以下になります. In ...
続きを見る
-

-
【C言語】Linuxのカーネルモジュールの作り方
こういった悩みにお答えします. こういった私から学べます. 【C言語】Linuxのカーネルモジュール Linuxのカーネルモジュールは,Linuxカーネルの機能を動的に追加できる仕組みのことです. カ ...
続きを見る
-

-
【C言語】Linuxカーネルの同期プログラミング
こういった悩みにお答えします. こういった私から学べます. 本記事では,以下のLinuxカーネル「同期」を理解していることを前提としています. 【C言語】Linuxカーネルの同期プログラミング C言語 ...
続きを見る
-

-
【C言語】Linuxカーネルのデバッグ方法【printk,BUG_ON,WARN_ON,QEMU,GDB】
こういった悩みにお答えします. こういった私から学べます. 本記事は以下の記事を理解していることを前提とします. 【C言語】Linuxカーネルのデバッグ方法 C言語でLinuxカーネルのデバッグ方法を ...
続きを見る
-

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























