Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
現代を支える仮想化の仕組み @ 情報科学若手の会・セキュリティ若手の会 春の陣2026
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Big Buddha
March 21, 2026
Technology
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現代を支える仮想化の仕組み @ 情報科学若手の会・セキュリティ若手の会 春の陣2026
TBD
Big Buddha
March 21, 2026
More Decks by Big Buddha
See All by Big Buddha
実装がすべてではない、開発者の周りから考える Web プロダクトセキュリティ
oldbigbuddha
2
800
Security という英単語から考えるサイバーセキュリティ
oldbigbuddha
0
73
seccamp 2022 online 体験記+α
oldbigbuddha
0
190
Minecraft のサーバーを サクッと準備したい
oldbigbuddha
0
230
フィンランドで体験したICT教育
oldbigbuddha
0
2.4k
Lesson 2: C言語に触れてみる
oldbigbuddha
0
190
Lesson 1: プログラミングとは
oldbigbuddha
0
250
Lesson 0: レッスンを始める前に
oldbigbuddha
0
150
Fuelで幸せフエル?/ Fuel make me happy?
oldbigbuddha
0
520
Other Decks in Technology
See All in Technology
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
400
SRE Lounge Hiroshimaへの招待
grimoh
0
490
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
430
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
1k
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
320
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
530
初めてのDatabricks勉強会
taka_aki
2
250
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
2
2.7k
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
180
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
380
Claude Codeとハーネスについて考えてみる
oikon48
18
8.9k
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
150
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
220
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Side Projects
sachag
455
43k
Believing is Seeing
oripsolob
1
170
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.5k
Between Models and Reality
mayunak
4
370
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
250
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Transcript
hoge 現代を支える仮想化の仕組み @情報科学若手の会・セキュリティ若手の会 春の陣2026 OJI
自己紹介 OJI(@OldBigBuddha) SWE @ GMO Flatt Security Inc. Developing “Sunaba”
/ “Takumi Runner” TSKaigi 運営スタッフ seccamp ‘22 Bコース修了生 ミニキャンプ 2023 in 広島 講師
今日の流れ 「仮想化」とはなにか 仮想化の種類 ハイパーバイザーとVM 「プロセス」という仮想化 「プロセス」から「コンテナ」へ
「仮想化」とは何か
「仮想化」とはなにか 形容詞 ほぼ、あるいは非常に近い記述内容であり、わずかな違いは問題にならない。 (“virtual certainty” で「ほぼ確実」とか「事実上確実」) コンピュータソフトウェアの使用によって存在するように見せかけるもの。 例えばインターネット上など。 実体が存在する訳では無いが、実体との差が問題にならないレベルの何か (実質同じ)
自動翻訳の最後の難問 - https://wirelesswire.jp/2020/02/74267/
「仮想化」とはなにか 実体との差が 問題にならないレベルの何か
「仮想化」とはなにか 「実体」は何? 実体との差が 問題にならないレベルの何か
「仮想化」とはなにか 物理的に存在するコンピューターとの 差が問題にならないレベルの何か
「仮想化」とはなにか 物理的に存在するコンピューターとの 差が問題にならないレベルの何か 誰目線?いつの話?
「仮想化」とはなにか プログラムが動いているときに 物理的に存在するコンピューターとの 差が問題にならないレベルの何か
「仮想化」とはなにか プログラムが動いているときに 物理的に存在するコンピューターとの 差が問題にならないレベルの何か 何?
「仮想化」とはなにか プログラムが動いているときに 物理的に存在するコンピューターとの 差が問題にならないレベルの 実行環境
「仮想化」とはなにか プログラムが動いているときに 物理的に存在するコンピューターとの 差が問題にならないレベルの 実行環境を実現する技術 仮想化技術
仮想化の種類
コンピューターの超ざっくり雰囲気 メモリ領域が 200 MiB 欲しい プログラム RAM のうち 領域Aを割り当てる OS
ハードウェア 領域Aに都度データが 書き込まれる
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) プログラム1 プログラム2 ・ ・ ・ ・ プログラムN OS
CPU メモリ ネットワーク インターフェース 外部記憶装置
「仮想化」とはなにか プログラムが動いているときに 物理的に存在するコンピューターとの 差が問題にならないレベルの 実行環境
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) プログラム1 プログラム2 ・ ・ ・ ・ プログラムN OS
↓これら↑の依存に問題が生じなければOK CPU メモリ ネットワーク インターフェース 外部記憶装置
どうやって実現するか
コンピューターの超ざっくり雰囲気 メモリ領域が 200 MiB 欲しい プログラム RAM のうち 領域Aを割り当てる OS
ハードウェア 領域Aに都度データが 書き込まれる
コンピューターの超ざっくり雰囲気 この2箇所に仮想化技術を挟む余地がある! OS プログラム ハードウェア
コンピューターの超ざっくり雰囲気 この2つが現代の 主要な仮想化技術 プロセス/コンテナ ハイパーバイザー/VM OS プログラム ハードウェア
ハイパーバイザーとVM
コンピューターの超ざっくり雰囲気 メモリ領域が 200 MiB 欲しい プログラム RAM のうち 領域Aを割り当てる OS
ハードウェア 領域Aに都度データが 書き込まれる
ハイパーバイザー メモリ領域が 200 MiB 欲しい プログラム RAM のうち 領域Aを割り当てる OS
ハイパー バイザー ハードウェア 領域αに都度データ が書き込まれる 領域Aは 物理的には領域αだよ
ハイパーバイザー 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 仮想 ハードウェア プログラム
プログラム ・ ・ ・ ・ プログラム Guest OS 1 Guest OS 2 ・ ・ ・ ・ Guest OS N 物理リソースを 良い感じに 各 Guest OS へ 割り振る 物理的には ひとつの ハードウェア
「仮想化」とはなにか 実体との差が 問題にならないレベルの何か
ハイパーバイザー 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 仮想 ハードウェア プログラム
プログラム ・ ・ ・ ・ プログラム Guest OS 1 Guest OS 2 ・ ・ ・ ・ Guest OS N 物理リソースを 良い感じに 各 Guest OS へ 割り振る 物理的には ひとつの ハードウェア
VM プログラム プログラム プログラム Virtual Machine(VM) ・ ・ ・ ・
Guest OS 1 Guest OS 2 Guest OS N ・ ・ ・ ・ 仮想 ハードウェア 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 物理的には ひとつの ハードウェア
コンピューターの超ざっくり雰囲気 物理コンピューター プログラム OS ハードウェア 同じ依存 VM プログラム Guest OS
仮想 ハードウェア
補足: ハイパーバイザーの種類
ハイパーバイザー(Type-1) 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー Type-1 仮想 ハードウェア
ハードウェアの上で 直接動いている 物理的には ひとつの ハードウェア プログラム プログラム ・ ・ ・ ・ プログラム Guest OS 1 Guest OS 2 ・ ・ ・ ・ Guest OS N
ハイパーバイザー(Type-2) 仮想 ハードウェア 仮想 ハードウェア OS ハイパー バイザー Type-2 仮想
ハードウェア プログラム プログラム ・ ・ ・ ・ プログラム Guest OS 1 Guest OS 2 ・ ・ ・ ・ Guest OS N 物理的には ひとつの ハードウェア OSの上で 動いている
ところで
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) プログラム1 プログラム2 ・ ・ ・ ・ プログラムN OS
CPU メモリ ネットワーク インターフェース 外部記憶装置
ハイパーバイザー VM VM プログラム VM プログラム プログラム ・ ・ ・
Guest OS 1 Guest OS 2 Guest OS N ・ ・ ・ 仮想 ハードウェア 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 物理的には ひとつの ハードウェア
かなり似ていそう
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) OS 複数のプログラムが並列で動いても リソースが競合したり、影響がなるべく 他のプログラムへ影響がでないようにする CPU メモリ ネットワーク インターフェース
外部記憶装置 プログラム1 プログラム2 ・ ・ ・ ・ プログラムN
ハイパーバイザー VM VM プログラム VM プログラム プログラム ・ ・ ・
Guest OS 1 Guest OS 2 Guest OS N ・ ・ ・ 仮想 ハードウェア 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 物理的には ひとつの ハードウェア 物理リソースを 良い感じに 複数の Guest OS へ割り振る
OS自体が仮想化を行っている
プロセス(Prosess) という仮想化
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) プログラム1 プログラム2 プログラムN ・ ・ ・ ・ 仮想リソース
仮想リソース 仮想リソース CPU メモリ ネットワーク インターフェース 外部記憶装置 プロセス (Process)
OS は何をしているか? ひとつのCPUコアにつき、処理できる演算はひとつまで では1コアCPUではひとつのプログラムしか実行できないのか → 否、プロセスとして各プログラムでひとつのCPUコアを共有している プロセスからみると、ひとつのCPUコアを独占しているように見える(仮想化) プロセス1 プロセス2 OS目線
実行 準備完了 Disk I/O 待ち 実行 準備完了 実行 ネットワーク待ち Disk I/O 待ち プロセス1目線 実行
コンピューターの超ざっくり雰囲気 ハードウェア(いわゆるPC) プログラム1 プログラム2 プログラムN ・ ・ ・ ・ 仮想リソース
仮想リソース 仮想リソース CPU メモリ ネットワーク インターフェース 外部記憶装置 プロセス (Process)
プロセスをコンテナへ
「プロセス」は隔離性が薄い ハードウェア(いわゆるPC) プログラム1 プログラム2 プログラムN ・ ・ ・ ・ 影響あり
仮想リソース 仮想リソース 仮想リソース OS CPU メモリ ネットワーク インターフェース 外部記憶装置
コンテナ ハードウェア(いわゆるPC) プログラム1 プログラム2 プログラムN ✗ ・ ・ ・ ・
影響 不可 ✗ コンテナ 仮想リソース 仮想リソース 仮想リソース OS CPU メモリ ネットワーク インターフェース 外部記憶装置
プロセスをより隔離するために プロセスはリソース効率を主軸に、そのために最低限必要な隔離のみ行っている プロセス1はプロセス2の存在を認知できるし、影響を与えることが出きる プロセスを完全に隔離するために、Linux では以下のコンセプトが存在する 名前空間(Namespace) 一番わかりやすい隔離、各リソースを仕切る壁のようなもの cgroup CPU やメモリなどのリソース利用率を制限する
Capabilities root権限を細分化したもの Secure Computing Mode(seccomp) syscall の呼び出しを制限する LSM を活用した Mandatory Access Control(MAC) 厳格なファイルアクセス制御
コンテナ ハードウェア(いわゆるPC) プログラム1 プログラム2 プログラムN ✗ ・ ・ ・ ・
影響 不可 ✗ コンテナ 仮想リソース 仮想リソース 仮想リソース OS CPU メモリ ネットワーク インターフェース 外部記憶装置
まとめ
「VM」と「コンテナ」 VM VM プログラム プログラム Guest OS Guest OS 仮想
ハードウェア 仮想 ハードウェア ハイパー バイザー コンテナ コンテナ プログラム プログラム 仮想リソース 仮想リソース OS カーネル 物理 ハードウェア 物理 ハードウェア
何を共有しているか VM プログラム VM プログラム Guest OS Guest OS 仮想
ハードウェア 仮想 ハードウェア ハイパー バイザー 高難易度 物理 ハードウェア 物理 ハードウェア コンテナ コンテナ プログラム プログラム 仮想リソース 仮想リソース OS カーネル
こういうこともできる VM VM プログラム コンテナ コンテナ プログラム プログラム 仮想リソース 仮想リソース
Guest OS 1 Guest OS 2 仮想 ハードウェア 仮想 ハードウェア ハイパー バイザー 物理的には ひとつの ハードウェア
今日のまとめ プログラムが動いているときに物理的に存在するコンピューター上で 実行するときとの差が問題にならないレベルの実行環境を準備する技術 仮想化の種類には「VM」と「コンテナ」が存在する 「VM」と「コンテナ」では共有するものが違っている 「コンテナ」の基礎である「プロセス」も仮想化技術のひとつ