C言語で0から作るOSを開発について説明していきます。このシリーズではカーネルの開発について説明しています。
今回は実際にカーネルをC言語で作成していきます。
最初にコンピューターの歴史、OSの歴史を振り返ります。そして、これまで開発されてきたOSの機能について見ていき、自分のOSのコンセプトを決めていきます。コンセプトが決まったら、『0から作るOS開発 Vol.0 OSを作る環境の準備と設定』でインストールしたコンパイラー、Makeでカーネルをビルドする手順について見てきます。最後に簡単なビデオドライバーを作成して、画面にデバッグ情報を出力できるようにします。
【注意】本書ではコンパイラー、リンカー、Makefileの最低限な説明に留めています。より詳細な使用方法については別途各ツールのinfoコマンドを参照して頂くなどをして学習する必要があります。
[第4版 改訂]
GCCでコンパイルエラーが発生する場合に.bash_profileにexport LANG=Cを追加する手順を追加しました。
[目次]
そしてカーネルへ
前回までの内容
そしてカーネルへ
コンピュータの歴史
古代の計算機
最初のアナログコンピュータ
最初のデジタルコンピュータ
最初の近代的なコンピュータと最初のプログラム
最初の現代的なコンピューター
OSの歴史
最初のオペレーティングシステム
IBMのOS
Unix
ホームコンピューターで動くOS
Windowsの登場
Windows2.0の登場
Windows3.0の登場
その後のWindows
まとめ
オペレーティングシステムコンセプト
現代の主なオペレーティングシステム
OSのタイプ
カーネルのモデル
カーネルの機能
物理メモリー管理
仮想メモリー管理
ファイルシステム
スケジューリング
プロセス同期
プロセス間通信
デバイスのドライブ
自分のカーネルのコンセプト
カーネルことはじめ
クロスコンパイラーのパッケージ内容
パスの設定(パスが通っていない場合)
.bash_profileの編集
リンカーの設定
セクション
リンカースクリプト
カーネルのコンパイルオプション
コンパイラーのオプション
リンカーのオプション
カーネルをコンパイルする
Make
Makeの基本
Makefileの書式
Makeのマクロ
カーネルをMakeする
カーネルの開発環境のフォルダー構成
開発環境のMakefile
マクロ定義
ブートローダーとカーネルローダーのMakeコマンド
カーネルのMakeコマンド
ドライバとカーネルをリンキングするコマンド
Makeでターゲットを指定して実行する
オブジェクトファイルの消去コマンド
OSのインストール
開発環境のMakefileまとめ
kernelフォルダーとdriverフォルダーのMakefile
kernelフォルダのMakefile
実際にカーネルをコンパイルする
BSSセクションを初期化する
メモリー書き込み関数を作る
メモリー書き込み関数を使ってBSSセクションを初期化する
カーネルのデバッグ
シンプルビデオドライバーの作成
VGA(Video Graphics Array)
MDA、CGA、EGA
MDA(Monochrome Display Adapter)
CGA(Color Graphics Adapter)
EGA(Enhanced Graphics Adapter)
VGA仕様の概要
ビデオバッファー
ビデオDAC(Digital/Analog Converter)
CRT(Cathode Ray Tube)コントローラー
シーケンサー
グラフィックコントローラー
アトリビュートコントローラー
ビデオモード
APA(All Points Addressable)グラフィックモード
テキストモード
BIOSのビデオモード
VGAのVRAMアドレス
ディスプレイに文字を表示させてみる
ディスプレイに文字列を表示する
アトリビュートの設定
文字の表示まとめ
今回は実際にカーネルをC言語で作成していきます。
最初にコンピューターの歴史、OSの歴史を振り返ります。そして、これまで開発されてきたOSの機能について見ていき、自分のOSのコンセプトを決めていきます。コンセプトが決まったら、『0から作るOS開発 Vol.0 OSを作る環境の準備と設定』でインストールしたコンパイラー、Makeでカーネルをビルドする手順について見てきます。最後に簡単なビデオドライバーを作成して、画面にデバッグ情報を出力できるようにします。
【注意】本書ではコンパイラー、リンカー、Makefileの最低限な説明に留めています。より詳細な使用方法については別途各ツールのinfoコマンドを参照して頂くなどをして学習する必要があります。
[第4版 改訂]
GCCでコンパイルエラーが発生する場合に.bash_profileにexport LANG=Cを追加する手順を追加しました。
[目次]
そしてカーネルへ
前回までの内容
そしてカーネルへ
コンピュータの歴史
古代の計算機
最初のアナログコンピュータ
最初のデジタルコンピュータ
最初の近代的なコンピュータと最初のプログラム
最初の現代的なコンピューター
OSの歴史
最初のオペレーティングシステム
IBMのOS
Unix
ホームコンピューターで動くOS
Windowsの登場
Windows2.0の登場
Windows3.0の登場
その後のWindows
まとめ
オペレーティングシステムコンセプト
現代の主なオペレーティングシステム
OSのタイプ
カーネルのモデル
カーネルの機能
物理メモリー管理
仮想メモリー管理
ファイルシステム
スケジューリング
プロセス同期
プロセス間通信
デバイスのドライブ
自分のカーネルのコンセプト
カーネルことはじめ
クロスコンパイラーのパッケージ内容
パスの設定(パスが通っていない場合)
.bash_profileの編集
リンカーの設定
セクション
リンカースクリプト
カーネルのコンパイルオプション
コンパイラーのオプション
リンカーのオプション
カーネルをコンパイルする
Make
Makeの基本
Makefileの書式
Makeのマクロ
カーネルをMakeする
カーネルの開発環境のフォルダー構成
開発環境のMakefile
マクロ定義
ブートローダーとカーネルローダーのMakeコマンド
カーネルのMakeコマンド
ドライバとカーネルをリンキングするコマンド
Makeでターゲットを指定して実行する
オブジェクトファイルの消去コマンド
OSのインストール
開発環境のMakefileまとめ
kernelフォルダーとdriverフォルダーのMakefile
kernelフォルダのMakefile
実際にカーネルをコンパイルする
BSSセクションを初期化する
メモリー書き込み関数を作る
メモリー書き込み関数を使ってBSSセクションを初期化する
カーネルのデバッグ
シンプルビデオドライバーの作成
VGA(Video Graphics Array)
MDA、CGA、EGA
MDA(Monochrome Display Adapter)
CGA(Color Graphics Adapter)
EGA(Enhanced Graphics Adapter)
VGA仕様の概要
ビデオバッファー
ビデオDAC(Digital/Analog Converter)
CRT(Cathode Ray Tube)コントローラー
シーケンサー
グラフィックコントローラー
アトリビュートコントローラー
ビデオモード
APA(All Points Addressable)グラフィックモード
テキストモード
BIOSのビデオモード
VGAのVRAMアドレス
ディスプレイに文字を表示させてみる
ディスプレイに文字列を表示する
アトリビュートの設定
文字の表示まとめ