総合科目「ネットワーク社会を支える情報技術入門 II」、2018年11月26日
筑波大学システム情報系
新城 靖
<yas @ cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2018-11-26
あるいは、次のページから手繰っていくこともできます。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/
http://www.cs.tsukuba.ac.jp/~yas/
印刷配布資料 http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2018-11-26
/it-2018-11-26
.pdf
- 「仮想(virtual)」という考え方は、コンピュータとネットワークの技術
に伴い生じた考え方である。
- 「仮想」の一義的な意味は、「現物と置き換え可能なもの」の意味であ
る。「実体がない」という意味ではない。日本語訳、漢字の語感に惑わされな
いこと。
- 重要な「仮想」がつく概念
- 仮想記憶(virtual memory)
- 仮想計算機(virtual machine)
- 仮想専用線(virtual private network)
- 仮想通貨(virtual currency)
- 仮想計算機には、様々な利用方法がある。
- オペレーティング・システムの誕生と「プロセス」の考え方の発明で、
仮想化が始まった。
英語では、virtual。
- ソフトウェアの働きで作られている。
- 現実のもの(ハードウェア)と置き換え可能である。仮に取り替えても、
(ある範囲では)利用している側には気がつかれない。
類語:抽象(abstract)、論理(logical) (←→物理(physical))
反語:実(real)
- virtual (adjective)
-
almost or nearly as described, but not completely or according to
strict definition : the virtual absence of border controls.
- Computing
not physically existing as such but made by software to appear to do
so : a virtual computer. See also virtual reality .
- Optics
relating to the points at which rays would meet if produced backward.
- Physics
denoting particles or interactions with extremely short lifetimes and
(owing to the uncertainty principle) indefinitely great energies,
postulated as intermediates in some processes.
Thesaurus (類語)
- a virtual guarantee effective, in effect, near, near
enough, essential, practical, to all intents and purposes.
- a virtual shopping environment simulated, artificial,
imitation, make-believe; computer-generated, online, virtual reality.
MacOSX付属 New Oxford American Dictionary, New Oxford Writers
Thesaurus より。
- virtual (形容詞)
- 《表面的にはまたは名目上はそうでないが》事実上の, 実質上の, 実際(上)の; 仮想の, バーチャルな;
- 【光】 虚像の (opp. real)
- 【理】 仮想の《遷移の中間状態として現われ直接検出にかからない; opp. real》
- 【電算】 仮想記憶 (virtual memory) の[を用いる];
- 《古》 実効のある.
リーダーズ英和辞典第2版より。
この講義で中心的に扱う「仮想の考え方」とは、適合しない。
virtual の訳語に「仮想」を当てたのは、失敗だった。
「事実上の」と訳せば良かった。
- 仮想 (広辞苑)
- 仮に考えること。仮に想定すること。例:仮想敵国。
仮想敵国の英語は、{hypothetical、imagined、potential} enemy。virtual
enemy とは言わない。
コンピュータのメモリをうまくつかうための仕組み。
コンピュータには、2種類の記憶のためのハードウェア部品が含まれている。
- メモリ(メインメモリ)、RAM(Random Access Memory)
- 実行中のプログラムを保持する。加工するデータを一時的に保持する。
IC(Integrated Circuit、シリコンという元素による半導
体で作られた電気回路)で作られているので、速い。
容量は、ハードディスクよりは小さい。値段が高い。
(揮発的(電源を切ると消えてしまう)。)
- ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
- プログラムやデータをデータを保持する。
容量は、メモリより大きい。値段が安い。
(永続的である(電源を切っても残っている)。)
メモリには、数字で番地(アドレス)が付いている。番地を指定して、データ
を保存する。番地を指定すると、データが取り出せる。
仮想記憶(仮想メモリ、virtual memory)とは、オペレーティングシステム(後述)の働きにより、実際に備えているメ
モリ容量よりも大きなプログラムを動かすための仕組みである。
図 仮想記憶による主記憶容量の拡大。主記憶よりも、「事実上」多くのメモリがあるように見せかける。
- 主記憶 (main memory, primary storage)
- RAM で作る。小容量、高価。
- 二次記憶(secondary storage)
- ハードディスクで作る。大容量、安価。
- ページ
- 主記憶と二次記憶(ハードディスク)を固定長のブロックに分けたもの。
大きさは、4Kバイト-8Kバイトが一般的。
- ページアウト
- 主記憶にある(当分使いそうにない)ページを、二次記憶へコピーする。
- ページイン
- 二次記憶にある(現在必要とされている)ページを、主記憶へコピーする。
仮想記憶の基本的なアイディアは、高価な RAM の容量を、
安価なハードディスクを使って、「事実上」拡大する。
すぐに使うところだけを速いメモリ(IC)に、当分使わない所を、遅いハー
ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。
この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。
仮想記憶を使うと、メモリが 1000 M バイトしかないコンピュータで、2000 M
バイトのメモリを使うプログラムを実行することができるようになる。
もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕
組みである。最近では、複数のプログラムが使うメモリの総量で考えることも
ある。
あるいは、仮想マシン、仮想コンピュータ。
計算機(専門用語)とは、コンピュータのこと。電卓ではない。
- 1セットのハードウェア(実計算機)を1つのオペレーティング・システム(OS)が操作する。
- OSの上で複数のアプリケーション・プログラムが動作する。
- ハードウェアには、次のようなものが含まれる。
- CPU
- メモリ
- 周辺装置(ハードディスク、ディスプレイ、キーボード、ネットワーク・カード)
図 単純化したコンピュータの構成
仮想計算機とは、仮想計算機モニタと呼ばれるソフトウェアの働きにより作り
出された、事実上のハードウェア。オペレーティング・システムから見ると、
実際のハードウェアとは区別がつかない。
図 仮想計算機上でのオペレーティング・システムの実行
仮想計算機は、仮想計算機モニタ(virtual machine monitor, VMM) という小さ
なソフトウェアにより実現される。
仮想計算機モニタは、ハイパーバイザ(hypervisor)と呼ばれることもある。
仮想計算機モニタは1個でも、複数の仮想計算機を作ることができる。
- もともと複数のコンピュータで行っていた仕事を1台の物理的なコンピュー
タでこなすために集約する。
- 1台のコンピュータで、複数のオペレーティング・システム用の
アプリケーション・プログラムを同時に利用する。
- ハードウェアが故障した時に、簡単に交換できるようにする。
- データのバックアップや、ソフトウェアのインストールを簡単にする。
- クラッシュに強くする。(書き込みを取り消すことができるハードディスクを使う。)
- オペレーティング・システムの開発環境として利用する。
- セキュリティを高める。
目的
- 1970年代: ハードウェアの価格が高い。
1つのハードウェアで複数のOSが走れば、
ハードウェアを買うお金が節約できる。
- 現在:
コンピュータの高速化で、性能が余ってきた。もともとハードウェアn台でやっ
ていた仕事を、ハードウェアとしては1台でこなせるようになってきた。
並列処理の逆。
図? 仮想計算機によるサーバの集約(集約前)
図? 仮想計算機によるサーバの集約(集約後)
仮想計算機モニタの分類
- ハイパーバイザ型
- 実計算機上で仮想計算機モニタが動作する。
- ホスト型
- 実計算機上では普通のオペレーティング・システムが動作する。
仮想計算機モニタは、そのオペレーティング・システムの1つの
アプリケーションとして動作する。
図? ホスト型仮想計算機モニタ
VMware Fusionは、MacOSX 上で動くホスト型の仮想計算機モニタ製品。
デモでは、次の OS を実行する。
日本政府が決定した「セキュア・ジャパン2006」の項目の1つ。内閣官房情報
セキュリティセンターが推進する。文部科学省2006度科学技術振興調整費
「高セキュリティ機能を実現する次世代OS環境の開発」による支援を受ける。
筑波大学がとりまとめ。電気通信大学、東京工業大学、慶應義塾大学、奈良先
端科学技術大学院大学、豊田高専、富士通、NEC、日立製作所、NTT、N
TTデータ、ソフトイーサの技術者が参加。インテルが技術協力。
2009年3月開発プロジェクト終了。
目標: オペレーティング・システムやアプリケーションに依存しない形でセキュ
リティ機能を付加する。
- ICカードがないと、オペレーティング・システムが起動しない。
盗難にあっても、他人には使われない。
- ハードディスクが自動的に暗号化される。
ハードディスクのが取り出されても、
情報漏えいが発生しない。
- 強制的に
仮想プライベート・ネットワーク(後述)
に参加させ、ネットワーク通信を暗号化すると共に、
利用可能なネットワークを制限する。
既存のオペレーティング・システム(Windows, Linux 等)を変更しないで実行す
る。このために、仮想計算機(モニタ)で、セキュリティ機能を追加する。
図? BitVisor の機能
図? BitVisor の起動画面
http://www.bitvisor.org/
vThrii(ブイスリー) は、大学の教室等にある多数の PC にハードディスクの内
容を配信する仮想計算機モニタの一種。BitVisor の技術が使われている。
2017年4月から、
筑波大学 全学計算機の実習室にある PC
で使われている。
図? ハードディスクの内容の配信
問題: 大学の教室等にある多数の PC のハードディスクに、新しいソフトウェ
アを1度の操作でインストールして設定したい。
従来の方法1: 1 台の PC のハードディスクの内容を、サーバにコピーし、サー
バから、全PCにコピーする。
問題点
- PC の数が増えると、コピーに時間がかかる。
- コピーのために、高速なネットワーク==高価なネットワークが必要になる。
- コピー中は、PC が使えない。
従来の方法2: ネットワーク・ブートする。ハードディスクの内容を、コピーしないで、
使う時に、使う分だけ、取り寄せる。コピーは、不用。
問題点
- 授業開始時に同時に起動する PC の数が増えると、時間がかかる。
- 授業開始時にアクセスが集中するので、高速なネットワーク==高価なネッ
トワークが必要になる。
仮想計算機モニタ(vThrii)の方法:
- 仮想計算機モニタは、OS にはハードディスクにみえるもの(仮想ハード
ディスク)をソフトウェア的に作り出す。
- ソフトウェアを 1 台の PC にインストールし、そのハードディスクの内容を読
み出し、サーバに、マスタとして保存する。
- PC の OS がハードディスクの一部を読み出した時:
- 初回: ネットワークでサーバから取り寄せて、OS に返す。さらに、将来
のアクセスに備えて、自分のハードディスクに保存する。
- 2回目以降: 自分のハードディスクから読み出して、OS に返す。(速度は、
普通の PC と同じ。)
- PC が暇な時、ハードディスクのまだ使われていない部分を事前にサーバ
から取り寄せ、自分のハードディスクに保存する。
- サーバにあるマスタの一部だけ追加されたら、追加された分だけ取り寄せ
る。
- OS が自分のハードディスクへ書き込んだ時には、本来の場所とは別の場
所に書き込む。再起動すると、クリーンな元の状態に戻せる。
- ハードディスクを仮想化しているので、OS の種類は問わない。
図? 仮想計算機モニタによるハードディスクの内容の配信
参考
Java 言語で書かれたプログラム(バイトコードと呼ばれる機械語の一種に変換
されたもの)を実行する。
Java仮想計算機を使うと、さまざまな種類ハードウェア(CPU)やオペレーティ
ング・システムで共通にバイトコードという機械語が使えるようになる。
バイト・コードに変換されたアプリケーションは、どの
CPUやオペレーティング・システムでも動作する。
図? 共通のバイトコードが使える
(仮想がつかない)専用線サービスとは、NTT 等の通信事業者から自分専用の通
信回線を借りること。料金は、通信帯域と距離で決まる。(普通の電話の料金
は、時間できまる。)他の人が入り込むことはないので、安全である(通信を
傍受するには、電話並に難しい。)
図? 専用線
専用線サービスは、非常に高価。例。
- NTT ディジタルアクセス 64 K bit/s, 15km 以内, 月額 28,000円〜
- NTT ディジタルアクセス 1.6 M bit/s, 15km 以内, 月額 152,000円〜
本当は、インターネットという、誰もがアクセスできるネットワークを通って
いるが、あたかも 専用線(private network) で結ばれているように見せかけ
る。
図? VPN
VPNを実現する技術:
筑波大学では、学外から学内(IPアドレスで制限)のサービスを利用するために使える。
無線LAN を使う時、電波で発せられたデータは、周りの PC で受信可能である。
無線LAN 部分の暗号化の有無に注意する。
- 暗号化なし。接続する時に、パスワードを聞かれないもの。
- 標準的な暗号化あり。WPA, WPA2 など。
- 弱い暗号化。WEP など。
暗号化なし(パスワードなし)のものは、電波が届く範囲で通信内容を傍受され
る。
図? 無線LANの通信傍受
無線LANの通信内容の傍受を防ぐには、VPN を使って暗号化すると良い。傍受し
ている人は、暗号化されたデータと、VPN の接続先を知ることができる。暗号
化前のデータを入手することは難しい。
図? 無線LANの通信傍受
注意1: VPNの接続先を隠すことはできない。
注意2: VPN の接続先で、暗号化された通信内容は、復号される(元にもどされ
る)。VPN の接続先と、本来の接続先の間の通信にも気を使う必要がある。
Web ページの URL で、http: で始まるものは、通信路が暗号化されていない。
https: で始まるものは、通信路が暗号化されている。https: の通信は、暗号
化されていない無線 LAN であったとしても、通信内容の傍受は難しい。
しかし、https: の通信の前に、
DNS
のアクセスがなされる。DNS のアクセスは、暗号化されていない。無線 LAN が
暗号化されていなければ、アクセスしたサーバの名前が傍受される。
VPN を使えば、(設定により) DNS の部分も暗号化できる。
1つの大きなファイルを、1つのハードディスクと同じように扱えるようにし
たもの。仮想ディスクを使うと、次のようなことができる。
- データを暗号化して保存する。
- 複数のファイルからなるソフトウェアを1まとめにする。
- CD-R などに書き込むためのファイルを一時的に蓄える。
ネットワークに接続されたコンピュータをホストという。ホストは、サービス
を提供するプログラム(サーバ)を動作とせるという意味もある。
仮想ホストは、本来なら複数のコンピュータが必要であったものを、1台に集
約する。ただし、ネットワークを超えて向こう側で見た時には、1台に集約さ
れていることには気がつかせない。
仮想ホストの実現方法
- 仮想計算機を使う
- 個々のプログラムで対応する。
1台のコンピュータで動いている1つのプログラムで、
複数のドメイン名に対してサービスを提供する。
高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない
ものを(コンピュータの中に)実在しているかのごとく見せかける。
VR は、単なる CG (Computer Graphics) と違い、人間が働き掛けると、現実と
同じように応答する。感覚のフィードバックがある。
最近の日本語では、コンピュータによる原義を離れて、「現実には存在しない」
という意味が使われることがある。
以前は、空間(と時間)の制約で実現できなかったことが、コンピュータとネッ
トワークの発達により、現実に近いレベルにまで達してきた(部分的に現実の
ものと置き換え可能になってきた)という意味も生じてきている。
- 仮想都市、仮想社会
- 仮想大学、仮想教官、仮想学生
- ・・・
仮想通貨とは、コンピュータとインターネットの技術を用いて作られた、「普
通の通貨と置き換え可能なもの」、という単純な定義は
できない。
- Bitcoin
- Ethereum イーサリアム
- Ripple
- Bitcon Cache
- Monero
- その他1000種類以上。どんどん増えている。
通貨とは何か、という定義が難しい。
図 ヴィクセルの三角形
- A さんは、 B さんの商品 b が欲しい。
- B さんは、 C さんの商品 c が欲しい。
- C さんは、 A さんの商品 a が欲しい。
- A さんが、B さんに電話をして、「自分が持っている商品 a と B さんが
持っている商品 b を交換しよう」と提案する。
- B さんは、A さんへの解答を保留する。
B さんは、電話を受けて、知識が増える。
- A さんは商品 a を持っている
- A さんは商品 c が欲しい
- B さんは、次のことを検討する。
- 単に断る。不合理。
- C さんに「商品 c と(商品 a または商品 b)を交換しよう」と打診する。
普通はこれを選ぶ。
- C さんに打診したらどうかと A さんに言う。
本質的には、上と同じ。
- B さんは、C さんに電話をして、「(商品 a または商品 b )と商品 c を
交換しよう」と提案する。
- C さんは、「自分の持っている商品 c と商品 a を交換しても良い」
と解答する。
- B さんは、2. で保留していた解答を行う。A さんに交換に応じると言う。
- B さんは、A さんから a を受け取り、C さんに a を渡す。
- B さんは、C さんから c を受け取り、C さんに c を渡す。
- B さんは、A さんから a を受け取る。
最終的に、A さんも B さんも C さんも、自分が欲しかったものが手に入る。
図 物々交換により欲しい物を手に入れる。
- 上の手順で商品 a は、通貨の役割を果たしている。
- A は、B から 商品 c を買う。
- B は、A に商品 b を売る。
- B は、C からに商品 c を買う。
- C は、B に商品 c を売る。
図 通貨により欲しい物を手に入れる。
3 人だけでなく、N 人でも同様。
物々交換の世界から、創発的に通貨が発生する。
- 物々交換では、交換はあまり行われない。
- 人々の人気が高い商品が発生すると、それが通貨として働く。
- 人々の人気がなくなると、通貨は暴落する。
参考文献
- 貝殻
- 金、銀、銅、金貨、銀貨、銅貨
- 各国の中央銀行が発行する紙幣。法定通貨(fiat currency)。
- 商品券、切手、図書券
- ポイント
- Bitcoin, その他の「仮想通貨」
英語圏では、virtual currency より、"crypto currency" (暗号通貨) という
言い方が好まれる。英語の virtual は、
「事実上の」
という意味が強いので。
次のような、コインの送付を「台帳」に記録する。
- A さんが B さんに X BTC を送った。
- B さんが C さんに Y BTC を送った。
- B さんが D さんに Z BTC を送った。
図 A,B,C,D間のコインの送受信
B さんは、受け取った以上の送金をしてはいけない(Y+Z <= X)。
B さんが、そういうことをしていないことは、「台帳」を調べればわかる。
「台帳」の管理は、中央のサーバではなく、インターネット上のたくさんのコ
ンピュータ衆人環視の状態で行われている。このコンピュータのことを台帳の
管理のことを「マイニング(採掘)」という。(金の採掘と対比しない方が、
本質を理解できる。)
台帳の管理手法として「ブロックチェーン」という手法が使われている。
- 台帳は、ブロック単位で10分に1回更新される。
- 台帳の積み重ねが 6 ブロック続いたら、その下の部分の内容は正しいこ
とと、みんなで信じることにする。
- 本当は、最初の台帳から全部調べないといけないが、それは面倒(計算量
が膨大)なので、それより古いものをいちいち調べないことにする。
- 不正な台帳の積み重ねも作れるが、6つの不正なブロックを積み重ねるだ
けでも、莫大な計算量が必要になるので、現実的には誰もできない。
図 Bitcoinのブロックチェーン
台帳の管理には、電気代がかかる。みんなのために、台帳を管理すると、コイ
ンがもらえる。(送り手が管理者にコインで手数料を支払うこともできる。)
よくある間違い。
- Bitcoin の価値は、台帳管理の電気代に裏付けされる。
- Bitcoin は、匿名性が高い。
- Bitcoin の送付には、1 時間かかる。
- 基本ソフトウェア(プログラム)。
- 電源を入れて、使えるようになった時に動いているプログラム。
(オペレーティング・システム以外のプログラムは、
すべてオペレーティング・システムの働きで実行される。)
- コンピュータの「顔」を作る。基本的な考え方と操作方法とを決める。
同じハードウェアでも、違うオペレーティング・システムが動くと、
考え方も操作方法も違う。
- ソフトウェアにより、基本的なもの(幻影、オブジェクト)を提供する。
- ファイルとディレクトリ
- プロセス
- ウィンドウ、アイコン
- 管理職。ハードウェアを管理する。メモリ管理、CPU管理。
BIOSがブートローダをメモリに読み込み、ブートローダを実行する。
ブートローダがOSをメモリに読み込み、OSを実行する。
BIOS(Basic Input Output System)、ROM Monitor。OSをハードディスクから
メモリにコピーして、OSに制御を渡すプログラム。ROM (Read-Only Memory)
という、少容量の不揮発的なメモリに入っている。古いシステムでは、(フロッ
ピ・ディスクへの)基本的な入出力の機能が含まれていた。
- ローダ(Loader)
- モニタ(Monitor)
- バッチ処理OS
- TSS (Time Sharing System)OS
- ワークステーション用OS
- パソコン用OS
- ネットワークOS, 分散OS, 実時間OS
「パーソナル・コンピュータ」の考え方は、比較的新しい。昔は、コンピュー
タが高価だったので、1台のコンピュータを複数人(時には数百人)で同時に
使うことが一般的だった。
TSS (Time Sharing System)では、1台のコンピュータを大勢の人で同時に使
う、一人ひとりは、自分で占有しているかのように見える。
仮想記憶や仮想計算機が作られたのは、この時代。
プログラムとプロセス。
プロセスとは、オペレーティング・システムの働きにより、二次記憶に保存さ
れていたプログラムがメモリ(主記憶)に読み込まれ、実行可能になったもの。
単にファイル(ハードディスク)に入っていも、プログラムはプログラムであ
る。
1つのプログラムを同時に2個動かすことを考えると、プログラムとプロセス
の違いがわかる。
図? オペレーティング・システムの構成要素
1つのプロセスから見ると、普段は自分一人で全部のコンピュータのハードウェ
アを利用しているように見える。コンピュータの仮想化の最初。
プロセスは、時々、他のプロセスからデータを受け取る(プロセス間通信)。
Last updated: 2018/11/26 10:14:59
Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>