当前位置: 首页 > article >正文

【计科】从操作系统到虚拟化技术(进程调度,内存映射,设备IO,文件、网络管理)

【计科】操作系统基础与虚拟化技术拓展的关系(进程调度,内存映射,设备IO,文件、网络管理)

文章目录

    • 1、进程管理与调度机制(计算)
    • 2、内存管理与双重映射
    • 3、设备管理与IO机制
    • 4、文件管理
    • 5、网络与进程通信
    • 6、总结

虚拟化技术本质上是基于 操作系统核心机制(如进程管理、内存管理、设备IO管理等) 的高级应用,现代操作系统也越来越多地集成虚拟化功能以支持云计算、容器化等场景。

1、进程管理与调度机制(计算)

系统调用与特权级的扩展

  • 操作系统基础:操作系统通过特权级(如Ring 0/3)保护内核空间,用户程序通过系统调用访问硬件。
  • 虚拟化技术
    • 传统虚拟化依赖二进制翻译或陷入-模拟(Trap-and-Emulate)处理Guest OS的特权指令。
    • 硬件辅助虚拟化(如Intel VT-x)引入“Root/Non-Root”模式,Hypervisor运行在更高特权级(Ring -1)。
  • 关系:虚拟化扩展了操作系统的特权级架构,实现安全隔离。

联系

  • 操作系统的进程调度器通过时间片轮转、优先级调度等算法分配CPU资源。
  • 虚拟化Hypervisor将每个虚拟机视为一个“超级进程”,需要在物理CPU上调度虚拟CPU(vCPU),可能嵌套使用宿主操作系统的调度策略(如KVM基于Linux的CFS调度器)。
  • 虚拟化将操作系统的进程调度逻辑提升到虚拟机级别,需解决公平性、优先级反转等问题

操作系统

  • 进程调度:时间片轮转、优先级调度、多级队列等算法。
  • 上下文切换:保存和恢复进程状态(寄存器、页表等)。
  • 多核并发:CPU亲和性、负载均衡。

虚拟化

  • vCPU调度:Hypervisor将每个虚拟机的vCPU作为宿主机的“进程”调度
    • 公平性:防止一个VM独占物理CPU(如Xen的Credit调度器)。
    • 隔离性:CPU份额限制(如KVM的cgroups/cpu)。
    • NUMA优化:虚拟机vCPU与物理NUMA节点的绑定。
  • 嵌套虚拟化:Guest OS内再运行Hypervisor,需多层调度(如Windows Hyper-V on KVM)。
  • 轻量级虚拟化:容器(如Docker)直接复用宿主OS的进程管理,通过namespace隔离进程视图。

实践

  • 对比传统进程调度与vCPU调度的异同。
  • 分析KVM或Xen的调度器源码(如kvm/kvm_main.c中的调度逻辑)。

参考项目:KVM、Xen

  • kvm, linux-kvm
    KVM(Kernel-based Virtual Machine)Linux内核模块,提供硬件辅助虚拟化。
    基于Intel VT-x/AMD-V扩展,将Linux内核转变为Hypervisor。
    核心功能:
    负责CPU和内存虚拟化,依赖QEMU处理I/O和设备模拟。
    支持嵌套虚拟化、热迁移(Live Migration)。
    优势:
    性能接近原生(因直接复用Linux调度、内存管理等机制)。
    集成于主流Linux发行版(如Ubuntu、RHEL)。
  • xen
    核心功能:
    支持全虚拟化(硬件辅助)和半虚拟化(修改Guest OS内核)。
    独特的“Dom0/DomU”架构:Dom0特权虚拟机管理其他DomU客户机。
    广泛用于云计算(如AWS早期EC2实例)。
    优势:
    高隔离性和安全性(常用于军事、金融领域)。
    支持实时性要求高的场景(如嵌入式系统)。

参考:1,

进程管理概念复习

  • 进程与线程
    考点1 程序的顺序执行、并发执行、多道程序设计
    考点2 进程的定义
    考点3 进程的状态与转换
    考点4 进程控制块与进程控制
    考点5 线程的基本概念及线程的实现机制
    考点6 进程调度算法

  • 进程同步与互斥
    考点1 进程的同步、互斥、临界区
    考点2 信号量及P、V操作
    考点3 经典的进程同步问题
    考点4 管程的概念、组成、条件变量
    考点5 进程通信的三种方式

  • 死锁
    考点1 死锁的定义、产生的原因、产生的必要条件
    考点2 死锁预防
    考点3 死锁避免
    考点4 死锁检测与解除
    考点5 资源分配图

  • 操作系统运行环境
    考点1 处理器相关的概念
    考点2 存储器的类型
    考点3 中断的概念、中断系统
    考点4 中断优先级、中断屏蔽与中断嵌套
    考点5 系统调用概念、与函数调用区别、分类

  • 进程管理
    5.1 进程、线程基础知识
    5.2 进程间有哪些通信方式?
    5.3 多线程冲突了怎么办?
    5.4 怎么避免死锁?
    5.5 什么是悲观锁、乐观锁?
    5.6 一个进程最多可以创建多少个线程?
    5.7 线程崩溃了,进程也会崩溃吗?
    6.1 进程调度/页面置换/磁盘调度算法

  • 硬件结构与CPU
    2.1 CPU 是如何执行程序的?
    2.2 磁盘比内存慢几万倍?
    2.3 如何写出让 CPU 跑得更快的代码?
    2.4 CPU 缓存一致性
    2.5 CPU 是如何执行任务的?
    2.6 什么是软中断?
    2.7 为什么 0.1 + 0.2 不等于 0.3 ?
    在这里插入图片描述
    在这里插入图片描述

2、内存管理与双重映射

联系

  • 操作系统通过分页、分段、TLB等机制管理物理内存。
  • 虚拟化引入二次地址转换(如Intel EPT、AMD NPT),将Guest OS的虚拟地址→Guest物理地址→宿主物理地址,由Hypervisor或硬件MMU完成映射。
  • 虚拟化依赖操作系统的内存管理机制,同时需处理隔离性(如内存气球技术)和性能开销(如影子页表优化)

操作系统

  • 分页/分段:虚拟地址到物理地址的转换(页表、TLB)。
  • 页面置换:LRU、工作集算法。
  • 共享内存:进程间通信机制。

虚拟化

  • 二次地址转换
    • 软件方案:影子页表(Shadow Page Table),由Hypervisor维护Guest虚拟→物理→宿主物理的映射。
    • 硬件辅助:Intel EPT/AMD NPT,硬件自动完成GVA→GPA→HPA转换。
  • 内存超售(Overcommit)
    • 气球驱动(Ballooning):动态回收Guest OS内存(如virtio-balloon)。
    • 透明大页(THP):减少TLB失效开销。
  • 内存隔离:SEV(Secure Encrypted Virtualization)加密VM内存,防止宿主机窥探。

实践

  • 理解EPT/NPT的硬件机制(参考Intel手册Volume 3, Chapter 28)。
  • 使用QEMU命令-mem-path观察内存分配行为。

参考项目:KVM、Xen、QEMU、Cloud Hypervisor

  • QEMU
    核心功能:
    模拟多种CPU架构(x86、ARM、RISC-V等)和外部设备(网卡、磁盘、GPU等)。
    支持动态二进制翻译(TCG模式),无需硬件虚拟化辅助即可运行虚拟机。
    与KVM结合时(qemu-kvm),利用硬件加速实现高性能虚拟化。
    应用场景:
    跨平台开发(如在x86主机上模拟ARM环境)。
    作为KVM的用户态组件,处理设备模拟和I/O。
  • Cloud Hypervisor
    核心功能:
    基于Rust编写,强调安全性和性能。
    集成Virtio和VFIO设备支持,去除了传统虚拟化的冗余功能。
    优势:
    与Kubernetes生态兼容(如KubeVirt)

内存管理概念复习

  • 存储管理
    考点1 存储体系、存储管理的任务、地址转换
    考点2 可变分区基本思想、紧缩技术空闲分区分配策略、分区管理方案的优缺点
    考点3 覆盖技术、交换技术
    考点4 虚拟存储技术以及虚拟页式存储管理
    考点5 转换检测缓冲区(TLB)
    考点6 页面调度策略
    考点7 页面置换算法
    考点8 虚拟页式存储管理的优缺点

3、设备管理与IO机制

硬件抽象层

  • 操作系统:通过硬件抽象层(HAL)管理物理资源(CPU、内存、设备),为应用程序提供统一的接口(如系统调用)。
  • 虚拟化:虚拟化(如Type-1 Hypervisor)直接接管硬件抽象层,或通过宿主操作系统(Type-2 Hypervisor)间接访问硬件,创建多个隔离的虚拟机(VM),每个VM运行独立的客户操作系统(Guest OS)。
  • 关系:虚拟化扩展了操作系统的硬件抽象能力,实现资源的逻辑分割和多实例化。

联系

  • 操作系统 通过设备驱动和中断机制管理外设
  • 虚拟化
    • 全虚拟化:Hypervisor模拟虚拟设备(如QEMU虚拟网卡),截获Guest OS的I/O请求并转发到物理设备。
    • 半虚拟化:Guest OS使用优化驱动(如virtio)直接与宿主通信,减少陷入(trap)开销。
    • 硬件辅助:Intel VT-d/AMD-Vi支持DMA直接映射,绕过软件模拟。
  • 关系:虚拟化复用操作系统的设备驱动模型,同时需解决性能瓶颈和隔离问题。

操作系统

  • 设备驱动:内核模块与硬件交互(如网卡驱动)。
  • 中断处理:上半部/下半部(软中断)。
  • DMA:直接内存访问减少CPU开销。

虚拟化

  • I/O虚拟化模型
    • 全虚拟化:QEMU模拟设备(如e1000网卡),性能低。
    • 半虚拟化:virtio协议,Guest使用专用驱动(如virtio-net)与宿主通信。
    • 硬件辅助:SR-IOV(单根I/O虚拟化),物理设备直接暴露给VM。
  • 中断虚拟化
    • APIC虚拟化:虚拟中断控制器(如KVM的kvm-irqfd)。
    • 中断重映射:Intel VT-d防止DMA攻击。

实践

  • 实现一个简单的virtio设备(参考《QEMU/KVM源码分析与实战》)。
  • 测试SR-IOV网卡的吞吐量(如iperf3对比virtio-net和VF直通)。

参考项目:Virtio、QEMU、Xen、KVM

  • Virtio-win, Virtio-win-download
    半虚拟化I/O框架。
    核心功能
    提供虚拟设备标准(网卡virtio-net、磁盘virtio-blk、GPUvirtio-gpu等)。
    Guest OS安装驱动后直接与Hypervisor通信,减少陷入(trap)开销。
    与QEMU/KVM深度集成,是现代虚拟化的I/O性能优化关键。
    应用场景
    云虚拟机的高效I/O(如OpenStack、Kubernetes的KubeVirt)。

IO管理概念复习

  • 磁盘高速缓存及RAID
    第八章 I/O设备管理
    考点1 I/O设备的概念、分类、I/O设备管理的任务
    考点2 I/O硬件和软件组成、设备独立性
    考点3 四种I/O设备控制方式
    考点4 设备分配原则、策略、独占设备的分配
    考点5 移臂调度算法及旋转调度优化
    考点6 信息的优化分布
    考点7 缓冲技术
    考点8 SPOOLing技术

4、文件管理

操作系统

  • 文件系统:Ext4、NTFS的存储结构、缓存(Page Cache)、一致性(fsync)。
  • 磁盘调度:I/O合并、CFQ/Deadline算法。

虚拟化

  • 虚拟磁盘镜像
    • 格式:QCOW2(写时复制)、RAW(直接映射)。
    • 快照:基于COW(Copy-on-Write)的增量保存。
  • 存储虚拟化
    • 块设备透传:直接分配物理磁盘(如VFIO)。
    • 分布式存储:Ceph/RBD为虚拟机提供共享存储。
  • 容器存储:联合文件系统(OverlayFS)实现镜像分层。

实践

  • 使用qemu-img创建和管理QCOW2镜像,分析其元数据结构。
  • 对比虚拟机与容器的文件隔离机制(如OverlayFS vs. 虚拟磁盘)

文件管理概念复习

  • 文件系统
    考点1 文件及文件系统的定义
    考点2 外存储设备的存储介质及存取方式、文件分类
    考点3 文件的逻辑结构和物理结构
    考点4 文件控制块及三种文件目录
    考点5 磁盘空间管理及分配回收算法
    考点6 典型的文件操作和典型的目录操作

5、网络与进程通信

网络与进程间通信(IPC)

  • 操作系统的IPC
    • 管道、共享内存、Socket通信。
  • 虚拟化
    • 虚拟网络:Libvirt通过Linux网桥或OVS实现虚拟机间通信,复用宿主机的网络栈(如TCP/IP协议栈)。
    • 容器网络:LXC使用veth pairnetwork namespace隔离网络视图。
    • Xen的Grant Table:半虚拟化下Guest与Hypervisor共享内存的机制。
  • 关键
    • 虚拟化网络本质是操作系统网络栈的延伸

6、总结

操作系统与虚拟化技术的关系

  • 理解两者的关系有助于设计更高效的虚拟化方案(如混合半虚拟化)、优化嵌套虚拟化性能,或开发轻量级容器运行时(如gVisor)。
    随着云原生和边缘计算的普及,操作系统与虚拟化的协同创新(如Firecracker微VM)将持续演进。
  • 虚拟化开发技术可视为操作系统基础能力的纵向拓展
    向下:虚拟化深化硬件资源的管理粒度(如vCPU、虚拟设备)。
    向上:操作系统为虚拟化提供底层支持(如KVM依赖Linux内核模块)。

操作系统模块与虚拟化技术对应

操作系统模块虚拟化技术对应代表项目虚拟化带来的变化
进程管理vCPU调度、嵌套虚拟化KVM, Xen, Firecracker两级调度、隔离性增强
内存管理二次地址转换、内存超售KVM, QEMU, Cloud Hypervisor增加转换层级、硬件辅助(EPT/NPT)
文件系统虚拟磁盘镜像、联合文件系统QEMU, LXC, Kata隔离性(加密镜像)、性能优化(virtio-fs)
I/O管理设备虚拟化、中断虚拟化Virtio, QEMU, KVM半虚拟化(virtio)、硬件直通(VFIO)
特权级Hypervisor模式(Ring -1)KVM, Xen硬件辅助(VT-x/SVM)
网络/IPC虚拟网络设备、网络命名空间Libvirt, LXC软件定义网络(OVS)、隔离性(namespace)

虚拟化学习路线

  • 1、实验1
    通过修改Linux内核模块(如调度器)加深理解。
    使用QEMU/KVM创建虚拟机,分析/proc/kvmvirsh命令。
    阅读Xen/KVM的架构文档(如KVM官方Wiki)。
    研究KVM如何通过/dev/kvm接口暴露操作系统的硬件虚拟化能力
    分析QEMU设备模拟代码(如hw/block/virtio-blk.c)与Linux块设备驱动的交互
  • 2、实验2
    实现一个微型Hypervisor(参考《Writing a Simple x86 Hypervisor》)。 1
    使用strace跟踪虚拟机启动时的系统调用,观察QEMU与KVM的协作流程。
    通过perf分析virtio-net的I/O性能瓶颈。
    参与开源项目(如Firecracker、Kata Containers)。
    对比Xen半虚拟化和KVM全虚拟化在内存管理上的实现差异(如页表切换频率)
    学习容器编排(Kubernetes)如何基于OS/虚拟化技术(如runc调用namespaces)。
  • 3、书籍论文
    《Operating Systems: Three Easy Pieces》 1
    《系统虚拟化:原理与实现》- Intel Press
    《现代操作系统》- Andrew Tanenbaum(重点第1、5、8章)
    《Xen and the Art of Virtualization》(SOSP 2003)
    《kvm: the Linux Virtual Machine Monitor》(OLS 2007)

参考

  • 1-期末操作系统
  • 2-408操作系统
  • 3-coding操作系统
  • 4-从零开始编写一个操作系统
  • 5-13180/02326考试操作系统 2 3

http://www.kler.cn/a/611714.html

相关文章:

  • 地图(死亡细胞)
  • 基于Python的自然语言处理系列(60):使用 LangChain 构建 Multi-Vector Retriever 进行文档检索
  • C#:类型定义中使用‌问号(?)
  • CSS 如何设置父元素的透明度而不影响子元素的透明度
  • HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App
  • 网站漏洞多、排名低?Scrutiny 一键化解
  • 【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望
  • cesium中label样式修改为圆角
  • BFS解决最短路径问题(使用BFS解决最短路径问题的黄金法则)
  • 内嵌式触摸显示器在工业视觉设备中的应用
  • 使用JavaAPI操作HDFS
  • 青少年编程与数学 02-011 MySQL数据库应用 19课题、存储引擎
  • 如何避免需求文档与研发实现“两张皮”
  • localhost 和 127.0.0.1 的区别
  • 机器学习模型部署:使用Flask 库的 Python Web 框架将XGBoost模型部署在服务器上(简单小模型)从模型训练到部署再到本地调用
  • mac m4 Homebrew安装MySQL 8.0
  • Java 多线程编程之 RejectedExecutionHandler 线程池拒绝策略
  • Redis的基础,经典,高级问题解答篇
  • ④(上网管理行为-ACG)主备/主主
  • 11:00开始面试,11:08就出来了,问的问题有点变态。。。