Linux Kernel(2.6)の実装に関するメモ書き

ソフト割り込み


Rev.2を表示中。最新版はこちら

ソフト割り込み関連


BH	### 2.6では削除された ###
	マルチプロセッサでも複数実行は不可
	登録数は32まで。
	(2.4の実装としては高優先度タスクレットとして登録され実行される)


タスクキュー	### 2.6では削除された ###
	BHの拡張。
	一つのBHに複数のハンドラを登録できる。

	以下のタスクキューはBHの中で処理される。
	tq_immediate 即実行用タスクキュー
	tq_timer     タイマ用タスクキュー
	他にもタスクキューは存在する。


ソフト割り込み
	マルチプロセッサの場合、各プロセッサで同じ割り込みが動作可能

タスクレット
	ソフト割り込みの一つ。

	複数のハンドラを登録できる。
	複数のCPUで同時実行できるが同じタスクレットは同時実行できない。




softirq_vec[]
+--------------+
|              | HI_SOFTIRQ:tasklet_hi_action()
+--------------+
|              | NET_TX_SOFTIRQ
+--------------+
|              | NET_RX_SOFTIRQ
+--------------+
|              | TASKLET_SOFTIRQ:tasklet_action()
+--------------+
	:
+--------------+
|              |
+--------------+
ソフト割り込みのハンドラが登録される。
open_softirq()で登録する。
raise_softirq()でスケジュールする
(pendingフラグを立ててksoftirqd()をWakeupする)


tasklet_vec[] (HI_SOFTIRQ用にtasklet_hi_vec[]もある)
+--------------+
| CPU#0        | --> tasklet_struct -> tasklet_struct ->
+--------------+
| CPU#1        |
+--------------+
	:
タスクレットのハンドラを登録する。
tasklet_init()でtasklet_structを初期化して、
tasklet_schedule()によってtasklet_structをチェーンして、
TASKLET_SOFTIRQをスケジュールする


Kernel2.6ではソフト割り込みとタスクレットのみとなった。
また、新規の割り込みはタスクレットとして実装するように
linux/interrupt.hに記されている。

最終更新 2006/03/27 12:55:41 - kztomita
(2006/03/27 12:55:18 作成)


リンク
最近更新したページ
検索