*先輩方の目次
#contents
**笹田さん(2002年度)
第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
**阿部さん(2004年度)
第1章緒言1
1.1 背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 携帯電話上でのJavaVM における2 次記憶装置の管理. . . . . . . . . . . . 1
1.1.2 携帯電話で利用できるインターネットリソース. . . . . . . . . . . . . . . . . 3
1.2 問題点と対処法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
第2 章目標と方針6
2.1 本研究の目標. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 本研究の方針. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 ターゲットとする携帯電話機. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
第3 章システムの全体構成9
3.1 FML の構成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 ローカルストレージの利用. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.2 ネットワークストレージの利用. . . . . . . . . . . . . . . . . . . . . . . . . 12
第4 章FML 15
4.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 全体の設計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1 全体の構成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2 データの保全性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 データ構造. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.1 FileEntry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.2 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.3 Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3.4 FileInputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.5 FileOutputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.6 FileReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
i
4.3.7 FileWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3.8 RandomAccessFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
第5 章StorageAccessStream 44
5.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 機能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 設計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3.1 クラス構成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3.2 DoJa プロファイル向け「ScratchpadStream」. . . . . . . . . . . . . . . . 46
5.3.3 MIDP プロファイル向け「RecordstoreStream」. . . . . . . . . . . . . . . 48
5.3.4 SD カード向けStorageAccessStream . . . . . . . . . . . . . . . . . . . . . 48
5.3.5 ネットワークストレージ向け「NetstorageStream」. . . . . . . . . . . . . . 49
5.4 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
第6 章Suite クラス群54
6.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2 全体の機能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3 DojaSDSuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.2 設計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4 NetSuite の設計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4.2 設計. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
第7 章FML 専用サーバ60
7.1 概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.2 FML での基本機能とサーバへのアクセスメソッドとの関係. . . . . . . . . . . . . 60
7.3 サーバへのインターフェース. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.4 FML のクライアントとサーバ間通信. . . . . . . . . . . . . . . . . . . . . . . . . 63
第8 章評価65
8.1 実装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.1.1 ライブラリ容量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.1.2 動作確認. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.2 性能評価. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2.1 評価の目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2.2 評価対象. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
ii
8.2.3 評価環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2.4 実験内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.2.5 シーケンシャルアクセスの実行速度評価. . . . . . . . . . . . . . . . . . . . 80
8.3 考察. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
第9 章結言87
9.1 本研究の成果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
9.2 今後の課題. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
謝辞89
参考文献91
[[Lab/卒業論文]]