Software execution Environments
~Process, virtual machine, and container
May 15, 2020
Kanazawa.rb meetup #93
Satoru Takeuchi
(twitter: satoru_takeuchi, EnSatoru)
1
Slide 2
Slide 2 text
Without process
2
program
hardware
access
Slide 3
Slide 3 text
Process with primitiv kernels like poor embedded system
3
Process
hardware
access
Process
access
〇
〇
kernel
access
〇
〇
access
Slide 4
Slide 4 text
Process with modern kernels like Linux and NT kernel
4
kernel
hardware
process
①Requests with system calls
● File access
● Hardware access
● Inter process communication
②access
access
×
×
access
〇
〇
process
Slide 5
Slide 5 text
Virtual machine (qemu + kvm)
5
kernel
hardware
Process for virtual machine
Virtual hardware
kernel
プロセス
プロセス
process
①trap
③request
④request
access
×
②
Slide 6
Slide 6 text
Container (with Linux’s namespace)
6
kernel
hardware
Container
プロセス
プロセス
process
Container
プロセス
process
×access
Slide 7
Slide 7 text
Two types of containers
7
System container
(for full featured OS environment)
Application container
(for only one application like Docker container)
container
Environment for all apps
container
app
app
Environment for an app
app
Slide 8
Slide 8 text
Security risks
● The required steps to attack other process
8
kernel kernel
hardware hardware
container
プロセス
プロセス
process
Virtual machine container
Virtual machine
Virtual hardware
kernel
process
①
process
①
process
②
②
③ ④
Slide 9
Slide 9 text
Various container runtimes
● System call steps
9
runC(basic way) Kata Containers gVisor
Namespace
app
kernel
VM
app
kernel
kernel
app
Userland
kernel
kernel
hardware
① ②
① ②
①
②
④
③
⑤