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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Big Buddha
March 21, 2026
Technology
52
0
Share
現代を支える仮想化の仕組み @ 情報科学若手の会・セキュリティ若手の会 春の陣2026
TBD
Big Buddha
March 21, 2026
More Decks by Big Buddha
See All by Big Buddha
実装がすべてではない、開発者の周りから考える Web プロダクトセキュリティ
oldbigbuddha
2
790
Security という英単語から考えるサイバーセキュリティ
oldbigbuddha
0
66
seccamp 2022 online 体験記+α
oldbigbuddha
0
190
Minecraft のサーバーを サクッと準備したい
oldbigbuddha
0
220
フィンランドで体験したICT教育
oldbigbuddha
0
2.4k
Lesson 2: C言語に触れてみる
oldbigbuddha
0
190
Lesson 1: プログラミングとは
oldbigbuddha
0
240
Lesson 0: レッスンを始める前に
oldbigbuddha
0
140
Fuelで幸せフエル?/ Fuel make me happy?
oldbigbuddha
0
520
Other Decks in Technology
See All in Technology
Javaで学ぶSOLID原則
negima
1
130
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
320
権限管理設計を完全に理解した
rsugi
2
210
キャリア25年目にしてTypeScript に出会うまで - 「型」を通じて振り返るプログラミング言語遍歴 / Meeting TypeScript After 25 Years in Tech - Looking Back at My Programming Language Journey Through "Types"
bitkey
PRO
2
280
AIAgentと取り組むKaggle
508shuto
2
590
なぜハノーバーメッセに行くべきなのか 〜初参加だから語れること〜
tanakaseiya
0
120
RubyでRuby拡張を書いたらRubyより35倍速になったってどういうこと??
kazuho
3
620
Splunk MCPサーバの利活用事例 ーKINTOテクノロジーズの取り組み
kintotechdev
1
320
論文紹介:Pixal3D (SIGGRAPH 2026)
tenten0727
0
740
AI時代に求められる思考のパラダイムシフト
nrinetcom
PRO
1
150
AIコーディングエージェントの活用で、コードは静かに肥大化した
yosukeshinoda
1
370
責任あるソフトウェアエンジニアリングの紹介4章・5章 / RSE_Ch4-5
ido_kara_deru
0
340
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
Raft: Consensus for Rubyists
vanstee
141
7.4k
The SEO Collaboration Effect
kristinabergwall1
1
460
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
240
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Test your architecture with Archunit
thirion
1
2.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
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」と「コンテナ」では共有するものが違っている 「コンテナ」の基礎である「プロセス」も仮想化技術のひとつ