12 ステップで作る組込み OS 自作入門

ジュウニ ステップ デ ツクル クミコミ オーエス ジサク ニュウモン

12 ステップで作る組込み OS 自作入門の表紙
ハードウェア
著者:
坂井弘亮(サカイ, ヒロアキ)
出版社:
カットシステム
出版日:
2010年06月
ISBN:
9784877832391
在庫:
在庫あり
4.83(6 件 / 楽天ブックス)
初級者向け
OS 自作組込みシステムプログラミングコンピュータアーキテクチャソフトウェア開発レジスターカーネル開発デバッグハードウェアインタフェースシステムプログラミング

なぜ注目されているか

言及数
102位
総合257位 ↓ 2 ランクダウン 言及 34 件・うち記事 25 件を掲載
04720222023202420252026

書籍紹介

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 件)

この本に興味がある方におすすめ

関連する本

坂井弘亮 の他の書籍

関連記事

関連用語

共有: