先輩方の目次

第1 章緒言1

1.1 背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 スレッドプログラミング. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 マルチスレッドプロセッサアーキテクチャ. . . . . . . . . . . . . . . . . . . 3
1.1.3 マルチスレッドアーキテクチャにおけるシステムソフトウェア. . . . . . . . 4
1.2 目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
第2 章問題分析6
2.1 従来のスレッド処理機構. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 カーネルレベルスレッド. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 ユーザレベルスレッド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3 2 レベルスレッド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 協調型ユーザレベルスレッドモデル. . . . . . . . . . . . . . . . . . . . . . 11
2.1.5 スレッドモデルについての考察. . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 マルチスレッドアーキテクチャにおけるスレッドライブラリ. . . . . . . . . . . . . 12
2.2.1 従来の実スレッド管理方式. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 マルチスレッドアーキテクチャにおけるスレッドの排他制御・同期. . . . . . 14
2.3 議論. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
第3 章本研究の目標と設計方針18
3.1 本研究の目標. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 本研究の設計方針. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
第4 章システムの全体構成20
4.1 システム全体の構成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 OChiMuS PE プロセッサ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1 プロセッサ概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.2 プロセッサ内部のスレッド管理. . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.3 スレッド制御命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
i
4.3 Future OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.1 プロセス管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.2 スレッドライブラリとの連携. . . . . . . . . . . . . . . . . . . . . . . . . . 26
第5 章スレッドライブラリの方式設計27
5.1 スレッドライブラリの概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 プログラミングインターフェース. . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.1 スレッドの生成と削除,合流. . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.2 スレッド間の排他制御. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.3 条件変数による同期. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 スレッドの管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3.1 スレッド管理ブロック. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3.2 スレッド識別子とLTN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3.3 待ちスレッドリスト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3.4 スレッドスケジューリング. . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3.5 空きLTN リスト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4 プロセッサ命令を利用するスレッド制御. . . . . . . . . . . . . . . . . . . . . . . . 36
5.4.1 スレッド生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4.2 スレッドの削除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.3 排他制御,同期機構. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.4 並列実行のための排他制御. . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5 OS との協調. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5.1 プリエンプティブなスレッド切り替え. . . . . . . . . . . . . . . . . . . . . 48
5.5.2 ブロック,停止している実スレッドの扱い. . . . . . . . . . . . . . . . . . . 48
5.5.3 OS との競合回避. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
第6 章評価52
6.1 実装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2 評価環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3 並列実行による高速化の評価. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3.1 画像縮小プログラム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3.2 行列演算プログラム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4 スレッド制御の評価. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.5 考察. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
第7 章結言59
7.1 本研究の成果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
ii
7.2 本研究の適用可能性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.3 今後の課題. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
謝辞62
参考文献64
付録A 評価プログラムと結果65
A.1 平均画素法による図形縮小プログラム. . . . . . . . . . . . . . . . . . . . . . . . . 65
A.1.1 ソースコード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.1.2 結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.2 行列の掛け算を行うプログラム. . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.2.1 ソースコード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A.2.2 結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Lab/卒業論文


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS