Presentation is loading. Please wait.

Presentation is loading. Please wait.

系统虚拟化 厉肖 161220076.

Similar presentations


Presentation on theme: "系统虚拟化 厉肖 161220076."— Presentation transcript:

1 系统虚拟化 厉肖

2 从进程虚拟化到系统虚拟化 在一个操作系统上运行多个应用程序:虚存抽象+系统中断 在一个物理硬件上运行多个操作系统
为此,每个程序遵循统一的规范 二进制接口(ABI),操作系统API,操作系统规约 程序在操作系统上作为一个进程运行。 在一个物理硬件上运行多个操作系统 虚拟机(VirtualBox等) 容器(Docker等) 用软件虚拟硬件,在此之上安装操作系统 共享内核

3 为什么需要虚拟化? 硬件资源复用,在一个物理机上使用不同操作系统的功能(例如在Windows上开发Android应用),或者将一个物理机给多人共享使用(例如服务器上的VPS(Virtual Private Server 虚拟专用服务器)技术)。 系统环境隔离(在虚拟机上修改内核或者测试安全漏洞,而不希望宿主机收到影响)。

4 虚拟化:实现

5 虚拟化:CONTAINERS 在Linux上运行Docker:docker容器和宿主机共享Linux kernel。宿主机通过隔离容器不让它看到主机的文件系统,进程系统,内存系统等。 在Windows和Mac OS上运行Docker:通过boot2docker( )启动一个虚拟Linux kernel,所有的docker容器都运行在这个kernel上。 文件系统隔离,资源隔离,命名空间,网络隔离,联合文件系统

6 虚拟化:CONTAINERS 进程&线程 与 fork&clone(进程隔离)
在每一次docker run或者docker start的时候都会创建新的namespace man 2 clone: 把自身pid 印射为0,并看不到其他任何的pid,这样自身的pid成为系统内唯一存在pid,看起来就像新启动了系统  clone是Linux为创建线程设计的(虽然也可以用clone创建进程)。所以可以说clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等等。clone和fork的调用方式也很不相同,clone调用需要传入一个函数,该函数在子进程中执行。此外,clone和fork最大不同在于clone不再复制父进程的栈空间,而是自己创建一个新的。

7 虚拟化:CONTAINERS 网络隔离:网络地址转换(NAT)

8 Guest binary instructions
虚拟化:VIRTUAL MACHINES 我们的PA是一个很好的例子 以QEMU为例:TCG(Tiny Code Generator) 动态翻译 使用类似CPU缓存的技术加速 在NEMU中,每一条指令都经历了漫长的过程 取指令、译码、执行(寄存器, 内存, I/O, ...)、异常、中断 相比native, 数百倍的性能损失 Guest binary instructions TCG IR Host binary instructions

9 Reference What is a container? docker.com 应用程序虚拟化的过去与未来 M. Jones 操作系统-系统虚拟化:虚拟机与容器 --蒋炎岩 Operating-system-level virtualization --Wikipedia Docker快速入门之原理篇 --EnjoyMoving


Download ppt "系统虚拟化 厉肖 161220076."

Similar presentations


Ads by Google