{"updated":"2025-01-21T19:17:56.403681+00:00","metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00081614","sets":["934:935:6750:6756"]},"path":["6756"],"owner":"11","recid":"81614","title":["Ruby用マルチ仮想マシンによる並列処理の実現"],"pubdate":{"attribute_name":"公開日","attribute_value":"2012-03-30"},"_buckets":{"deposit":"90ecec9e-5ea1-454c-8584-4358b18ae720"},"_deposit":{"id":"81614","pid":{"type":"depid","value":"81614","revision_id":0},"owners":[11],"status":"published","created_by":11},"item_title":"Ruby用マルチ仮想マシンによる並列処理の実現","author_link":["0","0"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"Ruby用マルチ仮想マシンによる並列処理の実現"},{"subitem_title":"Parallel Processing on Multiple Virtual Machine for Ruby","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"通常論文","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2012-03-30","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"東京大学大学院情報理工学系研究科"},{"subitem_text_value":"株式会社ネットワーク応用通信研究所"},{"subitem_text_value":"株式会社ネットワーク応用通信研究所"},{"subitem_text_value":"東京大学大学院情報理工学系研究科"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Graduate School of Information Science and Technology, The University of Tokyo","subitem_text_language":"en"},{"subitem_text_value":"Network Applied Communication Laboratory, Inc.","subitem_text_language":"en"},{"subitem_text_value":"Network Applied Communication Laboratory, Inc.","subitem_text_language":"en"},{"subitem_text_value":"Graduate School of Information Science and Technology, The University of Tokyo","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/81614/files/IPSJ-TPRO0502004.pdf"},"date":[{"dateType":"Available","dateValue":"2014-03-30"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO0502004.pdf","filesize":[{"value":"991.0 kB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"660","billingrole":"5"},{"tax":["include_tax"],"price":"330","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"0de61903-e21e-438c-9499-4e09b8e8c104","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2012 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"笹田, 耕一"},{"creatorName":"卜部, 昌平"},{"creatorName":"松本, 行弘"},{"creatorName":"平木, 敬"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Koichi, Sasada","creatorNameLang":"en"},{"creatorName":"Shohei, Urabe","creatorNameLang":"en"},{"creatorName":"Yukihiro, Matsumoto","creatorNameLang":"en"},{"creatorName":"Kei, Hiraki","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"我々は,高性能なRuby処理系の開発を行っている.Ruby処理系は仮想マシン(VM)を用いて実現されているが,現在のVMでは,同時にたかだか1つのRubyスレッドのみ実行するという制約があり,並列実行をサポートしていない.また,複数のRubyプロセスを用いて並列実行すると,計算に必要となるオブジェクトの転送がプロセス間転送となり,オーバヘッドが大きいという問題がある.そこで,我々は1つのプロセスに複数のVMを並列に実行できるマルチ仮想マシン(MVM)の開発を行っている.各VMはオブジェクト空間を独立に管理するが,各VMが同一プロセス内にあることを活かしたVM間の高速なオブジェクト転送を行うことができる.また,これらの機能をRubyから利用するためのプログラミングインタフェース(API)を設計した.さらに,Rubyの遠隔メソッド呼び出し機構であるdRubyをMVM上で利用できるように拡張し,MVMの利用を容易に行うことができるようにした.MVMの実装は,現在の処理系との互換性を維持するため,既存の処理系のプロセス全体で共有されるデータ,たとえばC言語のグローバル変数やI/O資源などを,VMごとに保持するようデータ構造を変更することで行った.本論文では,開発しているMVMの設計と実装について述べ,MVMを用いるためのAPIを説明する.そして,MVMを用いた並列処理の現在の実装での性能評価について述べる.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"We are developing a high-performance Ruby interpreter. The current interpreter is a bytecode-based Virtual Machine (VM). However, the current VM does not support parallel processing because the VM is restricted to running at most one Ruby thread at time. Parallel processing using multiple processes requires additional overhead to transfer objects over some inter-process communication mechanism. Based on these challenges, we are developing a Multiple Virtual Machine (MVM) implementation which can run multiple Ruby VMs simultaneously in one process. Each individual VM manages an isolated object space. For MVM, we implemented a fast object transfer technique by taking advantage of sharing the same virtual address space. We also designed a programming interface (API) to use these features. Moreover, we extended dRuby, a remote method invocation framework, to make it easy for programmers to use MVM features. In order to keep compatibility with the current Ruby interpreter, we implemented MVM by replacing the current VM's use of process-global resources, such as C global variables and I/O resources, with the use of VM-local data structures. In this paper, we will describe the design and implementation of our MVM and its API. We will also show several performance evaluations of parallel processing in Ruby using our current MVM implementation.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"42","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"25","bibliographicIssueDates":{"bibliographicIssueDate":"2012-03-30","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"2","bibliographicVolumeNumber":"5"}]},"relation_version_is_last":true,"weko_creator_id":"11"},"created":"2025-01-18T23:35:46.056668+00:00","id":81614,"links":{}}