Top

はじめに

本書をお手に取っていただきありがとうございます。

本書はカーネルにシステムコールを実装してカーネルとアプリをバイナリレベルで分離してみる本です。

カーネル・アプリの分離によりできあがる構成は図1の通りです。

本書まででできあがるOSのアーキテクチャ図

図1: 本書まででできあがるOSのアーキテクチャ図

本書の構成

本書は以下の2章構成です。

第1章で、カーネルにシステムコールを実装し、カーネルは初期化処理を終えると別バイナリとしてつくったアプリを呼び出すようにします。そして、呼び出されたアプリはシステムコールでカーネルの機能を呼び出すようにします。

第2章では、アプリから別バイナリのアプリを呼び出す仕組みを、フォアグラウンド実行とバックグラウンド実行のそれぞれで実装します。そのため、第1章で実装したものを、ファイルシステムやスケジューラとの組み合わせで使えるようにしていきます。

開発環境・動作確認環境

筆者が開発や動作確認を行っている環境を以下に記載します。

言語としては、C言語と一部アセンブラを使う程度なので、一般的なLinux環境であれば問題ないと思います。

本書のPDF版/HTML版やソースコードの公開場所について

これまでの当サークルの同人誌同様、本書もPDF版/HTML版は以下のページで無料で公開しています。

サンプルコードは以下のGitHubリポジトリで公開しています。

サンプルコードのリポジトリ内はディレクトリで分かれています。各ディレクトリが以降の各項で作るものです。各項の冒頭で「この項のサンプルディレクトリはXXです。」と紹介しますので適宜参照してみてください。

なお、本書開始時点のソースコードを「A00_kern_app_base」ディレクトリに置いていますので、本書で行う作業の差分を見たい場合は「diff -r」等でディレクトリ差分をとってみてください。

また、これまで通り、本書の表紙も自作OSの実行写真です。表紙のサンプルは「A01_cover」に置いていますので興味があれば見てみてください。私の手書きフォントや何度か発表していた「縦書き日本語シェル」のソースコードが入っています。


Top