本記事の信頼性
- リアルタイムシステムの研究歴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,ARM).
- 東大教員の時に,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とイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
Linuxカーネルとは,C言語で開発されたオープンソースのOSです.
Linuxカーネルは主に以下のコンピュータで広く利用されています.
Linuxカーネルを学びたいあなたは,今すぐ本記事をブックマークしましょう!
目次
事前に必要な基礎知識
ChishiroのC言語で紹介している事前に必要な基礎知識を一通り習得しているとします.
「ちょっとC言語の独学は難しいな...」と思うあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社を読みましょう.
本記事ではLinuxカーネルのバージョン5.15,ディストリビューションは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)のマニュアルです.