• 2024-06-08minos 0 前(废)言(话)
    -首发公号:Rand_csminos0前(废)言(话)从今天开始开启一个新的系列,讲述虚拟化的那些事儿。时隔上次发文又隔了好几个月了,主要是平时工作比较忙,没太多时间精力维护博客之类的。前一个系列SELinux没写完,但也不算太监,比较重要的基本都介绍了。剩下的就是Linux中关于SELinux
  • 2024-06-08minos 1.1 内存虚拟化——hyp
    首发公号:Rand_csminos1.1内存虚拟化——hyp内存虚拟化,目前理解主要两方面:内存管理,没有虚拟化的情况时,对于Linux内核运行在物理硬件之上,内核需要管理物理内存,需要管理进程的虚拟内存。类似,type1类型的hypervisor/minos运行在物理硬件上,minos需要对物理内存管理,需要对
  • 2024-06-08minos 1.2 内存虚拟化——guest
    首发公号:Rand_csminos1.2内存虚拟化——guest项目来自乐敏大佬:https://github.com/minosproject/minos本文继续讲述minos中的内存虚拟化中关于guest的部分,主要弄清楚一个问题,minos如何管理guestvm的内存。对于虚拟机的内存管理主要是ipa的管理,ipa如何映射到
  • 2024-06-08minos 2.1 中断虚拟化——ARMv8 异常处理
    首发公号:Rand_cs越往后,交叉的越多,大多都绕不开ARMv8的异常处理,所以必须得先了解了解ARMv8的异常处理流程先说一下术语,从手册中的用词来看,在x86平台,一般将异常和中断统称为中断,在ARM平台,一般将中断和异常统称为异常异常的流程,可以分为3个阶段,“设备”产生异常信号,中
  • 2024-06-08minos 2.3 中断虚拟化——GICv2 管理
    首发公号:Rand_cs硬件肯定需要软件配合,这一节就来实战GICv2首先准备好GICv2手册:https://developer.arm.com/documentation/ihi0048/bb/?lang=en,对于硬件的管理,最底层的操作就是读写硬件的寄存器,所以这里准备好手册,随时查阅手册//gicv2.cstaticvoid*gicv2_dbase;stat
  • 2024-06-08minos 2.2 中断虚拟化——异常处理流程
    首发公号:Rand_cs上一节讲述了ARMv8异常模型,很多理论,这一节来看一个实际的例子,来看看minos中的异常处理流程异常向量表直接来看minos的异常向量表,很多事情就明了了:elx_vectors:c0sync://CurrentELwithSP0BAD_MODEVECTOR_C0_SYNC.balign0x80c0ir
  • 2024-06-08minos 2.5 中断虚拟化——vGIC
    首发公号:Rand_cs这一节开始讲述真正的中断虚拟化,首先来看硬件方面的虚拟化。前文minos2.3中断虚拟化——GICv2管理主要讲述GICv2的Distributor和CPUInterface,在Hypervisor存在的情况下,它们都是为Hypervisor服务的。现在有了vm,vm里面的内核也需要操作GIC,怎么
  • 2024-06-08minos 2.6 中断虚拟化——虚拟中断子系统
    首发公号:Rand_csHypervisor需要对每个虚机的虚拟中断进行管理,这其中涉及的一系列数据结构和操作就是虚拟中断子系统VIRQ虚拟中断描述符structvcpu{uint32_tvcpu_id;.........../**membertorecordtheirqlistwhichthe*vcpuishandlingn
  • 2024-06-08minos 2.4 中断虚拟化——中断子系统
    首发公号:Rand_cs前面讲述了minos对GICv2的一些配置和管理,这一节再往上走一走,看看minos的中断子系统中断中断描述符/**ifairqishandledbyminos,thenneedtoregister*theirqhandlerotherwiseitwillreturnthevnum*tothehandlerandpassthe