木構造と仮想

総合科目「ネットワーク社会を支える情報技術入門 II」、2011年10月03日

                                       筑波大学システム情報工学研究科/電子・情報工学系
                                       新城 靖
                                       <yas @ cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2011-10-03
あるいは、次のページから手繰っていくこともできます。
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-2011-10-03 /it-2011-10-03 .pdf

逆立ちした木

■木構造

木構造(tree structure)というのは、コンピュータ・サイエン ス(情報学類、情報科学類で学ぶ学問)でよく使われる用語である。分野によっては、同じ ものを階層構造(hierarchical structure)という言葉で表現す ることが好まれる。ドイツ語語源の、ヒエラルヒー(Hierarchie)という言葉が 使われることもある。

木構造の例を、大学の組織を使って説明する(図1)。

木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・

図1 大学組織に見られる木構造

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・(領域的な見方)

図2 大学組織に見られる木構造(領域的な見方)

◆字下げによる木の表現

木構造を字下げで表すことがある。

筑波大学

◆区切り文字入り表記

「情報科学類」という節を、次のように表記する。

筑波大学情報学群情報科学類

コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

筑波大学.情報学群.情報科学類
筑波大学/情報学群/情報科学類
情報科学類.情報学群.筑波大学

区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。

◆木の例

コンピュータでは、次のような場所で木構造が使われている。

コンピュータ以外では、次のような場所で木構造が使われている。

◆文の構造

1つの文も、木構造で表される。同じ単語の並びでも、組み立てられる木構造 が違うと違う意味になる。英文の解釈は、木構造を組み立てることである。

Time flies like an arrow.

図4 「Time flies like an arrow.」の木(その1)

図4 「Time flies like an arrow.」の木(その1)

光陰矢のごとし。

図5 「Time flies like an arrow.」の木(その2)

図5 「Time flies like an arrow.」の木(その2)

時蝿、矢を好む。

◆英語の文法

基本5文型は、木構造を意味する。
  1. S V
  2. S V C
  3. S V O
  4. S V O O
  5. S V O C
これを <clause>とする。英語の文は、次の形式で <clause>をいくつかつなげ、最後に「.」をつけたたものである。
<sentence> ::= <simple sentence> '.'
        または <compound sentence> '.'
        または <compound-complex sentence> '.'

<simple sentence> ::=  <clause>

<compound sentence> ::=
           <clause>  ','  <FANBOYS>  <clause>
    または <clause>  ';'  <transition word> <clause>
    または <clause>  ','  <conjunctive> <clause>

<complex sentence> ::=
           <dependent clause> ',' <independent clause>
    または <independent clause>   <dependent clause>

<compound-complex sentence> ::=
    <clause> <dependent clause>

<dependent clause> ::=  <subordinate> <clause>

<subordinate> ::=
           <subordinate-adj> または <subordinate-adv>
    または <subordinate-noun>

<subordinate-adj> ::=
    who または whom または that または which

<subordinate-adv> ::= after または before または because
    または although または since

<subordinate-adv> ::= that または whether

<clause> ::= 基本5文型で表せるもの

<FANBOYS> ::=
    for または and または not または but または
    or または yet または so

<conjunctive> ::=
    <subordinate conjunction> または <coordinate conjunction>
    または  <conjunctive adverb>

<subordinate conjunction> ::= as, if, that など

<coordinate conjunction> ::= and, but, or, for など

<conjunctive adverb> ::= however, nevertheless,
                         still, then など
よい英文は、1つの <sentence> には、2つ の<clause>、つまり、S V が2つが現れることが多い。

◆文書の木

文章の中にも、木構造が現れる。

◆ディレクトリの木

ディレクトリは、全体では 木構造(tree structure) になっている。階層化ディレクトリ(hierarchical directory)と呼ばれるこ ともある。

図9 ファイルとディレクトリの木

図9 ファイルとディレクトリの木

ファイルは、葉(leaf)になる。ディレクトリは、節(node)になる。特殊な節と して、根(root)がある。これを、ルート・ディレクトリ(root directory)と いう。

図10 自然の木

図10 自然の木

◆パス名

ファイルの名前の表現には、「パス名」がよくつかわれる。パス (path)とい うのは、道の意味である。パス名では、どの道を通ればよいかの道順を示すこ とでファイルの名前を表現する。

木構造では、節、または、枝(道)に名前がついている。ファイル名は、区切り 文字で区切られた、節、または、枝の名前の並びになる。ファイルの名前を表 現する時の区切り文字としては、次のものがよく使われる。

ファイル名で「.」は、木構造の区切りとしては使われない。

パス名の例:

◆世界最大の木構造:DNS(Domain Name System)

電子メールを送ったりWorld Wide Web のページを閲覧する時には、データの 送り先やデータを持っているコンピュータを指定する必要がある。 インターネットで使われている、コンピュータの名前を管理する仕組みは、 DNS(Domain Name System) と呼ばれている。 DNS では、膨大な数のコンピュータの名前を含む名前空間を階層的にドメイン (領域)に分割して管理している。

たとえば、次のような名前を考える。

azalea1.coins.tsukuba.ac.jp
このように、インターネットでのコンピュータの名前は、「.」 で区切られた文字列(文字の並び)である。この文字列で使える文字は、アル ファベットと数字、ハイフン(マイナス)である。 DNS で名前は、右から左に向かって解釈される。

全体がドメインに分割された図

図8 名前空間のドメインへの分割

azalea1.coins.tsukuba.ac.jp」を 図8で考えると、次のようになる。

ドメインを木構造としてとらえた図

図9 名前空間の木構造としての見方

azalea1.coins.tsukuba.ac.jp」を 図9で考えると、次のようになる。

■木構造の制約と問題点

大量の情報を保存するには、木構造を使うしかない。 しかし、、、

◆こうもりの分類問題

図13 こうもりの分類(1)

図13 こうもりの分類(1)

図14 こうもりの分類(2)

図14 こうもりの分類(2)

◆シンボリック・リンク/エイリアス/ショートカット

木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ けでは、ファイルを整理するには不都合が起きる。それを解消するために、次 のような名前で呼ばれる仕組みが用意されている。

2つの節に、「別名」をつけて、2つの道からたどり着けるようにする。 (木構造では、1つの節にたどり着く道は、ただ1つしかない。)

図15 こうもりの分類(別名つき)

図15 こうもりの分類(別名つき)

◆図書の分類

10進分類が多く使われる。 図書の分類の問題点

◆木構造を使わない図書の分類

インドの図書館学者S. R. Ranganathan により考案された方法。 5つのファセット(カテゴリ)を使う。

◆ファセット(カテゴリ)をつかう分類

木構造とは違い、順番を気にしない。

例: アパートの分類。次のような項目から任意の順で絞り込める。

■仮想とは

◆コンピュータ由来の「仮想」の意味

英語では、virtual。

類語:抽象(abstract)、論理(logical) (←→物理(physical))

反語:実(real)

■仮想記憶(virtual storage,仮想メモリ,virtual memory)

◆(物理的な)メモリ

メモリ(メインメモリ)、RAM(Random Access Memory)
実行中のプログラムを保持する。加工するデータを一時的に保持する。 IC(Integrated Circuit、シリコンという元素による半導 体で作られた電気回路)で作られているので、速い。 容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

メモリには、数字で番地(アドレス)が付いている。番地を指定して、データ を保存する。番地を指定すると、データが取り出せる。

◆仮想記憶(仮想メモリ)

仮想記憶(仮想メモリ、virtual memory)とは、オペレーティングシステムの働きにより、実際に備えているメ モリ容量よりも大きなプログラムを動かすための仕組みである。

主記憶、6ページ、ハードディスク、15ページ、ページイン、ページアウト

図 仮想記憶による主記憶容量の拡大。主記憶よりも、「事実上」多くのメモリがあるように見せかける。

主記憶 (main memory, primary storage)
RAM で作る。小容量、高価。
二次記憶(secondary storage)
ハードディスクで作る。大容量、高価。
ページ
主記憶と二次記憶(ハードディスク)を固定長のブロックに分けたもの。 大きさは、4Kバイト-8Kバイトが一般的。
ページアウト
主記憶にある(当分使いそうにない)ページを、二次記憶へコピーする。
ページイン
二次記憶にある(現在必要とされている)ページを、主記憶へコピーする。

仮想記憶の基本的なアイディアは、高価な RAM の容量を、 安価なハードディスクを使って、「事実上」拡大する。 すぐに使うところだけを速いメモリ(IC)に、当分使わない所を、遅いハー ドディスクに置き、ディスクとメモリの内容を入れ替えながら仕事を進める。 この時、速いメモリを主記憶、遅いハードディスクを二次記憶とう。

仮想記憶を使うと、メモリが 1000 M バイトしかないコンピュータで、2000 M バイトのメモリを使うプログラムを実行することができるようになる。

もともとは、1つのプログラムで実際のメモリ容量以上のものを使うための仕 組みである。最近では、複数のプログラムが使うメモリの総量で考えることも ある。

■仮想計算機(virtual machine)

あるいは、仮想マシン、仮想コンピュータ。 計算機(専門用語)とは、コンピュータのこと。電卓ではない。

◆コンピュータの構成

ハードウェア、OS、アプリケーション2個

図 単純化したコンピュータの構成

◆仮想計算機

仮想計算機とは、仮想計算機モニタと呼ばれるソフトウェアの働きにより作り 出された、事実上のハードウェア。オペレーティング・システムから見ると、 実際のハードウェアとは区別がつかない。

仮想計算機、OS、アプリケーション2個

図 仮想計算機上でのオペレーティング・システムの実行

仮想計算機は、仮想計算機モニタ(virtual machine monitor, VMM) という小さ なソフトウェアにより実現される。 仮想計算機は、ハイパーバイザ(hypervisor)と呼ばれることもある。

仮想計算機モニタは1個でも、複数の仮想計算機を作ることができる。

◆仮想計算機の利用方法

◆コンピュータの集約

目的

図? サーバ3台、OS3種類、アプリケーションそれぞれ2つ

図? 仮想計算機によるサーバの集約(集約前)

図? ハードウェア1台、OS3種類、アプリケーションそれぞれ2つ

図? 仮想計算機によるサーバの集約(集約後)

◆ハイパーバイザ型とホスト型

仮想計算機モニタの分類
ハイパーバイザ型
実計算機上で仮想計算機モニタが動作する。
ホスト型
実計算機上では普通のオペレーティング・システムが動作する。 仮想計算機モニタは、そのオペレーティング・システムの1つの アプリケーションとして動作する。

図? ホスト型仮想計算機モニタ

図? ホスト型仮想計算機モニタ

◆仮想計算機モニタの実例紹介

VMware Fusionは、MacOSX 上で動くホスト型の仮想計算機モニタ製品。 デモでは、次の OS を実行する。

◆エミュレータとシミュレータ

エミュレータ
別のシステムで、本物のシステムと同じ動きを真似するソフト ウェア。本物は、必ずしもコンピュータ全体(計算機)でなくてもよい。
シミュレータ
現実世界の予測に使うもの。数式でモデル化して計算で予測 する。実際にやるとコストがかかるもの、取り返しがつかないものをコンピュー タの中で実行する。現実の代わりにはならない。(エミュレータは、本物の代 わりに使える。シミュレータは、本物の代わりには使えない。)

(文字)端末

1台の(高価な)中央のコンピュータを、複数人で TSS (Time Sharing System)で使う時に使う(安価な)コンピュータ。キーボードから打ち込まれた 文字を中央のコンピュータに送る機能と、中央のコンピュータから送られてき た文字を画面に表示する機能がある。

◆セキュアVM/BitVisor

日本政府が決定した「セキュア・ジャパン2006」の項目の1つ。内閣官房情報 セキュリティセンターが推進する。文部科学省平成18年度科学技術振興調整費 「高セキュリティ機能を実現する次世代OS環境の開発」による支援を受ける。 筑波大学がとりまとめ。電気通信大学、東京工業大学、慶應義塾大学、奈良先 端科学技術大学院大学、豊田高専、富士通、NEC、日立製作所、NTT、N TTデータ、ソフトイーサの技術者が参加。インテルが技術協力。 2009年3月開発プロジェクト終了。

目標: オペレーティング・システムやアプリケーションに依存しない形でセキュ リティ機能を付加する。

既存のオペレーティング・システム(Windows, Linux 等)を変更しないで実行す る。このために、仮想計算機(モニタ)で、セキュリティ機能を追加する。

図? PC、ICカード、画面に PIN

図? BitVisor の機能

図? PC、ICカード、画面に PIN

図? BitVisor の起動画面

http://www.bitvisor.org/ http://www.securevm.org/

■仮想記憶、仮想計算機以外の仮想

◆VPN(Virtual Private Network)

本当は、インターネットという、誰もがアクセスできるネットワークを通って いるが、あたかも 専用線(private network) で結ばれているように見せかけ る。

VPNを実現する技術:

筑波大学では、学外から学内のサービス(Twins等)を利用するために使える。

◆仮想ディスク(virtual disk)

1つの大きなファイルを、1つのハードディスクと同じように扱えるようにし たもの。仮想ディスクを使うと、次のようなことができる。

◆仮想現実感(virtual reality)

高度なコンピュータ・グラフィックスやサウンドの技術を使って、実在しない ものを(コンピュータの中に)実在しているかのごとく見せかける。

人間が働き掛けると、現実と同じように応答する。感覚のフィードバックがある。

◆世俗的な「仮想」

最近の日本語では、コンピュータによる原義を離れて、「現実には存在しない」 という意味が使われることがある。 以前は、空間(と時間)の制約で実現できなかったことが、コンピュータとネッ トワークの発達により、現実に近いレベルにまで達してきた(部分的に現実の ものと置き換え可能になってきた)という意味も生じてきている。


Last updated: 2011/09/29 17:30:58
Yasushi Shinjo / <yas @ cs.tsukuba.ac.jp>