インターネットデパート - 取扱い商品数1000万点以上の通販サイト。送料無料商品も多数あります。

0から作るOS開発 Vol.4 カーネル編 割り込み ~IDTとPICとPIT~

価格: ¥0
カテゴリ: Kindle版
ブランド: yabusame2001
Amazon.co.jpで確認
C言語で0から作るOSを開発について説明していきます。このシリーズではカーネルの開発について説明しています。
今回は、割り込みについて見ていきます。割り込みベクターをIDTで作成してプロセッサーが割り込みを受け付け準備を行います。そして、外部デバイスからのIRQを統括するICであるPICについて制御を行います。また、昔にタイマーとして使用されていたPITの制御とタイマー割り込みハンドラーを作成して実際にタイマー割り込みが入ってくるところまで見ていきます。
補足でGDTをC言語で構築する場合についての説明もしていきます。

[目次]
前回までの内容
割り込み
  例外(Exception)
  割り込み要求(IRQ:InterRupt Request)
  ソフトウェア割り込み
割り込みベクターと割り込みハンドラー
割り込みベクタと例外
IDT(Interrupt Descriptor Table)
  IDTのディスクリプター
  IDTR(Interrupt Descriptor Table Register)
IDTをC言語で構築する
  ゲートディスクリプターからIDTを作る
  IDTRの定義
  ゲートディスクリプターをセットアップする
    ゲートディスクリプターのフラグ定義
    割り込みゲートディスクリプターのセットアップ
  IDTRに読み込ませるデータを設定する
IDTをLIDT命令で読み込む
GDTをC言語で構築する
  セグメントディスクリプタの定義
  セグメントディスクリプターからGDTを作る
  セグメントディスクリプターをセットアップする
    グローバルディスクリプターのフラグ定義
  セグメントディスクリプタのセットアップ
  GDTRの定義
  GDTRに読み込ませるデータを設定する
GDTをLGDT命令で読み込む
GRUBからカーネルをロードする場合について
PIC(Programmable Interrupt Controller)
割り込みとPIC
PICの特徴
8259Aのハードウェア
  8259Aをカスケード接続する
ハードウェアが割り込みを要求したときの動作
  ハードウェアが割り込みを要求
  CPUはPICから割り込信号を受け付けます
  割り込みハンドラを実行する
  そして割り込みハンドラーが実行される
8259Aのレジスター構成
  コマンドレジスター
  ステータスレジスター
  割り込み要求レジスター(IRR:Interrupt Request Register)
  割り込み中レジスター(ISR)
  割り込みマスクレジスター(IMR)
8259Aのポートアドレス
ポートにアクセスする関数を作る
  OUT命令
  IN命令
8259Aの初期化コマンド
  初期化制御コマンドICW(Initialization Control Words)
  ICW1(Intialization Control Word1)
  ICW2(Initialization Control Word2)
  ICW3(Initialization Control Word3)
  ICW4(Initialization Control Word4)
    (補足)ネストモードについて
    (補足)AEOIについて
8259Aの操作コマンド
  OCW1(Operation Command Word1)
  OCW2(Operation Command Word2)
    EOIコマンド
    (補足)自動ローテーションコマンド
    (補足)特定優先度ローテーション
  OCW3(Operation Command Word3)
    8259Aの内部レジスター読み込み
    スベシャルマスクについて
    ポールコマンドについて
PICの初期化コマンドをプログラムする
IRQの割り込みベクター
  IRQをマスクする
PIT(Programmable Interval Timer)
8253のハードウェア
8253のタイマー
  カウンター
  CLK
  OUT
  GATE
  チャンネル0
  チャンネル1
  チャンネル2
8253のモード
  モード0(タイマー)
  モード1(ワンショットタイマ)
  モード2(パルス生成モード)
  モード3(矩形波生成モード)
  モード4(ソフトウェアトリガーモード)
  モード5(ハードウェアトリガーモード)
8253のレジスター
  カウンターレジスター
  制御コマンド(Control Word)レジスター
PITのまとめ
割り込みハンドラー
  割り込み・例外ハンドラーの実行
    現在実行中のプログラムの特権レベルよりゲートディスクリプターの特権レベルの方が低い場合
    現在実行中のプログラムの特権レベルとゲートディスクリプターの特権レベルが同じ場合
  割り込み・例外時のスタック操作
  エラーコード
  割り込み・例外処理からの復帰
タイマー割り込みハンドラー
  割り込みハンドラーの入り口
  割り込みハンドラー(IRQ)の終了通知
  割り込みハンドラーの出口
  タイマー割り込みハンドラーのまとめ
    タイマー割り込みハンドラーのIDTへの登録