学習ロードマップ

組み込み・低レイヤ / CPU と OS

コンピュータがなぜ動くのかから、 自作 CPU、 RISC-V で学ぶ OS、 Linux カーネル、 組み込みシステム設計まで。 ソフトウェアの「下」 を理解するための読書順序。

コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識 創って学ぶCPUの基本 : 3bitプロセッサを作りながらゼロから仕組みを理解する Linuxカーネルプログラミング 第2版 詳解 組み込みシステム(第2版) : 高性能、高品質なソフトウェアを実現するデザインパターン
SCROLL TO BEGIN

このロードマップが扱うもの

CPU OS

このロードマップの全体像

高レイヤの開発をしていても、 性能・メモリ・並行性の壁にぶつかると、 結局 CPU と OS の理解が効いてきます。 低レイヤは一度地図を持つと、 上のレイヤの判断が一段速くなります。

学習ステップ

1. 入口: コンピュータが動く原理を、 ハードとソフトの両面から俯瞰する。 2. 中核: 自作 CPU と RISC-V/OS で、 命令とカーネルの動きを手を動かして理解する。 3. 発展: Linux カーネルと組み込みシステム設計で、 実機・実務の制約に踏み込む。

「なんとなく速い/遅い」 を、 根拠を持って語れるところまで引き上げます。

ロードマップ

4 つのステップで読み進める

  1. 01
    ステップ 01 動く原理を俯瞰する
    コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識
  2. 02
    ステップ 02 CPU を自分で創る
    創って学ぶCPUの基本 : 3bitプロセッサを作りながらゼロから仕組みを理解する
  3. 03
    ステップ 03 カーネルに踏み込む
    Linuxカーネルプログラミング 第2版
  4. 04
    ステップ 04 組み込み設計の実務
    詳解 組み込みシステム(第2版) : 高性能、高品質なソフトウェアを実現するデザインパターン

第 1 章

動く原理を俯瞰する

  1. 動く原理を俯瞰する

    コンピュータがなぜ動くのか — ハードとソフトの基礎知識を一望する入口。

    コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識
    この章の 1 冊 コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識

    ハードウエアからネットワーク・セキュリティまでコンピュータの全体像を一冊で把握する

    この本で身につくこと
    • プロセサ・メモリ・入出力の基本構造と、それらがどう連携して命令を実行するかを説明できる
    • アセンブラ(CASL2)を通じて高水準言語の裏で起きていることをレジスタ・アドレスの粒度で理解できる
    • スタック・キュー・リスト・二分木といったデータ構造をアルゴリズムの選択と結びつけて考えられる
    • MySQLを用いたデータベース設計の基本(テーブル作成・クエリ・正規化)を実行できる

    想定読者: プログラマやSEを目指す入門者、基礎を体系的に押さえ直したい文系エンジニア、高水準言語しか触れてきていない中級者

    本の詳細を見る →
  2. CPU を自分で創る

    3bit プロセッサを作りながら、 CPU の仕組みをゼロから理解する。

    創って学ぶCPUの基本 : 3bitプロセッサを作りながらゼロから仕組みを理解する
    この章の 1 冊 創って学ぶCPUの基本 : 3bitプロセッサを作りながらゼロから仕組みを理解する

    3ビットCPUを自作しながらコンピュータの動作原理をゼロから理解する

    この本で身につくこと
    • 2進数・順序回路・組み合わせ回路など論理回路の基本構造を説明できる
    • CPU・メモリ・I/Oの役割分担とそれぞれの動作原理を理解する
    • ALU・レジスタ・命令デコーダを含むCPUブロック図を読み解ける
    • コンセプト設計から回路図・基板図設計までのCPU設計フローを追体験できる

    想定読者: CPUの内部構造を体系的に学びたいソフトウェアエンジニア、およびハードウェア設計の基礎を掴みたい学生・趣味の電子工作者

    本の詳細を見る →
  3. カーネルに踏み込む

    Linux カーネルプログラミングで、 OS の内側を実際に触る。

    Linuxカーネルプログラミング 第2版
    この章の 1 冊 Linuxカーネルプログラミング 第2版

    Linuxカーネルの内部構造を理解しモジュールを実装する

    この本で身につくこと
    • ソースから6.x系LTSカーネルをビルドし、自分の環境に合わせた設定・インストールができる
    • カーネルモジュールを作成し、insmod/modprobeで動的にロード・アンロードするサイクルを実践できる
    • プロセスとスレッドのカーネル内部表現(タスク構造体・スタック・コンテキスト切り替え)を説明できる
    • スラブアロケータ等のカーネルメモリ割り当てAPIを目的に応じて選択し、リーク・断片化を避けた実装ができる

    想定読者: カーネルプログラミングに初挑戦するエンジニア。Cの基礎知識とLinuxコマンドライン操作の経験があれば、カーネルビルドからモジュール実装・同期機構まで体系的に習得できる。組み込みLinuxやシステムプログラミングに踏み込もうとする開発者に特に適する。

    本の詳細を見る →
  4. 組み込み設計の実務

    高性能・高品質な組み込みソフトウェアを実現するデザインの実践。

    詳解 組み込みシステム(第2版) : 高性能、高品質なソフトウェアを実現するデザインパターン
    この章の 1 冊 詳解 組み込みシステム(第2版) : 高性能、高品質なソフトウェアを実現するデザインパターン

    組み込みシステム開発の設計判断を原理・パターンから実務直結で習得する

    この本で身につくこと
    • ステートマシン・ウォッチドッグ・タスクスケジューリングといったアクティビティフロー管理の設計パターンを、要件から選択・実装できる
    • SPI / I2C / USB などシリアル通信プロトコルの特性差を理解し、FIFO・DMA・リングバッファを組み合わせた堅牢なペリフェラル通信を構築できる
    • コンパイラ最適化・ハードフォルト・スタックオーバーフローなど組み込み固有のトラブルを体系的にトラブルシュートできる
    • コード・メモリ・実行時間の最適化手法を用いてリソース制約下でのパフォーマンスを引き出せる

    想定読者: C/C++ の基礎はあり、マイコンや組み込み機器の実開発に携わっている、または携わろうとしているソフトウェアエンジニア。IoT デバイス・産業機器・車載など、リソース制約下のシステムを担当するチームのリードや中堅層

    本の詳細を見る →