SlideShare a Scribd company logo
1 of 183
Download to read offline
#DevoxxFR
Initiation concrète
à la virtualisation
Samuel Ortiz @sameo
Julien Durillon @juuduu
Pierre-Antoine Grégoire @zepag
1
#DevoxxFR 2
Disclaimeur
#DevoxxFR 3
Introduction et généralités
#DevoxxFR 4
Virtualisation
Virtualisation
5
App
OS
HARDWARE
6
App
App App
OS
OS OS
HARDWARE
HARDWARE
HYPERVISEUR
Virtualisation
Virtualisation: intérêt
7
Mutualisation / Optimisation
Virtualisation: intérêt
8
Mutualisation / Optimisation
9
App 1 App 2
OS 1 OS 2
HARDWARE
HYPERVISEUR 1
Virtualisation: intérêt
Souplesse et Disponibilité
HARDWARE
HYPERVISEUR 2
1
0
App 1 App 2
OS 1 OS 2
HARDWARE
HYPERVISEUR 1
Virtualisation: intérêt
Souplesse et Disponibilité
HARDWARE
HYPERVISEUR 2
App 2
OS 2
HARDWARE
HYPERVISEUR 1
App 1
OS 1
HARDWARE
HYPERVISEUR 2
1
1
Virtualisation: accélération
commodity hardware
1
2
Virtualisation: accélération
commodity hardware
1
3
Virtualisation: accélération
commodity hardware cpu performance increase
Nombre
de Transistors
Temps
Oui il n’y a pas d'échelle… ce n’est qu’une illustration ;)
#DevoxxFR 14
CPU
#DevoxxFR 15
CPU
0 1 0 1
1 0 0 1 Octet (byte)
0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1
0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 0 1
Mot (word)
8 bits
64 bits
Instruction
Adresse
Donnée (nombre, texte…)
OU
OU
#DevoxxFR 16
CPU
Memory
(e.g. RAM)
CPU
Instruction ou Donnee
#DevoxxFR 17
CPU
LD: Charger un nombre depuis la RAM dans le CPU
MOV: Stocker un nombre venant du CPU dans la RAM
ADD: Faire l’addition de 2 nombres
CMP: Comparer les 2 opérandes
JMP: Sauter à une autre adresse
OUT: Ecrire sur un port d'entrée/sortie
IN: Lire depuis un port d'entrée/sortie
…et des centaines d’autres
INSTRUCTION SET (Specifique a chaque architecture):
CPU
Fetch
Decode
Execute
Fetch-Decode-Execute
Memory
(e.g. RAM)
CPU
Fetch-Decode-Execute
Memory
(e.g. RAM)
0xba, 0xf8, 0x03,
0x00, 0xd8,
0x04, '0',
0xee,
0xb0, 'n',
0xee,
0xf4,
CPU
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
CPU
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
FETCH
CPU
Fetch
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
decode(mov $0x3f8, %dx)
CPU
Decode
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
decode(mov $0x3f8, %dx)
-> Copier 0x3f8 dans le registre DX
CPU
Decode
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
execute(Copier 0x3f8 dans le registre DX)
CPU
Execute
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
CPU
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
FETCH
CPU
Fetch
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
FETCH
CPU
Fetch
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
decode(add $'0', %al)
CPU
Decode
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
execute(add $'0', %al)
CPU
Execute
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
CPU
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
FETCH
CPU
Fetch
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx))
CPU
Decode
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
execute(out %al, (%dx))
CPU
Execute
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
Serial port
execute(out %al, (%dx))
CPU
Execute
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
Serial port
execute(out %al, (%dx))
WRITE
CPU
Execute
Fetch-Decode-Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
DX: 0xf38
AX: ‘4’
Serial port
execute(out %al, (%dx))
WRITE
Privileged I/O Instruction
CPU
Execute
Virtualisation Hardware?
Mode spécifique du processeur (VMX)
Exécution restreinte et supervisée de certaines parties du code (Les VMs)
Pour chaque VM:
● Certaines instructions ne sont pas exécutées par le processeur (Trap)
● Délégation à un superviseur logiciel (a.k.a. hyperviseur)
● Trapper une instruction est un cas d’exception
● Exemple: CPUID
CPU
Fetch Decode Trap Emulate
Instructions de Virtualisation
CPU
VMXON
VMLAUNCH
VMRESUME
Instructions de Virtualisation
CPU
VMXON
VMLAUNCH
VMRESUME
… et quelques
autres:
vmwrite, vmread, vmclear,
vmptrld, vmptrRST,
vmfunc, vmcall,
INVEPT, INVVPID,
VMXOFF
Running a VM
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
CPU
Running a VM
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
CPU
Running a VM
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VMXON
CPU
VMXON
Running a VM
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VMLAUNCH
CPU
VMLAUNCH
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VMLAUNCH
Running a VM
CPU
VMLAUNCH
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VMLAUNCH
VM
Running a VM
CPU
VMLAUNCH
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
FETCH
Running a VM
CPU
Fetch
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
decode(mov $0x3f8, %dx)
Running a VM
CPU
Decode
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
decode(mov $0x3f8, %dx)
-> Copier 0x3f8 dans le registre DX
Running a VM
CPU
Decode
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
execute(Copier 0x3f8 dans le registre DX)
Running a VM
CPU
Execute
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
FETCH
Running a VM
CPU
Fetch
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx))
Running a VM
CPU
Decode
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
Running a VM
CPU
Decode
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
TRAP
Running a VM
CPU
Trap
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
VM-EXIT
information
Running a VM
CPU
Trap
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
emulate(out %al, (%dx))
Running a VM
CPU
Emulate
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
e.g. write %al to log file
Running a VM
CPU
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
decode(out %al, (%dx)) ⚠
VMRESUME
CPU
VMRESUME
mov $0x3f8, %dx
add %bl, %al
add $'0', %al
out %al, (%dx)
mov $'n', %al
out %al, (%dx)
hlt
Memory
(e.g. RAM)
Hypervisor
VM
DX: 0xf38
AX: ‘4’
FETCH
Running a VM
CPU
Fetch
#DevoxxFR
Pause: Des questions?
65
Mémoire Virtuelle
Abstraction de la mémoire physique
Illusion d’un espace d'adressage continu et très large
Un pointeur applicatif est un adresse virtuelle != physique
CPU Memory Management Unit (MMU) utilisé par le kernel
CPU
Virtual Memory
Memory
(e.g. RAM)
mov dx, [0x12345678]
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
FETCH
Fetch
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
decode(mov dx, [0x12345678])
Decode
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
decode(mov dx, [0x12345678])
-> Copie la valeur à l’adresse 0x12345678 dans le registre dx
Decode
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
decode(mov dx, [0x12345678])
-> Copie la valeur à l’adresse 0x12345678 dans le registre dx
Decode
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
decode(mov dx, [0x12345678])
-> Copie la valeur à l’adresse 0x12345678 dans le registre dx
Adresse Virtuelle
Decode
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
decode(mov dx, [0x12345678])
-> Copie la valeur à l’adresse 0x12345678 dans le registre dx
Adresse Virtuelle
Adresse Physique??
Decode
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
translate(0x12345678)
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
translate(0x12345678)
Memory
Management
Unit
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
translate(0x12345678)
Memory
Management
Unit
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
translate(0x12345678)
Memory
Management
Unit
0x12345678 is at 0xff005678
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
translate(0x12345678)
Memory
Management
Unit
0x12345678 is at 0xff005678
Adresse Physique
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
execute(mov dx, [0x12345678])
0xf00ba4f00 @0xff005678
Memory
Management
Unit
Execute
CPU
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
execute(mov dx, [0x12345678])
0xf00ba4f00 @0xff005678
Read @0xff005678
Memory
Management
Unit
CPU
DX: 0xf00ba4f00
Virtual Memory
mov dx, [0x12345678]
Memory
(e.g. RAM)
Memory
Management
Unit
0xf00ba4f00 @0xff005678
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
Page Tables
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
translate(0x2400)
Page Tables
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
translate(0x2400)
Page Tables
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
translate(0x2400)
TLB MISS
Page Tables
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
0xfc00
translate(0x2400)
TLB MISS
Page Tables
CPU
Virtual Memory
Memory
(e.g. RAM)
Memory
Management
Unit
Page Table
Adress
Virtual Physical
0x1200 0xf200
0x1840 0xf840
TLB
0xfc00
0x2400 is at 0xfc00
TLB MISS
Page Tables
CPU
#DevoxxFR
Pause: Des questions?
88
#DevoxxFR 89
RAM
RAM
9
0
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
CPU
RAM
RAM
9
1
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
RAM
RAM
9
2
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
RAM
RAM
9
3
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
0x00000
RAM
RAM
9
4
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
0x00000
RAM
TLB
PAGE HIT/MISS
...
RAM
9
5
Virtualisation “à l’ancienne”
SHADOW PAGE TABLES
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
0x00000
0x034b835
RAM
TLB
PAGE HIT/MISS
...
RAM
9
6
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
CPU
RAM
guest
virtual
host
physical
0x01000 0x034b835
RAM
9
7
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
CPU
WRITE
0x05000
→ 0xf2a15
RAM
guest
virtual
host
physical
0x01000 0x034b835
RAM
9
8
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
CPU
WRITE
0x05000
→ 0xf2a15
RAM
guest
virtual
host
physical
0x01000 0x034b835
READ
ONLY!
RAM
9
9
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
CPU
WRITE
0x05000
→ 0xf2a15
TRAP/VMEXIT
RAM
guest
virtual
host
physical
0x01000 0x034b835
READ
ONLY!
RAM
1
0
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
WRITE
0x05000
→ 0xf2a15
RAM
guest
virtual
host
physical
0x01000 0x034b835
READ
ONLY!
RAM
1
0
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
WRITE
0x05000
→ 0xf2a15
RAM
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
ONLY!
UPDATE
RAM
1
0
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
WRITE
0x05000
→ 0xf2a15
VMRESUME
RAM
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
ONLY!
UPDATE
RAM
1
0
Virtualisation “à l’ancienne”
SHADOW PAGE TABLE (write)
GUEST OS
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
VIRTUAL
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
CPU
WRITE
0x05000
→ 0xf2a15
VMRESUME
RAM
guest
virtual
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
READ
ONLY!
UPDATE
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
CPU
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
RAM
1
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
RAM
11
0
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
RAM
11
1
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
RAM
11
2
Virtualisation assistée par le hardware
Second-Layer Address Translation
GUEST OS
guest
Virtual
guest
Physical
0x01000 0xe19a8
0x05000 0xb018e
CPU
Guest
PHYSICAL
host
physical
0xe19a8 0x034b835
0xb018e 0xdeb1a78
RAM
Guest
Virtual
Guest
Physical
0x01000 0xe19a8
0x05000 0x28a7de
VMM
Guest
Physical
host
physical
0x01000 0x034b835
0x05000 0xdeb1a78
EPT/RVI
READ/WRITE
0x01000
0x034b835
#DevoxxFR
Pause: Des questions?
113
#DevoxxFR 114
I/O
Drivers
11
5
APP
OS
⚙ DRIVER
DEVICES :
PRINTER GPU
(nvidia, amd,
intel…)
Network
card
HARD DRIVE
I/O
Émulation
11
6
GUEST OS
⚙ DRIVER
VMM ??
TRAP
VMEXIT
I/O
Émulation
11
7
Exemple: ETHERNET
Nom Intel PRO/100
Débit max 100 Mbps
Interface PCI
I/O
hypervisor
Paravirtualisation
GUEST OS
GUEST
DRIVER
Hypervisor
DRIVER
TAP/TUN
device
I/O
Hypervisor
Paravirtualisation
GUEST OS
GUEST
DRIVER
Hypervisor
DRIVER
VIRTIO
Buffers
I/O
Paravirtualisation
GUEST OS
GUEST
DRIVER
I/O
Drivers spécifiques dans le système Guest
Paravirtualisation
GUEST OS
GUEST
DRIVER
guest tools
I/O
Drivers spécifiques dans le système Guest
Additions
Paravirtualisation
GUEST OS
GUEST
DRIVER
I/O
Drivers spécifiques dans le système Guest
Paravirtualisation
GUEST OS
GUEST
DRIVER
VIRTIO
I/O
Drivers spécifiques dans le système Guest
Paravirtualisation
GUEST OS
GUEST
DRIVER
VIRTIO
I/O
Drivers spécifiques dans le système Guest
U
PSTREAM
Assignment de devices
HV
GUEST OS
GUEST
DRIVER
DEVICE
I/O
Mémoire & Devices
Memory
(e.g. RAM)
Memory
Management
Unit
I/O
Mémoire & Devices
Memory
(e.g. RAM)
MMU
I/O
I/O
MMU
south bridge, on parle de Platform
Controller Hub (PCH), qui est
directement lie au core du
processeur. Mais la plupart des
gens qui ont ce genre de
connaissances sont surement
encore sur le terme de south
bridge...
Samuel Ortiz
10:20 AM Yesterday
Une derniere information:
Aujourd'hui toutes les distros
bootent le kernel avec l'IOMMU=on
pare defaut. Ce qui signifie que
tous les devices sont toujours
derriere l'IOMMU, qu'ils soit
assignes a une VM ou pas.
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
GPU
DRIVER
I/O
GPU
GUEST OS
GPU
DRIVER
HV OS
GPU
DRIVER
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
VFIO +
IOMMU
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
(Exemple)
~ $ qemu-kvm … 
-device vfio-pci,id=video,host=02:00.0,multifunction=on,x-vga=on 
-device vfio-pci,id=vidaudio,host=02:00.1,bus=pci.0
VFIO +
IOMMU
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
ESX / vmware
DIRECTPATH
I/O
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
GUEST OS
GPU
DRIVER
? VFIO +
IOMMU
I/O
Assignment de devices
GPU
GUEST OS
GPU
DRIVER
HV OS
GUEST OS
GPU
DRIVER
VFIO +
IOMMU
I/O
Assignment de devices
NIC
GUEST OS
HV OS
GUEST OS
I/O
Assignment de devices
NIC
GUEST OS
HV OS
GUEST OS
I/O
Assignment de devices
SR-IOV
NIC
GUEST OS
HV OS
GUEST OS
I/O
Assignment de devices
PF
SR-IOV
VF4
VF3
VF2
NIC
GUEST OS
HV OS
GUEST OS
I/O
VF1
Assignment de devices
PF
SR-IOV
VF4
VF3
VF2
NIC
GUEST OS
HV OS
GUEST OS
VFIO
I/O
VF1
Assignment de devices
PF
SR-IOV
VF4
VF3
VF2
NIC
GUEST OS
HV OS
GUEST OS
VFIO
I/O
VF1
Assignment de devices
PF
VFIO
SR-IOV
VF4
VF3
VF2
NIC
GUEST OS
NIC
DRIVER
HV OS
GUEST OS
NIC
DRIVER
VFIO
I/O
VF1
Assignment de devices
PF
VFIO
SR-IOV
VIRTIO
VIRTIO
GUEST OS
virtio DRV
GUEST
HV OS
GUEST OS
virtio DRV
GUEST
VFIO
I/O
VIRTIO
Assignment de devices
VFIO
virtio DRV
guest
#DevoxxFR
Pause: Des questions?
14
4
#DevoxxFR 145
HYPERVISEURS
HYPERVISEURS
HYPERVISEURS
HYPERVISEURS
+
HYPERVISEURS
+
virtualisation
CPU/ EPT
HYPERVISEURS
+
virtualisation
CPU/ EPT
Implémente le
device model
HYPERVISEURS
#DevoxxFR
Pause: Des questions?
15
2
#DevoxxFR 153
VMs vs. Containers
CPU RAM NET. STOR.
Containers
HOST LINUX KERNEL
CPU RAM NET. STOR.
Containers
HOST LINUX KERNEL
Container A
Process A
Filters:
- Seccomp
- MAC
- CAPs
namespaces
CPU RAM NET. STOR.
Containers
HOST LINUX KERNEL
Container A
Process A
Filters:
- Seccomp
- MAC
- CAPs
Container B
Process B
Filters:
- Seccomp
- MAC
- CAPs
namespaces namespaces
Containers
CPU RAM NET. STOR.
HOST LINUX KERNEL
Container A Container B Container C
Process A Process B Process C
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
namespaces namespaces namespaces
Containers
CPU RAM NET. STOR.
HOST LINUX KERNEL
Container A Container B Container C
Process A Process B Process C
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
namespaces namespaces namespaces
Kernel
Partagé
Containers
CPU RAM NET. STOR.
HOST LINUX KERNEL
Container A Container B Container C
Process A Process B Process C
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
namespaces namespaces namespaces
Kernel
Partagé
Contexte
d’exécution
Partagé
Containers
CPU RAM NET. STOR.
HOST LINUX KERNEL
Container A Container B Container C
Process A Process B Process C
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
Filters:
- Seccomp
- MAC
- CAPs
namespaces namespaces namespaces
Kernel
Partagé
Contexte
d’exécution
Partagé
Rapidité de
démarrage /
cycle de vie
facilité
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VMs
VM A
Processus A
CPU RAM NET. STOR.
GUEST
LINUX KERNEL
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B
Processus A Processus B
CPU RAM NET. STOR. CPU RAM NET. STOR.
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
Cycle de
vie lourd
/LENTEUR de
démarrage
HOST LINUX KERNEL
(HYPERVISOR)
VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
Cycle de
vie lourd
/LENTEUR de
démarrage
?
HOST LINUX KERNEL
(HYPERVISOR)
#DevoxxFR
Pause: Des questions?
16
9
#DevoxxFR 170
Containers in VMs
VM A VM B VM C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
Containers in VMs
Cycle de
vie lourd
/LENTEUR de
démarrage
?
VM Légère A VM Légère B VM Légère C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
Containers in VMs
VM Légère A VM Légère B VM Légère C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
Containers in VMs
Container A Container B Container C
VM Légère A VM Légère B VM Légère C
Processus A Processus B Processus C
CPU RAM NET. STOR. CPU RAM NET. STOR. CPU RAM NET. STOR.
Virtualisation du
HARDWARE
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
GUEST
LINUX KERNEL
Kernels
dédiés
HOST LINUX KERNEL
(HYPERVISOR)
Rapidité de
démarrage /
cycle de vie
facilité
Containers in VMs
Container A Container B Container C
Containers in VMs
VMs Légères (e.g. Firecracker)
Intégration avec CRI (Containerd, Kubernetes…)
RuntimeClass pour (par exemple) n’exécuter que
des payloads non trustées dans des conteneurs.
Containers in VMs Standard containers
Containers in VMs Standard containers
Containers in VMs
Intégration simplifiée
Standard containers
Containers in VMs Kubernetes
Kubernetes
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
POD
CONTAINER
POD
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
KERNEL
KubE. C. P. KubE. C. P.
Kubernetes control plane
Containers in VMs Kubernetes
Kubernetes
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
POD
CONTAINER
POD
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
KERNEL
Isolation through multiple KUBE NODES
Kubernetes control plane KubE. C. P. KubE. C. P.
Containers in VMs Kubernetes
Kubernetes
KERNEL
Kubernetes
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
POD
CONTAINER
POD
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
KERNEL
POD
CONTAINER
CONTAINER
KERNEL KERNEL
POD POD POD POD POD
KATA
VM
KATA
VM
KATA
VM
KATA
VM
KATA
VM
CONTAINER
CONTAINER
CONTAINER
CONTAINER CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
Isolation through multiple KUBE NODES
Kubernetes control plane KubE. C. P. KubE. C. P. Kubernetes control plane
Containers in VMs Kubernetes
Kubernetes
KERNEL
Kubernetes
KERNEL
POD
CONTAINER
CONTAINER
CONTAINER
POD
CONTAINER
POD
CONTAINER
CONTAINER
Kubernetes control plane
POD
CONTAINER
CONTAINER
CONTAINER
KubE. C. P.
POD
CONTAINER
CONTAINER
KubE. C. P. Kubernetes control plane
POD POD POD POD POD
KATA
VM
KATA
VM
KATA
VM
KATA
VM
KATA
VM
CONTAINER
CONTAINER
CONTAINER
CONTAINER CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
Multi-tenancy
Isolation through multiple KUBE NODES
#DevoxxFR
Merci! des questions?
18
3

More Related Content

What's hot

Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲吳錫修 (ShyiShiou Wu)
 
Preemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloudPreemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloudJiannan Ouyang, PhD
 
FreeBSD 2014 Flame Graphs
FreeBSD 2014 Flame GraphsFreeBSD 2014 Flame Graphs
FreeBSD 2014 Flame GraphsBrendan Gregg
 
Exploit Research and Development Megaprimer: Win32 Egghunter
Exploit Research and Development Megaprimer: Win32 EgghunterExploit Research and Development Megaprimer: Win32 Egghunter
Exploit Research and Development Megaprimer: Win32 EgghunterAjin Abraham
 
Mastering java in containers - MadridJUG
Mastering java in containers - MadridJUGMastering java in containers - MadridJUG
Mastering java in containers - MadridJUGJorge Morales
 
PerfUG 3 - perfs système
PerfUG 3 - perfs systèmePerfUG 3 - perfs système
PerfUG 3 - perfs systèmeLudovic Piot
 
Windows kernel debugging workshop in florida
Windows kernel debugging   workshop in floridaWindows kernel debugging   workshop in florida
Windows kernel debugging workshop in floridaSisimon Soman
 
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)Anne Nicolas
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)Gavin Guo
 
Jvm的最小使用内存测试
Jvm的最小使用内存测试Jvm的最小使用内存测试
Jvm的最小使用内存测试Zianed Hou
 
A Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningA Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningSuntae Kim
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesCharles Nutter
 
The Art of JVM Profiling
The Art of JVM ProfilingThe Art of JVM Profiling
The Art of JVM ProfilingAndrei Pangin
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
Java gpu computing
Java gpu computingJava gpu computing
Java gpu computingArjan Lamers
 
Windows kernel debugging session 2
Windows kernel debugging session 2Windows kernel debugging session 2
Windows kernel debugging session 2Sisimon Soman
 

What's hot (20)

Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲
 
Preemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloudPreemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloud
 
FreeBSD 2014 Flame Graphs
FreeBSD 2014 Flame GraphsFreeBSD 2014 Flame Graphs
FreeBSD 2014 Flame Graphs
 
Exploit Research and Development Megaprimer: Win32 Egghunter
Exploit Research and Development Megaprimer: Win32 EgghunterExploit Research and Development Megaprimer: Win32 Egghunter
Exploit Research and Development Megaprimer: Win32 Egghunter
 
Mastering java in containers - MadridJUG
Mastering java in containers - MadridJUGMastering java in containers - MadridJUG
Mastering java in containers - MadridJUG
 
PerfUG 3 - perfs système
PerfUG 3 - perfs systèmePerfUG 3 - perfs système
PerfUG 3 - perfs système
 
Windows kernel debugging workshop in florida
Windows kernel debugging   workshop in floridaWindows kernel debugging   workshop in florida
Windows kernel debugging workshop in florida
 
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)
Kernel Recipes 2016 - Understanding a Real-Time System (more than just a kernel)
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)
 
TVM VTA (TSIM)
TVM VTA (TSIM) TVM VTA (TSIM)
TVM VTA (TSIM)
 
Debugging TV Frame 0x09
Debugging TV Frame 0x09Debugging TV Frame 0x09
Debugging TV Frame 0x09
 
Jvm的最小使用内存测试
Jvm的最小使用内存测试Jvm的最小使用内存测试
Jvm的最小使用内存测试
 
TensorFlow XLA RPC
TensorFlow XLA RPCTensorFlow XLA RPC
TensorFlow XLA RPC
 
A Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningA Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep Learning
 
Process management
Process managementProcess management
Process management
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for Dummies
 
The Art of JVM Profiling
The Art of JVM ProfilingThe Art of JVM Profiling
The Art of JVM Profiling
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
Java gpu computing
Java gpu computingJava gpu computing
Java gpu computing
 
Windows kernel debugging session 2
Windows kernel debugging session 2Windows kernel debugging session 2
Windows kernel debugging session 2
 

Similar to Initiation concrète-à-la-virtualisation-devoxx-fr-2021

Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Nate Lawson
 
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...
D1 t2   jonathan brossard - breaking virtualization by switching to virtual 8...D1 t2   jonathan brossard - breaking virtualization by switching to virtual 8...
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...kbour23
 
Defcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop camDefcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop camPriyanka Aash
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Pluginsamiable_indian
 
Gameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyGameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyYodalee
 
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...Software Guru
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Keisuke Takahashi
 
[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory AnalysisMoabi.com
 
Filip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersFilip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersYury Chemerkin
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - RoutersLogicaltrust pl
 
BSides Denver: Stealthy, hypervisor-based malware analysis
BSides Denver: Stealthy, hypervisor-based malware analysisBSides Denver: Stealthy, hypervisor-based malware analysis
BSides Denver: Stealthy, hypervisor-based malware analysisTamas K Lengyel
 
[ENG] Hacktivity 2013 - Alice in eXploitland
[ENG] Hacktivity 2013 - Alice in eXploitland[ENG] Hacktivity 2013 - Alice in eXploitland
[ENG] Hacktivity 2013 - Alice in eXploitlandZoltan Balazs
 
Driver Debugging Basics
Driver Debugging BasicsDriver Debugging Basics
Driver Debugging BasicsBala Subra
 
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 modeMoabi.com
 
Playing 44CON CTF for fun and profit
Playing 44CON CTF for fun and profitPlaying 44CON CTF for fun and profit
Playing 44CON CTF for fun and profit44CON
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON
 
AMS Node Meetup December presentation Phusion Passenger
AMS Node Meetup December presentation Phusion PassengerAMS Node Meetup December presentation Phusion Passenger
AMS Node Meetup December presentation Phusion Passengericemobile
 
hacking-embedded-devices.pptx
hacking-embedded-devices.pptxhacking-embedded-devices.pptx
hacking-embedded-devices.pptxssuserfcf43f
 

Similar to Initiation concrète-à-la-virtualisation-devoxx-fr-2021 (20)

Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
 
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...
D1 t2   jonathan brossard - breaking virtualization by switching to virtual 8...D1 t2   jonathan brossard - breaking virtualization by switching to virtual 8...
D1 t2 jonathan brossard - breaking virtualization by switching to virtual 8...
 
Defcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop camDefcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop cam
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
Gameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyGameboy emulator in rust and web assembly
Gameboy emulator in rust and web assembly
 
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...
¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidade...
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
 
[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis
 
Filip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersFilip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routers
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - Routers
 
BSides Denver: Stealthy, hypervisor-based malware analysis
BSides Denver: Stealthy, hypervisor-based malware analysisBSides Denver: Stealthy, hypervisor-based malware analysis
BSides Denver: Stealthy, hypervisor-based malware analysis
 
[ENG] Hacktivity 2013 - Alice in eXploitland
[ENG] Hacktivity 2013 - Alice in eXploitland[ENG] Hacktivity 2013 - Alice in eXploitland
[ENG] Hacktivity 2013 - Alice in eXploitland
 
Driver Debugging Basics
Driver Debugging BasicsDriver Debugging Basics
Driver Debugging Basics
 
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode
[Ruxcon] Breaking virtualization by switching the cpu to virtual 8086 mode
 
Playing 44CON CTF for fun and profit
Playing 44CON CTF for fun and profitPlaying 44CON CTF for fun and profit
Playing 44CON CTF for fun and profit
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
 
Dev ops
Dev opsDev ops
Dev ops
 
Qemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System EmulationQemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System Emulation
 
AMS Node Meetup December presentation Phusion Passenger
AMS Node Meetup December presentation Phusion PassengerAMS Node Meetup December presentation Phusion Passenger
AMS Node Meetup December presentation Phusion Passenger
 
hacking-embedded-devices.pptx
hacking-embedded-devices.pptxhacking-embedded-devices.pptx
hacking-embedded-devices.pptx
 

More from Pierre-Antoine Grégoire

More from Pierre-Antoine Grégoire (6)

Linux meilleur-ami
Linux meilleur-amiLinux meilleur-ami
Linux meilleur-ami
 
Linux 101 slides-fr
Linux 101 slides-frLinux 101 slides-fr
Linux 101 slides-fr
 
Devoxx Devops University 2012
Devoxx Devops University 2012Devoxx Devops University 2012
Devoxx Devops University 2012
 
OSGi In A Nutshell
OSGi In A NutshellOSGi In A Nutshell
OSGi In A Nutshell
 
Introduction to project industrialization with Maven 2
Introduction to project industrialization with Maven 2Introduction to project industrialization with Maven 2
Introduction to project industrialization with Maven 2
 
Eclipse As An Ide Why Would You Need Wizards
Eclipse As An Ide Why Would You Need WizardsEclipse As An Ide Why Would You Need Wizards
Eclipse As An Ide Why Would You Need Wizards
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

Initiation concrète-à-la-virtualisation-devoxx-fr-2021