@misc{oai:uec.repo.nii.ac.jp:00009146, author = {藤本, 明優}, month = {2019-04-23}, note = {2018, プログラムが実際にどのようにして動作しているかを理解することは, プログラミングにおいて重要なことの一つである. しかしマルチスレッドプログラムは逐次処理と異なり, ソースコード上は一つの操作に見えても実は不可分でない操作やメモリの可視性などが原因でソースコードの見た目通りにプログラムが動いていないため, 実際の動作がわかりにくい. また, マルチスレッドのバグは発生確率が低いものがあるだけでなく環境によって全く発生しない場合があり, 実際に参考書などに記載されているバグのサンプルを手元の環境で試しても発生しないことがある. そこで, マルチスレッドプログラムがどのように動作しているのか, シングルスレッドプログラムと同じようにプログラミングしてしまうとどのような動作をしてどのような問題が発生するのかなどの動作原理の概要を学ぶためのツールを開発した. マルチスレッド特有のバグのうち, デッドロックは既に可視化が行われている. そこで, 本研究では競合状態やメモリの可視性など, よりハードウェア側に近い動作の可視化した. 実機ではメモリモデルの違いやコンパイラの最適化の違いなどにより全ての可能性を再現することはできないため, 逐次処理プログラミング経験者向けビジュアルプログラミング言語による入力およびハードウェアレベルのプログラムアニメーションを行うシミュレータとして作成した. 全ての可能性を提示する方法としてモデル検査によりバグのあるパターンを検出して自動実行する方法と手作業で全パターンを実行できるようにする方法が考えられる. 本研究では学習を目標とするため, バグの有無にかかわらず全ての可能性を実行できるように後者を選択した. ユーザは複数の可能な操作から一つを選ぶことで, スレッドスケジューリングやハードウェアによる動的な実行順序の並び替えをシミュレートできる. 評価実験により, 提案システムはマルチスレッドの並列プログラムの理解支援に一定の有効性を示した. 一方で, プログラムアニメーションが手動であるために見落としが発生した.}, title = {並列プログラム理解支援のための細粒度プログラムアニメーション}, year = {}, yomi = {フジモト, アキマサ} }