操作系统概念——保护、安全性和虚拟机

第十四章 保护
这里的保护主要指的是系统内部各对象间使用的保护和资源权限控制.
一个通用的Mechanism模型是访问矩阵(如何保护),好处是概念上与Policy(保护什么)完全独立.
但很多系统实现都相对简单,如一种简化的访问矩阵实现是角色组控制,
而且主要集中在用户、内存、文件系统等方面.
也有一些系统从硬件到应用(编译器)都有响应的保护策略.
内核中运行级别ring0-ring7的概念源自MULTICS, Linux应该就只有内核态和用户态的区分.
除系统外程序语言级别上的保护更精细,如VM提供类型安全、class保护和运行栈检测等特性.

第十五章 安全性
主要侧重点是运在行不安全的环境和存在外部威胁,内容比较宽泛,包括信息安全和主机攻防等各方面:
威胁:缓冲区溢出、病毒、窃听、篡改、中间人、重放、DDOS、弱密码、钓鱼等.
措施:端口扫描、加密、身份验证、数据完整性、防火墙、杀毒软件、动态密码、日志和审计等.

第十六章 虚拟机
16.1 概览
虚拟机的思想是将单机硬件抽象成多个独立运行环境,每个环境运行时看起来就是独占硬件的.
每个环境内运行的软件一般就是运行操作系统和其上的应用,即虚拟机.
VMM:Virutal Machine Manager,提供host一致接口,管理各虚拟机.
虚拟机有多种类型和实现方式:
a) Type 0 Hypervisors:硬件层提供VMM,一般见于大型机和服务器.
b) Type 1 Hypervisors:专用VMM操作系统,如VMWare ESX,Xen.
c) 通用的操作系统,但其一部分提供VMM支持,一般也归为Type 1.
d) VMM做为host OS的普通应用,如VMWare WorkStation和Virtual Box.
e) 参数化VM,需要修改Guest OS以配合VMM.
f) 编程语言运行环境,如JVM.
g) 仿真,运行非本平台构建的程序.
h) 应用容器,提供应用间隔离和方便运维,如Docker.

16.2 历史
虚拟机起源于IBM大型机,初衷是虚拟多个单用户系统利用机器资源.
虚拟机的几个目标:
1) 提供与真机等同的环境.
2) 其内运行的程序只有少量的性能下降.
3) VMM完全控制系统资源.
随着80x86的发展其上的虚拟化技术逐渐完善,支持的平台和Guest OS种类很多.

16.3 好处和特性
单机可方便地多套系统;guest和host环境是隔离的,无需额外保护.
另外可以方便地挂起、恢复、快照、克隆和迁移系统,状态管理方便.
虚拟机还能很好地用于开发和调试操作系统新特性,以及降低升级等时间成本.
还可以将多台的低利用率系统集中到同一台机器以提高资源利用率.
相关特性包括模块化统一管理、热迁移、标准化运维、云计算基础支持等.

16.4 功能构建单元
要实现虚拟机一般至少需要少量硬件支持,在其上有一些基本功能构建单元实现.
VMM一般会维护一个Virutal CPU保存和切换Guest的cpu状态.
1) Trap-and-Emulate
针对只只支持内核和用户态的cpu,VMM运行在用户态,当Guest执行特权指令时,
会产生一个error以及Trap到VMM,后者代理(模拟)完成后,再返回Guest继续执行.
trap-and-emulate
一些CPU开始直接支持guest mode,因此Trap-and-Emuate和VCPU相对弱化了.

2) 二进制翻译
一些平台的特权指令界限不清晰,如x86的popf在内核态和用户态都能执行,但行为不同,
因此无法产生Trap进而使用Trap-and-Emulate.
针对这类特殊指令VMM在虚拟内核态执行时会预先检查Guest接下来的指令,
如果是特殊指令则由VMM翻译执行. VMWare通过缓存加速判断过程.
进来硬件发展的支持也已经基本不需要二进制翻译了.

3) 嵌套页表(NTPs)
VMM维护的用于Guest状态的内存页表,概念可类比VCPU.
当Guest修改其内部页表时,VMM也对NTPs做相应的修改.
VMM负责修改cpu页表相关寄存器的指向,并拦截Guest页表操作.
NTPs的引入会降低TLB的命中率.

4) 硬件支持
虚拟机会尽量使用硬件相关特性来实现.
如Intel和AMD的cpu会提供专门的guest和host mode,提供guest数据结构的切换.
又如NTPs的硬件支持,自动遍历guest的页表和VMM两层页表.
IO方面有对DMA的虚拟化支持,即数据直接在DMA内存和设备间传输,而无VMM干涉.
中断方面硬件提供remapping特性,直接递交到guest线程所在的cpu,也不需要经过VMM了.
嵌套页表遍历示意图:
nested_page_tables

16.5 各类虚拟机及其实现
1) Type-0 Hypervisor
在固件级别提供虚拟化管理功能,硬件划分给每个系统专用,一般跑的系统数量不多.
cpu和内存可以简单隔离划分,IO资源方面需要一定的共享和路由机制.
一些高级虚拟机提供动态分配cpu和内存等资源,需要guest做相应修改配合.
Type-0虚拟机上的Guest可以是本地操作系统也可以是其他Type-1 VMM.

2) Type-1 Hypervisor
Type-1虚拟机多见于数据中心,是一类专门管理Guest的OS,直接控制硬件.
一般提供多cpu模式供Guest自行控制和运行以提升性能.
另一类是提供相关功能的通用操作系统,如RedHat Linux with KVM.
这类系统中Guest一般作为普通进程对待,但额外提供特权指令执行的相关机制.

3) Type-2 Hypervisor
VMM作为应用程序执行,host OS不知道虚拟化的存在.
由于权限等问题,硬件特性的使用限制较多,总体性能相比前2者差一些.
好处是灵活支持的guest种类很多.

4) 参数虚拟化
抽象出来的虚拟硬件不完全和host相同,guest系统需要相应的修改.
好处是更高的资源利用率和相对较轻的虚拟化层.
如Xen不使用嵌套页表,guest要修改页表时通过hypercall通知VMM.
Type-0中也使用了参数虚拟化技术.

5) 编程语言虚拟化
如JVM. 在安全性和内存管理等方面提供了自身的机制.

6) 仿真
虚拟机一般和host运行的程序是同一处理器架构下的,
而仿真是指在host上运行别的架构下的程序,通过指令级翻译.
基本上就是用软件实现一套cpu. 如游戏模拟器,直接运行原始rom.

7) 应用容器
有些需求场景仅仅是希望隔离同一平台的各个应用,使得部署、迁移、性能等管理方便.
这类情况下虚拟化的对象不是硬件,而是操作系统,使用系统提供的应用容器即可满足.
如Solaris的zone和Linux下的Docker应用.

16.6 虚拟化和操作系统组件.
1) CPU调度
当物理cpu足够时,每个guest可以简单地独占cpu.
当虚拟cpu比物理cpu多时,VMM需要进行调度并保证一定的公平性.
但guest本身的调度可能受到影响如进程时间片实际被拉长了.
因此可能影响到guest内程序的响应时间,需要一个应用安装在guest里,
用于不断调整系统时间和其他虚拟设备方面的管理.

2) 内存管理
虚拟机分配的内存可能超出实际内存,VMM需要相应的优化:
一是利用嵌套页表来二次映射guest的内存位置,如磁盘,而对guest透明.
该措施可能会影响到guest的页表优化策略,因而有其他方法时尽量不使用.
二是为每个guest安装虚拟驱动内核模块,用于和VMM通信.
当为guest分配内存时,该模块将一定量的内存锁定,guest看到内存紧张会触发
页回收以维护一定量的空闲内存,而锁定的内存可被VMM用于其他guest.
这样就同时做到了内存分配和利用guest自身的页表分配策略,效果较好.
当系统总体空闲内存恢复时,将这部分内存归还并解锁给原guest使用.
三是guest间共享页表内存,由VMM发现并管理.

3) IO
在IO方面一般虚拟机抽象出来的资源概念要比cpu和内存弱.
不同guest利用IO的方式多种多样,一般会采用驱动模块来虚拟出设备.
guest可直接与IO设备通信,也可利用抽象驱动通过VMM与实际驱动交互.
直接访问设备的好处是性能高,如Type-0虚拟机.
对Type-1和Type-2虚拟机,直接访问要求硬件支持DMA、中断等虚拟化特性.
网卡方面需要为每个guest分配IP,guest和host关系可以是桥接和NAT两种.
桥接:为guest分配的IP和host在同一网络,对外界对等.
NAT:host为guest提供NAT路由服务,NAT地址与host在统一网络.

4) 存储管理
Type-0虚拟机可以为guest做真正的root分区因为guest数量较少.
其他虚拟机一般将内核文件存储为host系统的文件,这样对复制、迁移很方便.

5) 热迁移
虚拟机能做到在不断网络下的热迁移,对登录用户基本无影响:
live_migration
网络不中断是通过MAC地址重新绑定到新guest实现的.
注意一般为了防止大量copy,常采用网络FS作为存储,因而迁移不需要考虑磁盘,加速了迁移过程.
热迁移方便了数据中心和云的管理,如自动均衡,容灾等.

16.7 虚拟机举例
VMWare Workstation: 属于type-2虚拟机,磁盘采用本地文件模拟.
JVM:Java运行环境,提供类型安全、堆栈安全检查、垃圾回收等高级管理机制.

第十七章 分布式系统
分布式系统指的是不共享时序、内存等本地资源的松散异构结点的集合的协作系统.
在每个结点看来,一些资源是非本地的. 结点间一般通过bus或者网络通信.

这里的分布式主要侧重在网络和基本概念,因此没有提到CAP等分布式专门领域概念.

17.1 分布式系统优势
a) 资源共享
b) 高性能
c) 高可靠,容错
d) 分布式协作和通信

17.2 网络操作系统类型
a) 网络操作系统:用户显示地使用远端资源,如ssh, ftp等.
b) 分布式操作系统:系统封装远端资源,在用户看来与本地一致.
几个常见特性:数据迁移/计算迁移/进程迁移和分发

17.3 网络结构
主要分为LAN和WAN两大类.

17.4 通信结构
命名空间:分布式系统中每个进程有一个结点地址和进程编号,如ip:port.
DNS用于主机名到IP地址的查询,本身也是分布式的,每个公司自行管理其下的子域名.
路由策略:固定路由/虚拟路由/动态路由
链接策略:电路交换/消息交换/分组交换

17.5 通信协议
OSI七层协议模型,概念清晰,主要是参考意义.

17.6 TCP/IP
实际工业协议,分层不如OSI清晰,但实际效果较好.
IP: 负责网络间的路由和数据传输
ARP:负责子网内IP到MAC定位.

17.7 健壮性
如通过心跳来发现问题和采取相应措施.
通过容错来实现高可靠.

17.8 设计考虑
如网络通信对用户透明以及可伸展性(增加结点可以等比例提升性能).

17.9 分布式文件系统
client、server和存储设备分散在系统各处.

文件命名策略:
位置透明:文件名不包括物理位置信息.
位置无关:物理位置变化时文件名不改变.

远程文件访问:使用本地缓存已提升性能.
缓存可由client自行管理或者由server通知(如lease同步机制).

发表评论

电子邮件地址不会被公开。