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
Big Buddha
March 21, 2026
Technology
390
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
810
Security という英単語から考えるサイバーセキュリティ
oldbigbuddha
0
74
seccamp 2022 online 体験記+α
oldbigbuddha
0
200
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
530
Other Decks in Technology
See All in Technology
20260722_品質と開発生産性の相互作用
magicpod
0
130
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
390
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
1
160
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
390
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
230
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
140
Pavlokで始める電撃駆動開発
sgrsn
0
170
QAタスクをスキル化したいときに考えること
aomoriringo
0
170
モバイルアプリ開発概論2026
recruitengineers
PRO
1
150
Digitization部 紹介資料
sansan33
PRO
2
7.7k
制約理論(ToC)入門 2026版
recruitengineers
PRO
2
160
ブラウザ研修 2026
recruitengineers
PRO
3
190
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
How GitHub (no longer) Works
holman
316
150k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
240
Rails Girls Zürich Keynote
gr2m
96
14k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
320
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
YesSQL, Process and Tooling at Scale
rocio
174
15k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
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」と「コンテナ」では共有するものが違っている 「コンテナ」の基礎である「プロセス」も仮想化技術のひとつ