作りながら学ぶOSカーネル 保護モードプログラミングの基本と実践
膨大な知識を必要とするOSカーネルの仕組みを順序よくカンタンに理解するには、まず自分でカーネルを作ってみるのが早道です。本書は、IBM-PC系で標準となっているIntel x86系CPUのカーネル作りで基本となる保護モード(Protect Mode)プログラミングについてやさしく解説したOSカーネルの入門書です。ブートストラップローダ、タスクスイッチング、割り込みハンドラ、メモリページングなどをオープンソースのアセンブラ「NASM」を利用して実際にプログラミングしていきます。また、実践への橋渡しとしてC言語でのプログラミング法やアセンブラとのリンクの仕方についても紹介しています。サンプルコードのダウンロードサービス付き。
【サポートはこちら】→https://www.shuwasystem.co.jp/support/7980html/2254.html
【サポートはこちら】→https://www.shuwasystem.co.jp/support/7980html/2254.html
Chapter_00 はじめる前に用意するもの
NASMのダウンロード
NASMのために環境変数設定
RawWriteのダウンロード
Chapter_01 ブートストラップ
OSなしにプログラムを実行させる
プログラムソース解説―
リアルモード(Real Mode)と保護モード(Protected Mode)
セグメントとオフセット
Chapter_02 カーネルをロードする
ブートローダとカーネルの作成
実行
ソースの解説
Chapter_03 保護モードへの移行
カーネルプログラムの作成
16ビット・リアルモード
保護モード
GDT
保護モードでのアドレス指定方法
16ビット・リアルモードから32ビット・保護モードに移行
Chapter_04 割り込みと例外
実行
IDTを作る
PICの初期化
タイマ割り込みハンドラを作る
キーボード割り込みハンドラを作る
例外(Exception)
Chapter_05 タスクスイッチング
実行
タスクスイッチングとTSS
CALL命令によるタスクスイッチング
Chapter_06 保護機能
CPUのチェックポイント
Limitチェック
Typeチェック
特権レベル
コールゲート
コードとデータの特権レベル関係
特権レベル変更時のスタックの変化
CALL命令が実行されたときのスタック
割り込み例外が発生したときのスタック
Chapter_07 ユーザモードのタスクスイッチング
ユーザモードとコールゲート
実行
ユーザモードセグメント設定
コールゲートの設定
ユーザモードへのタスクスイッチング
コールゲートを使ったシステムコール
多数のユーザモードタスクの実行
実行
スタック領域を使ったタスクスイッチング
Chapter_08 ページング
A20ゲート
A20ゲートの実験
ソースの説明
ページング機構の作成
ページング機構の実験
プログラム実行
ソース解説
Chapter_09 C言語でカーネルを作る
GCCのダウンロード
Cとアセンブラのリンク
C言語でカーネルを作る
ソースの解説
boot.asm
setup.asm
kernel.c
interrupt.asm
floppy.asm
floppy.c
process.c
user_program1.c
print_string.c
NASMのダウンロード
NASMのために環境変数設定
RawWriteのダウンロード
Chapter_01 ブートストラップ
OSなしにプログラムを実行させる
プログラムソース解説―
リアルモード(Real Mode)と保護モード(Protected Mode)
セグメントとオフセット
Chapter_02 カーネルをロードする
ブートローダとカーネルの作成
実行
ソースの解説
Chapter_03 保護モードへの移行
カーネルプログラムの作成
16ビット・リアルモード
保護モード
GDT
保護モードでのアドレス指定方法
16ビット・リアルモードから32ビット・保護モードに移行
Chapter_04 割り込みと例外
実行
IDTを作る
PICの初期化
タイマ割り込みハンドラを作る
キーボード割り込みハンドラを作る
例外(Exception)
Chapter_05 タスクスイッチング
実行
タスクスイッチングとTSS
CALL命令によるタスクスイッチング
Chapter_06 保護機能
CPUのチェックポイント
Limitチェック
Typeチェック
特権レベル
コールゲート
コードとデータの特権レベル関係
特権レベル変更時のスタックの変化
CALL命令が実行されたときのスタック
割り込み例外が発生したときのスタック
Chapter_07 ユーザモードのタスクスイッチング
ユーザモードとコールゲート
実行
ユーザモードセグメント設定
コールゲートの設定
ユーザモードへのタスクスイッチング
コールゲートを使ったシステムコール
多数のユーザモードタスクの実行
実行
スタック領域を使ったタスクスイッチング
Chapter_08 ページング
A20ゲート
A20ゲートの実験
ソースの説明
ページング機構の作成
ページング機構の実験
プログラム実行
ソース解説
Chapter_09 C言語でカーネルを作る
GCCのダウンロード
Cとアセンブラのリンク
C言語でカーネルを作る
ソースの解説
boot.asm
setup.asm
kernel.c
interrupt.asm
floppy.asm
floppy.c
process.c
user_program1.c
print_string.c