Ref: https://learn.cantrill.io/courses/1820301/lectures/41301314
OS Virtualization - Key Concept
- ๐งย Def: process of running more than one OS on a piece of physical HW or server, without the system crashing
- History: (i) no virtualization โ (ii) software virtualization (emulation & para-virtualization) โ (iii) hardware virtualization (HW assisted & SR-IOV)
- Amazon EC2 is IaaS (Infrastructure-as-a-Service), which is essentially Virtualization-as-a-Service, or VM-aaS in AWS
OS Virtualization - Historic Evolution
Traditional Infrastructure (No Virtualization)
Diagram: https://github.com/acantril/aws-sa-associate-saac03/blob/main/0900-ELASTIC_COMPUTE_CLOUD(EC2)/00_LEARNINGAIDS/Virtualization101-1.png
- Kernel
- Small, core part of the OS
- Runs in privileged mode โ can directly interact with HW
- Applications
- Run in user mode (unprivileged mode) โ can't directly interact with HW
- Need to go through OS to interact with HW โ System calls to kernel
- If a non-kernel app tries to directly interact with HW โ system-wide error
- Crash of app or even whole system
First Attempt at OS Virtualization
Diagram: https://github.com/acantril/aws-sa-associate-saac03/blob/main/0900-ELASTIC_COMPUTE_CLOUD(EC2)/00_LEARNINGAIDS/Virtualization101-2.png
- First attempt: use different OSs to run different types of HW
- ๐ย Problem: system crashes
- (back then) CPU could only have one thing running in privileged mode
- All OSes (in unmodified state) expect to be running in privileged mode
Emulated Virtualization