virtualな用語
最近よくvirtualを見ることが多く、よく考えてみたらCS用語の中によくvirtualがprefixでつくことが多いので、まとめてみた。
どれもそれぞれのトピックの中で抽象化を表していて、上位のひとつのインタフェースで下位の異なる実装を使っていて、one-to-manyの関係を表しているのでなかなか面白い。
ハードウェアのレイヤーからソフトウェアのレイヤーの順で知っているものをまとめてみた。
virtual machine
ハードウェアを抽象化している。特定のアーキテクチャを異なるハードウェアやソフトウェアの上で再現する
one: 特定のアーキテクチャやOSのインターフェイス
many: 色々なハードウェアやソフトウェアの実装
virtual private server
OSレベルの抽象化。一貫性のあるOSへのサービスを変更可能なハードウェアの組み合わせで実現している。
one: 一貫したOSのサービス
many: 変更可能なハードウェアの組み合わせ上でのOSサービス
virtual private network
ネットワークを抽象化している。プライベートネットワークのプロトコルをより一般的なインターネットプロトコル上で実装する。
one: プライベートネットワークのプロトコル
many: インターネットのプロトコル
virtual IP
IPアドレスを抽象化している。IPがネットワークカードとは一対一ではない。
one: IPアドレス
many: IPプールの中のアドレス
virtual file system
IOを抽象化している。具体的にどのファイルシステムの実装を使うかを決める
one: read, writeなどのIOインタフェース
many: ext2, 3, FATなどのファイルシステムの実装
virtual memory
メモリ番地の抽象化。メモリアクセスするときに、具体的にどのRAMのアドレスにアクセスするかを決める。
one: リニアアドレス
many: RAMの物理アドレス
virtual function / table
実装の抽象化。関数を呼び出すときに、具体的にどの実装を呼び出すかを決める。
one: 関数のインタフェース
many: 関数の実装
virtual agent
agent(人間?)を抽象化している。テキストや音声でSiriやAlexaなどのagentを操作する。
one: テキストや音声のインタラクション
many: Siri, AlexaなどのいろんなバーチャルAgentの実装
virtual currency
通貨のトランザクションを抽象化している。お金のやりとりを色んな形で実装する
one: お金のやりとりのtransaction
many: 物理ベースな台帳で実現するか、暗号ハッシュベースのブロックチェーンで実現するか
virtual reality
reality(現実?)を抽象化している。現実とのやり取りを抽象化している。
one: 現実とのやりとり(視覚、聴覚などを通じて)
many: いろんなバーチャル世界の実装