首页 > 编程语言 >qemu是用python写的吗

qemu是用python写的吗

时间:2024-11-05 19:45:18浏览次数:7  
标签:python qemu 虚拟机 KVM -- QEMU 模拟器

一、QEMU简介

QEMU是法布里斯·贝拉在Linux内核上写的一个CPU模拟器,这套开放源码的模拟器软件与Bochs、PearPC近似,但具有后两者所不具备的高速度及跨平台等特性。QEMU可以在不同的机器上运行独自开发的操作系统与软件,经由KQEMU这个开源的加速器,能模拟至接近真实电脑的速度。QEMU构思巧妙, 效率极高, 在借助核心态的KQEMU加速器之后,模拟代码的执行速度甚至能够接近真实机器。QEMU已成为目前使用最广泛的模拟器,KVM和Google Android的模拟器都是基于QEMU的。

QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。

用户可以通过不同Linux发行版所带有的软件包管理器来安装QEMU。如在Debian系列的发行版上可以使用下面的命令来安装:

sudo apt-get install qemu

或者在红帽系列的发行版上使用如下命令安装:

sudo yum install qemu -y

除此之外,也可以选择从源码安装。

获取QEMU源码

可以从QEMU官网上下载QEMU源码的tar包,以命令行下载2.0版本的QEMU为例:

$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$tar xjvf qemu-2.0.0.tar.bz2

如果需要参与到QEMU的开发中,最好使用Git获取源码:

$git clone git://git.qemu-project.org/qemu.git

编译及安装

获取源码后,可以根据需求来配置和编译QEMU。

$cd qemu-2.0.0 //如果使用的是git下载的源码,执行cd qemu
$./configure --enable-kvm --enable-debug --enable-vnc --enable-werror  --target-list="x86_64-softmmu"
$make -j8
$sudo make install

configure脚本用于生成Makefile,其选项可以用./configure --help查看。这里使用到的选项含义如下:

--enable-kvm:编译KVM模块,使QEMU可以利用KVM来访问硬件提供的虚拟化服务。
--enable-vnc:启用VNC。
--enalbe-werror:编译时,将所有的警告当作错误处理。
--target-list:选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可。

二、基本原理

QEMU作为系统模拟器时,会模拟出一台能够独立运行操作系统的虚拟机。如下图所示,每个虚拟机对应主机(Host)中的一个QEMU进程,而虚拟机的vCPU对应QEMU进程的一个线程。

d0f12980a5cc4a42ca4b3ad1039ab4e.png

QEMU结构图

系统虚拟化最主要是虚拟出CPU、内存及I/O设备。虚拟出的CPU称之为vCPU,QEMU为了提升效率,借用KVM、XEN等虚拟化技术,直接利用硬件对虚拟化的支持,在主机上安全地运行虚拟机代码(需要硬件支持)。虚拟机vCPU调用KVM的接口来执行任务的流程如下(代码源自QEMU开发者Stefan的技术博客):

open("/dev/kvm")
ioctl(KVM_CREATE_VM)
ioctl(KVM_CREATE_VCPU)
for (;;) {
     ioctl(KVM_RUN)
     switch (exit_reason) {
     case KVM_EXIT_IO:  /* ... */
     case KVM_EXIT_HLT: /* ... */
     }
}

QEMU发起ioctrl来调用KVM接口,KVM则利用硬件扩展直接将虚拟机代码运行于主机之上,一旦vCPU需要操作设备寄存器,vCPU将会停止并退回到QEMU,QEMU去模拟出操作结果。

虚拟机内存会被映射到QEMU的进程地址空间,在启动时分配。在虚拟机看来,QEMU所分配的主机上的虚拟地址空间为虚拟机的物理地址空间。

QEMU在主机用户态模拟虚拟机的硬件设备,vCPU对硬件的操作结果会在用户态进行模拟,如虚拟机需要将数据写入硬盘,实际结果是将数据写入到了主机中的一个镜像文件中。

标签:python,qemu,虚拟机,KVM,--,QEMU,模拟器
From: https://blog.csdn.net/hakesashou/article/details/143524214

相关文章

  • python urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is co
    pythonurllib3v2onlysupportsOpenSSL1.1.1+,currentlythe‘ssl’moduleiscompiledwith‘LibreSSL2.8.3’问题解决。我在用python3.9执行脚本时出现一个warning的错误,如下:/Users/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35:Not......
  • 基于Python Tkinter和Calendar模块实现:个人日历应用
    1.项目概述本项目旨在开发一个基本的个人日历应用,帮助查看日历、添加和管理个人事件。该应用基于Python的tkinter图形界面库和calendar模块,能够动态展示一个月的日历,并允许在指定日期添加事件。通过该应用,可以在日历上直观地查看每个月的安排,方便管理日常事务。2.技术栈与......
  • Python编程风格:EAFP防御
    在Python编程的世界里,有一种非常重要的编程风格,称为“EAFP”(EasiertoAskforForgivenessthanPermission,意为“请求宽恕比请求许可更容易”)。这一风格与许多其他编程语言中的常见做法形成了鲜明对比。在这篇博文中,我们将深入探讨EAFP的概念,包括其历史背景、基本原则、在实......
  • 计算机毕业设计Python+大模型新能源汽车销量预测 汽车销量分析可视化 汽车爬虫 深度学
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 2024最新Python安装教程+Pycharm安装教程【附安装包】
    Python安装1.首先下载好Python安装包获取方式:点击这里(扫描神秘②薇码免下载)完全免费!!!2.打开安装包,先勾选最下面两个选项,再选择第二个自定义安装3.这里默认全选,点击next4.这里勾选图中选项,然后在电脑选择一个位置存放Python(不建议安装到C盘),最后点击Install就可以了 P......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园疫情大学生防控出入系统等问题,对校园疫情大学生防控出入系统进行研究分析,然后开发设计......
  • 计算机毕业设计项目推荐,高校学生社团管理系统 00498(开题答辩+程序定制+全套文案 )上万
    摘要随着计算机科学技术的日渐成熟,人们已经深刻地认识到了计算机在各个领域中发挥的功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。目前学校学生社团的管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • python实现简单计算器
    需求使用python的tkinter库实现简单的加减乘除计算器程序,并展示界面程序效果代码实现importtkinterastkclassCalculator:def__init__(self,master):self.master=mastermaster.title("计算器")#创建显示屏self.disp......
  • *Python*滞后回归模型——自回归模型 (AR)
    目录⭐️引言⭐️理论1、基本概念:2、自回归模型的数学表达式:3、模型的构建4、平稳性检验5、模型选择6、模型拟合7、模型诊断8、模型应用9、结语⭐️引言        什么是自回归模型(AR):简要介绍自回归模型的概念及其在时间序列分析中的重要性。⭐️理论   ......