12 ステップで作る組込み OS 自作入門
ジュウニ ステップ デ ツクル クミコミ オーエス ジサク ニュウモン
- 著者:
- 坂井弘亮(サカイ, ヒロアキ)
- 出版社:
- カットシステム
- 出版日:
- 2010年06月
- ISBN:
- 9784877832391
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
1 ステップずつ、実際に動かしながらプログラムを発展させていく方式で、無理なく学べる。OS やハードウェアに詳しくない方にも理解できるように、十分な説明を提供。
技書の森解説
『12 ステップで作る組込み OS 自作入門』 (坂井 弘亮 著、カットシステム、2010 年 6 月刊) は、何もないゼロの状態から、実際に動作する組込み OS を 12 回のステップに分けて自作していく書籍です。OS を起動するためのブート・ローダーまで自分で作るのが特徴で、版元は、既存の OS を入手して動かす本でも、動いている OS の上でプログラムを書く本でもなく、OS の自作そのものに取り組む本だと説明しています。目次には H8/3069F の割込み処理を扱う節があり、このマイコンを動かしながら進む構成です。版元の紹介文では、1 ステップずつ実際に動かしながらプログラムを発展させていく方式で、OS やハードウェアに詳しくない人にも理解できるよう十分な説明を用意したとされています。
ブート・ローダーと OS 本体の 2 部、12 ステップの構成
全体は 2 部に分かれます。第 1 部のブート・ローダーの作成は、1st ステップの開発環境の作成と Hello World に始まり、2nd ステップでメモリマップド I/O と内蔵シリアル・コントローラーを使ったシリアル通信、3rd ステップで静的変数の読み書きとメモリ構成、4th ステップでシリアル経由のファイル転送と XMODEM の実装、5th ステップで ELF フォーマットの展開を扱い、6th ステップでロードしたプログラムによるもう一度の Hello World にたどり着きます。途中のステップには、4th ステップのアセンブラ・プログラミング、5th ステップの論理回路、6th ステップの CPU の動作原理といった基礎の節も置かれています。第 2 部の OS の作成は、7th ステップの割込み処理、8th ステップのスレッドの実装、9th ステップの優先度スケジューリング、10th ステップの OS のメモリ管理、11th ステップのタスク間通信と関数の再入と排他と進み、12th ステップの外部割込みとコマンド処理の実装で締めくくられます。ほとんどのステップに「プログラムの実行」の節があり、作ったものをその都度動かして確かめる流れが全体を貫いていると読めます。
ブート・ローダーから割込みとスレッドへ、組込み OS の仕組みを分解して学ぶ
マイコンはリセットされると、ROM の決まった番地から命令を実行し始めます。PC では起動の段取りの多くが既存のソフトウェアに隠されていますが、組込みの世界ではこの段取りを自分で組まなければなりません。一般に、初期値を持つ静的変数の値は ROM に置かれ、起動時に RAM へ写さないと書き換えができません。3rd ステップの題が静的変数の書き換えの対応になっているのは、プログラムの メモリ上の配置 を意識しなければ動かないという、この事情に向き合うためと読めます。そのうえで、シリアル通信で受け取ったプログラムを ELF 形式のプログラム・ヘッダーに従ってメモリへ展開できるようになれば、ROM を書き換えずに RAM 上のプログラムを何度でも試せるようになります。第 2 部の順序にも意味があります。複数の処理を切り替えて動かすには、割込みで実行を中断し、レジスターなどの状態を保存して別の処理へ移る仕組みが土台になるため、割込みの実装が スレッドという実行の単位 の実装に先立ちます。さらに、同じ関数が複数のスレッドから呼ばれると共有するデータが壊れるおそれがあり、11th ステップで関数の再入と排他を扱ったうえでメッセージ通信を実装する並びは、この問題への答えを段階的に示す構成と読めます。
中学生から新人まで、組込み OS 自作に向いている読者と前提知識
版元は読んでほしい読者として、OS を作ってみたい中学生や高校生、パソコン部の生徒、OS を勉強したい大学生や入社したての新人、OS に興味のあるアマチュアプログラマを挙げ、実務についているプロも歓迎するとしています。OS の自作では一般に C 言語とわずかなアセンブラを扱うため、C の文法、とくにポインターと構造体に慣れていると読み進めやすくなります。2010 年刊の本で、開発環境の作成は刊行時のツールを前提にしています。版元ページでは、第 1 章の環境構築で問題が出た場合の参照先として著者のサポートページと、開発環境を構築済みの VM イメージが案内されています。
一方で、目次にファイルシステムやネットワークを扱うステップは無く、汎用 OS の内部構造を広く学びたい人や、業務で使う特定のリアルタイム OS の使い方を覚えたい人には、目的が合いません。ほかの OS 本や 低レイヤーの学習 を扱う本と比べながら選びたい場合は、OS と低レイヤー本のガイド で分野ごとの入口を確かめておくと回り道を減らせます。裏返せば、OS を使う側から作る側へ一歩踏み込みたい人や、組込み開発でレジスターや割込みを触る前に全体像を自分の手でつかみたい人にとって、起動の段取りから複数スレッドの協調までを 1 つの小さな OS として組み上げる本書は、仕組みを腑に落とすための確かな足場になる一冊です。
言及した記事 (25 件)
【最新技術に振り回されない】 低レイヤーに強くなるための鉄板コンテンツ集
♡ 1078CPU, コンパイラ, OS, システムプログラミング, 低レイヤアセンブラへの道 coding(42)
♡ 370coding, アセンブラ, 16進数, 小川メソッド, CountdownCalendar2022人生で影響を受けた本100冊。
♡ 178LaTeX, 英語, コンパイラ, 安全, 小川メソッドプログラマの「プログラムが書ける」思い込みは強みだ。3つの理由。仮説(168)統計と確率(17) , OSEK(79)
♡ 86プログラマ, OSEK, 強み, 思い込み, DoCAPぼくのかんがえた さいきょうの新人研修
♡ 44新人研修, 新人教育, 新人プログラマ応援自作OS勉強プロジェクト - 実際に自作OSを勉強する上で気をつけたこと -
♡ 16自作OS12ステップで作る組込みOS自作入門 環境構築 前編(2022年8月)
♡ 12自作OS, 組み込みOSDockerでH8/3069Fビルド環境構築
♡ 10Docker, H8マイコン「組込みOS自作入門」Dockerを利用した開発環境構築
♡ 8環境構築, Docker, 組込みOS技術士(5)設計側としての情報工学・電気・電子、設計対象としての全分野、Ethernet(95)
♡ 8設計, ethernet, 電気, 情報工学, 技術士
この本に興味がある方におすすめ
関連する本
坂井弘亮 の他の書籍
関連記事
技術書の速読術 - 必要な情報を素早く見つける読み方
技術書の速読は「文字を速く読む」ことではなく「読まなくていい部分を見極めて飛ばす」こと。目的別の読み方と速読の 5 ステップを紹介します。
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
写経を超える - 技術書のコードを自分のプロジェクトに応用する方法
技術書のサンプルコードを写経するだけでは実力は伸びません。書籍のコードを自分のプロジェクトに応用し、実務で使える力に変える 5 つのステップを解説します。