Linux课程总结报告

一、结合虚拟化技术分析Linux系统的一般执行过程

在虚拟化技术中,Linux系统的一般执行过程与非虚拟化环境下有所不同。在虚拟化环境下,Linux系统运行在虚拟机(VM)中,而不是直接在物理硬件上运行。

下面是在虚拟化环境下的Linux系统的一般执行过程:

  • 用户态进程X在VM中运行,并占用CPU资源。

  • 当用户态进程X需要进行阻塞操作(如等待I/O操作完成)或者CPU时间片用完时,VM会将虚拟CPU的控制权转移给VMM(虚拟机管理器)。

  • VMM会检查当前虚拟机中是否有其他进程处于就绪状态,如果有,则使用进程调度算法选择下一个进程(如进程Y),并将虚拟CPU的控制权转移给进程Y。

  • 从进程X到进程Y的切换涉及到虚拟CPU的上下文切换。具体而言,VMM需要保存进程X的虚拟CPU上下文(如寄存器的状态、内存映射表等信息),并将进程Y的虚拟CPU上下文加载到虚拟CPU中,以便进程Y能够继续运行。

  • 进程Y开始运行,占用虚拟CPU资源。

  • 当进程Y需要进行阻塞操作或者CPU时间片用完时,控制权再次转移给VMM,然后VMM执行步骤3-5,选择并切换到下一个就绪进程。

  • 在虚拟化环境下,中断也会引起虚拟CPU上下文的切换。例如,当进程X发起系统调用时,VMM会在虚拟CPU上触发一个中断,将控制权转移给VMM中的虚拟中断处理程序。VMM在中断处理程序中完成必要的工作后,将虚拟CPU上下文切换到进程Y的上下文,使其能够继续运行。

上述过程中用到如下这些虚拟化技术:

  • CPU的虚拟化

CPU 的虚拟化在实现上可以分为全虚拟化、半虚拟化和硬件辅助虚拟化。其中全虚拟化和半虚拟化都是软件实现,也就是 VMM(Virtual-Machine Monitor)是纯软件实现。全虚拟化实现方式在客户虚拟机执行特权指令时需要通过 VMM 进行异常捕获、二进制翻译 BT(Binary Translation)和模拟执行;半虚拟化实现方式需要修改客户虚拟机操作系统的特权指令,改为通过 Hypercall 调用 VMM 来处理特权指令,无需异常捕获与模拟执行。硬件辅助虚拟化的实现方式是 VMM 与 Inter-VT、AMD-V 等硬件辅助虚拟化技术相配合提供在性能和运行环境上都更加逼真的虚拟机环境。

  • 内存的虚拟化

内存虚拟化是将 Guest 上的虚拟内存地址 GVA(Guest Virtual Address)转换为 Guest 上的物理内存地址 GPA(Guest Physical Address),进一步再转换为 Host 上的物理内存地址 HPA(Host Physical Address )。
没有硬件辅助虚拟化之前,VMM 为每个 Guest 维护一份影子页表(Shadow Page Table),通过软件维护 GVA、GPA 到 HPA 的映射,由于内存访问与更新频繁导致影子页表的维护复杂,运行开销大影响虚拟机的性能。
硬件辅助内存虚拟化技术是 CPU 引入硬件辅助内存虚拟化页表,作为 CPU 内存管理单元 MMU 的扩展,通过硬件来实现 GVA、GPA 到 HPA 的转换。首先 Guest 通过页表寄存器将 GVA 转换为 GPA,然后查询硬件辅助内存虚拟化页表将 GPA 转换为 HPA。
CPU 还使用 TLB 缓存虚拟地址到物理地址的映射,地址转换时 CPU 先根据 GPA 查找 TLB,如果未找到映射的 HPA,将根据页表中的映射填充 TLB,再进行地址转换,从而通过高速缓存 TLB 加速内存虚拟化的地址转换。

  • I/O的虚拟化

在虚拟化环境中,Guest 的 I/O 操作需要经过特殊处理才能在底层 I/O 设备上执行。KVM 支持多种 I/O 虚拟化技术,比如全虚拟化的设备模拟与半虚拟化的 virtio 驱动都是通过软件实现的 I/O 虚拟化;比如设备直通 PCI Pass-through、设备共享 SR-IOV(Single Root-IO Virtualization)、数据平面开发工具集 DPDK(Data Plance Development Kit)与存储性能开发工具集 SPDK(Storage Performace Development Kit)等硬件辅助 I/O 虚拟化技术。

二、课程总结

本课程基于Linux 5.4.34系统内核,让我们深入理解了Linux系统的系统调用、进程切换、可执行程序工作原理等。带我们制作内存根文件系统,配置VSCode调试Linux内核,从start_kernel始跟踪linux内核的启动;以 time/gettimeofday 系统调用为例分析ARM64 Linux 5.4.34;深入理解了进程切换的原理,了解了__schedule()、context_switch()等关键函数的作用;了解了虚拟化技术,以及虚拟化技术下 Linux 系统的一般执行过程。

学号:134

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值