{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/4877832394","result":{"data":{"markdownRemark":{"id":"02be5363-4393-5feb-ab23-4784d4cce0a3","html":"<p>『12ステップで作る組込みOS自作入門』を読みながら、組み込み OS「KOZOS」を実装してみたので、感想をまとめます。</p>\n<h2 id=\"書籍『12ステップで作る組込みos自作入門』とは\" style=\"position:relative;\"><a href=\"#%E6%9B%B8%E7%B1%8D%E3%80%8E12%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E4%BD%9C%E3%82%8B%E7%B5%84%E8%BE%BC%E3%81%BFos%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%E3%80%8F%E3%81%A8%E3%81%AF\" aria-label=\"書籍『12ステップで作る組込みos自作入門』とは permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>書籍『<a href=\"https://amzn.to/3G1a6uC\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">12ステップで作る組込みOS自作入門</a>』とは</h2>\n<p><a href=\"https://www.amazon.co.jp/dp/4877832394?&linkCode=li3&tag=oshimayuki0d-22&linkId=9717f8013f91f660f26d643bb45a2c7a&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4877832394&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li3&amp;o=9&amp;a=4877832394\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>『12ステップで作る組込みOS自作入門』は、タイトル通り、組み込み OS を自作してみる本です。</p>\n<p><a href=\"https://akizukidenshi.com/catalog/g/gK-01271/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Ｈ８／３０６９Ｆネット対応マイコンＬＡＮボード</a> を使って、C 言語で組み込み OS を自作します。</p>\n<p>以下が公式のサポートページになります。</p>\n<p><a href=\"http://kozos.jp/books/makeos/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://kozos.jp/books/makeos/</a></p>\n<h2 id=\"実装する内容\" style=\"position:relative;\"><a href=\"#%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E5%86%85%E5%AE%B9\" aria-label=\"実装する内容 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>実装する内容</h2>\n<p>この本で実装するのは、</p>\n<ul>\n<li>ブート・ローダ</li>\n<li>リンカや ELF ローダ</li>\n<li>シリアル・デバイス・ドライバ</li>\n<li>スレッドとそのスケジューリングや割り込み</li>\n<li>システム・コール</li>\n<li>メモリ管理</li>\n<li>タスク間通信</li>\n</ul>\n<p>などになります。</p>\n<p>入出力はシリアル通信のみなので、非常にコンパクトな OS となっています。</p>\n<h2 id=\"感想\" style=\"position:relative;\"><a href=\"#%E6%84%9F%E6%83%B3\" aria-label=\"感想 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>感想</h2>\n<p>この本の OS (KOZOS) の実装をしてみた感想としては、何もよりも、<strong>たった 3000 行に満たないコードで OS を作れる</strong>ことに感動しました。</p>\n<p>実装期間としても、<strong>仕事の片手間に 2 週間程度でできてしまい、集中して取り組めば 1 週間もかからないかもしれません</strong>。</p>\n<p>OS 自作と言えば、最近は『<a href=\"https://amzn.to/3PXVwsq\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ゼロからのOS自作入門</a>』(通称、みかん本) が一番有名だと思います。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4839975868?&linkCode=li1&tag=oshimayuki0d-22&linkId=ef93fe5db576326b59664f8b41334acf&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4839975868&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4839975868\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>私はこちらの本の OS の実装もやってみていますが、こちらの実装はかなり時間がかかり、そのボリュームの違いがとても大きいと思いました。\n(もちろんその分得られる知識も豊富になります)</p>\n<p>『12ステップで作る組込みOS自作入門』は、それほどコンパクトに実装できる内容にも関わらず、</p>\n<ul>\n<li>ブート・ローダ</li>\n<li>リンカや ELF ローダ</li>\n<li>シリアル・デバイス・ドライバ</li>\n<li>スレッドとそのスケジューリングや割り込み</li>\n<li>システム・コール</li>\n<li>メモリ管理</li>\n<li>タスク間通信</li>\n</ul>\n<p>など、<strong>OS の重要な要素をしっかり分かりやすく学ぶことができ、とても素晴らしい本だと思いました</strong>。</p>\n<p>なお、一部組み込み OS に特化した解説・実装ではありますが、汎用 OS にも通じる話が多いです。</p>\n<h2 id=\"大変だったところ\" style=\"position:relative;\"><a href=\"#%E5%A4%A7%E5%A4%89%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D\" aria-label=\"大変だったところ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>大変だったところ</h2>\n<p>実装する中で大変だったのは、何より最初の開発環境の構築と Hello World です。</p>\n<p>マイコンにプログラムを書き込んで実行する必要があるわけですが、慣れていない自分にはうまくいかない原因を突き止めるのが大変で、ここはかなり苦戦しました。\n(電源電圧が違うという、とんでもない間違いでうまくいかず、マイコンは 1 台壊しました…)</p>\n<p>開発環境の構築については、『ゼロからのOS自作入門』のほうがだいぶやりやすいと思いました。</p>\n<p>とはいえ、逆に組み込みソフトウェアの開発やマイコンに興味があったりする方には、開発環境構築で苦戦するのも良い勉強かもしれません。</p>\n<h2 id=\"今後やってみたいと思ったこと\" style=\"position:relative;\"><a href=\"#%E4%BB%8A%E5%BE%8C%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8\" aria-label=\"今後やってみたいと思ったこと permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>今後やってみたいと思ったこと</h2>\n<p>さて、私は最近は低レイヤの知識を拡充しようと、最近は CPU を (エミュレータで) 作ったり、コンパイラやインタプリタを作ったり、OS を作ったりしてきています。</p>\n<p>OS については『ゼロからのOS自作入門』と『12ステップで作る組込みOS自作入門』の 2 つを写経しながら実装したことで、だいぶ理解が進んできました。</p>\n<p>そろそろ自分なりの OS 作りに挑戦したいなと思ったりしています。\n特に Unix 系の OS に興味があるので、勉強して自作してみたいです。\n(MINIX のようなものを作ってみたいです)</p>\n<h2 id=\"まとめ\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"まとめ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まとめ</h2>\n<p>少し話がそれましたが、『12ステップで作る組込みOS自作入門』は、「OS 自作というものに挑戦してみたいけど、できるだけコンパクトに作れるのがいい」という方にはとてもおすすめです。</p>\n<p>マイコンを買って Hello World するまでを心が折れずに頑張れそうな方には、是非おすすめしたい一冊でした。</p>\n<p><a href=\"https://www.amazon.co.jp/dp/4877832394?&linkCode=li1&tag=oshimayuki0d-22&linkId=753bd8698dc305db0931da3db521bb25&language=ja_JP&ref_=as_li_ss_il\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4877832394&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li1&amp;o=9&amp;a=4877832394\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>","fields":{"slug":"/posts/4877832394","tagSlugs":["/tag/embedded/","/tag/os/"],"autoRecommendPosts":["4873117127-implementation","linux-learning-roadmap","4839975868","cpu-books"]},"frontmatter":{"date":"2022-12-29T14:37:33.895Z","description":"『12ステップで作る組込みOS自作入門』を読みながら、組み込み OS「KOZOS」を実装してみたので、感想をまとめます。","tags":["embedded","os"],"title":"『12ステップで作る組込みOS自作入門』を読みながら組み込み OS を実装した感想","socialImage":null,"recommendPosts":null}}},"pageContext":{"slug":"/posts/4877832394"}},"staticQueryHashes":["251939775","3942705351","401334301"]}