有没有制定那种如何制定企业标准准的翻译书籍了,想多多了解

其他 ( 自然科学、社会科学等 )

?  字數统计按文字处理软件的计数为依据采用中文“字符数”统计。

?  翻译完成的稿件可提供印刷服务从一册到上百册(手册类等)均可。

前台接待、展览会、简单交流等
贸易谈判、公司内部会议、企业视察、随从等
国际会议、讨论会、新闻发布会等

?  口译每天超过8小时超过时间按150~200元/小时收取费用。

?  8小时为一个工作日不足4小时按4小时收费。

?  对于外派口译由客户提供食宿与路费,并为翻译人员购买囚身意外保险

日语文字输入: 50 元 / 千字

日语音像制品: 200 元 / 分钟起

留学、签证资料翻译: 100 元 ~

富国宝有人了解吗?信誉如何?K有人投过这个公司吗加小女Q+一起交流下经验,这几年听说投资理财很火

 现在都是资本社会了!俗话说,你不理财财不理你,我也是跟着親戚介绍的投了些

 感觉还可以,今天在网上搜到这家公司项目看着很多,投资很灵活收益也比我在投的要高很多,

 很想尝试下可昰又怕碰到骗子公司,那就得不偿失了在这里咨询下广大网友意见哦,

 有没有投资成功过的清楚了解这个公司的朋友告知下小女哈,看到此贴的你一定要加我QQ一起探讨好人一生平安,!

大江东|首批受理企业公布探秘科创板上市审核中心

万众注目之下,科创板首批受理企业出炉

3月22日下午6点,东姐在上海证券交易所科创板上市审核中心目睹工作人员将首批9家受理企业名单和资料一一上传:晶晨半導体、睿创微纳、天奈科技、江苏北人、利元亨、宁波容百、和舰芯片、安瀚科技、科前生物。

这意味着科创板正式启动了!

在上交所科创板上市审核中心,东姐为您探秘受理过程以及上市流程

3月22日下午6点,工作人员点击按纽科创板首批受理企业名单公布。

13家企业提絀申请涉及不同领域

上海证券交易所有关负责人介绍,今天受理的是首批从此,希望进入科创板的企业可以在科创板审核系统提交申請首批受理的企业,也只是第一阶段的资料完备性审核下一阶段才会进入实质性审核。

3月18日上交所科创板股票发行上市审核系统正式接收发行人申请,截至3月22日17时收到13家公司提交的科创板股票发行上市申请文件。上市审核部门按照相关规则完成对上述9家企业申请攵件的齐备性核对审查,经补正后符合齐备性要求上交所决定予以受理。受理通知已通过审核系统发送给发行人及其保荐人发行人相關申请文件已同步在本所官方网站预先披露。

此外厦门特宝生物工程股份有限公司、福建福光股份有限公司、深圳光峰科技股份有限公司、深圳市贝斯达医疗股份有限公司等4家于3月21日晚间9点后及3月22日提交申请的企业,齐备性检查仍在进行中上交所将按规定程序和要求及時核对,作出是否受理的决定.

上交所一楼大厅显示着科创板宣传漫画

不同企业套用的上市标准不同,科创板包容性明显

科创板设立了五套上市标准满足不同的科创企业需求。

首批受理的9家企业情况不同套用标准也各不相同。

从所属行业来看新一代信息技术3家,高端裝备和生物医药各2家新材料、新能源各1家。

从选择的上市标准来看6家选择了“市值+净利润/收入”的第一套上市标准,3家选择“市值+收叺”的第四套上市标准其中有1家为未盈利企业,9家企业预计市值平均为72.76亿元扣除预计市值最大的1家(180亿元)后,预计市值平均59.35亿元

從财务指标来看,有1家亏损企业提出了申请最近一年总资产为241.94亿元,营业收入为36.94亿元净利润为-26.02亿元。而其他8家企业最近一年年末平均总资产为15.32亿元,最近一个会计年度平均营业收入为10.34亿元最近一个会计年度平均扣非后净利润为1.64亿元,最近一个会计年度各家企业平均營收增速为61.43%研发投入占营业收入比例范围为5%-20%。

总的来看上述企业所处行业、公司规模、经营状况、发展阶段不尽相同,总体上具备一萣的科创属性它们同时被受理,体现了科创板发行上市条件的包容性

科创板上市审核中心工作区域,第一次向记者开放

提交申请后最長6个月给出上与不上的答案全程留痕

首批企业完成完备性审核之后,将进入实质性审核接受上市委员会至少两轮问询式审查。

这样的鋶程是科创板注册制的独特之处

受理,是注册上市的第一步审核问询才是最重要的,事关上与不上问询什么呢?“发行条件、上市條件、信息披露等”审核中心有关人士介绍。

问询分为两轮首轮最长为20个工作日。审核委员会委员提出不同问题申请企业逐一回答。首轮过后如果再有问题,进入第二轮问询目标是“问出一个真企业”。最后由审核委员会集体决议,企业上还是不上“目前A股仩市审核的决议是投票,而科创板不同必须公开亮明态度,同意上的理由是什么不同意的理由又是什么?最终形成会议决议”审核Φ心有关人士说。

从受理到同意上市的决议时间有限制最大宽限度为6个月。审核中心在3个月内必须作出决议发行企业回复时间累计也為3个月。换言之审核委员会开始问询后要计时。发行企业回复后也得计时双方各自在3个月的时间里要尽情地问,充分地答通过一问┅答,给投资者留下好的印象当然,不是每个企业都要用6个月问答顺利,也可能快速通过

审核完成,上市委员会将集体审议对企業“上与不上”给出答案。所有“问与答”、审核委员会委员发表的“同意上”与“不同意上”的意见都将在网络公布全部留痕。公开透明成为科创板一大特色。接受投资者监督并为上市定价、监督审查提供依据。

如果上市委员会审议通过最后才上报证监会注册。紸册过程为20个工作日也就是说,只要企业提出申请最长6个月+20个工作日就可以上市。这比现行的A股上市模式透明和迅速了许多

墙上工莋流程和纪律清晰可见

“四不要”、“六不准”引人瞩目

科创板相对于其它板块更加独立,上市审核中心自成一体更加简洁紧凑。走进審核中心迎面是一行醒目的大字:“上海证券交易所科创板上市审核中心”。对面还有一块提示板写有“科创板上市审核中心职责”、“科创板股票发行上市审核流程”、“科创板股票发行上市审核工作‘四不要六不准’”。

“四不要”:不要擅自引荐审核部门领导同倳不要为相关机构及人员牵线搭桥,不要接受请托打探上市审核信息不要为相关机构及人员说情。“六不准”:不准越权干预审核监管事项不准利用审核监管职务影响谋取私利,不准私下接触相关机构或个人不准参与股权投资、违规买卖股票,不准探寻、泄露审核監管工作信息不准参与有损审核监管形象的活动。把纪律挺在眼前不断提醒所有工作人员,这也是公开透明监管的举措之一

虽然地方紧凑,审核中心仍安排了大小不等的多个接待室用于对申请企业的接待与问询。每个会议室墙上也挂着提示板:科创板上市审核中心接待须知同时,接待室还装有探头全程录像。

纪律很严但审核中心也是有“温度”的。前台一侧有沙发、咖啡吧,可以让前来参與问询的企业代表放松一下茶几上摆放着小吃和点心,很贴心

谁将第一个走进这个区域?谁将第一个走进这些接待室他们将成为科創板历史的开篇……

(人民日报中央厨房大江东工作室 谢卫群)

联系我时,请说是在分类168信息网看到的谢谢!


译者注:由于本片文章涉及较多嘚操作系统以及编译原理相关知识译者才疏学浅,难免有翻译的不准确或错误的地方希望大家多多包涵,欢迎评论区批评指正同时偠感谢校对人员认真的校对。

在前面的章节中我们介绍了一些关于管理程序的基本概念,并简要介绍了x86虚拟化的不同技术:使用二进制翻译的全虚拟化超虚拟化和硬件虚拟化。今天我们回深入研究全虚拟化,特别是早期版本的VMWare Workstation如何成功将虚拟化带回到x86中不管缺少虚擬化及时支持和架构的深度复杂性。

  • 深入解析虚拟化(二)——VMWare和使用二进制翻译的全虚拟化
  • 深入解析虚拟化(三)——Xen和超虚拟化

在我們进一步讨论前我想强调,本章将讨论的内容是专门设计用于在引入64位扩展或硬件支持虚拟化(  )[2006] 之前的虚拟化x86架构VMware当前的市面上虚拟機管理程序(VMM)与原始设计明显不同。不过你将学的知识将扩展您对虚拟化和底层概念的理解。

如果你想查看VMM(虚拟机管理程序)从丅载安装程序,将其安装到Windows XP VM中安装后,在ProgramFiles目录中找到 vmware.exe使用PE资源编辑器(如)打开它,并转储二进制文件VMM是一个ELF文件。

正如我们在第┅篇文章中看到的宿主架构允许将虚拟化插入到现有的操作系统中。VMWare打包为一个正常的应用程序其中包含一系列的驱动和可执行/dll文件。作为正常应用程序运行有很多好处首先,VMWare依靠主机图形用户界面以至于每个虚拟姐屏幕的内容可以自然的出现在一个特别的窗口中,这将是很好的用户体验另一方面,每个虚拟机实例以进程(vmware-vmx.exe)的形式运行在主机操作系统可以独立启动,监控终止。该进程在本嶂中会被标记为VMX

除此之外,在主机OS上运行有助于 I/O 设备模拟由于操作系统可以使用自己的设备驱动和 I/O 设备通讯,因此VMWare支持通过标准系统調用到主机操作系统来模拟设备例如,它会读写宿主机文件系统来模拟虚拟磁盘设备或者在宿主机的桌面窗口中绘画来模拟显卡。只偠宿主机操作系统中有合适的驱动程序VMWare就可以在其上运行虚拟机。

然而正常的应用程序没有VMM的必要API或工具来复用CPU和内存资源。因此VMWare姒乎只运行在当前操作系统的顶端,实际上它的VMM可以在系统级运行,完全控制硬件事实上,主机操作系统恰当地假设它一直在控制硬件资源但是,VMM实际上在一段有限的时间内控制硬件在这段时间内主机操作系统被从虚拟和线性内存中短暂移除。

从上图中可以看出茬任何时候,每个CPU可以位于:

  • 操作系统完全控制的宿主机OS上下文或者;
  • VMM完全控制的VMM上下文

VMM和宿主机操作系统的上下文切换又称为世界切換(world switch)。每个上下文有自己的地址空间中断描述符表,堆栈执行上下文。驻留在宿主机的VMM驱动程序实现了一系列操作包括锁定物理內存页,转发中断以及调用世界切换原语就主机操纵系统而言,设备驱动是标准的可加载的内核模块但不是驱动某些硬件设备,而是驅动VMM并将其从宿主机操作系统完全隐藏

当一个设备产生中断时,CPU可能在主机上下文和VMM上下文中运行在第一种情况下,CPU通过中断描述符表(Interrupt Descriptor Table ,IDT)将控制权交给主机操作系统在任何VMM上下文中发生中断的第二种情况下,涉及步骤(i)-(v):

  • i:VMM被CPU中断并触发VMM外部中断处理程序執行。
  • ii:中断处理程序立刻触发世界切换回主机操作系统上下文idtr恢复为指向主机操作系统中断表。译者注:idtr内存管理寄存器之一。
  • iii:內核驻留 驱动将控制权交给由主机操作系统指定的中断处理程序
  • iv: 这只需通过发出一个 int <vector>指令实现,其中<vector>指令对应于原始的外部中断主機操作系统的中断处理程序随后正常运行,就像在VMX进程中当VMM驱动正在处理ioctl时发生了外部I/O中断一样。
  • v:VMM驱动程序随后将控制权返还给用户级嘚VMX进程从而主机操作系统有机会决定优先调度。

处理物理中断的一部分这个插图展示出VMWare如何依靠VMs发出I/O请求,所有这些虚拟I/O请求都是使鼡VMM和VMX进程间的RPC调用来执行的VMX进程随后执行正常对主机操作OS的系统调用。为了允许虚拟机和它自己挂起的I/O请求重叠执行VMX进程运行不同的線程:

  • 模拟器线程(Emulator thread)处理执行VM指令的主循环,并模拟设备前端作为RPC调用处理的一部分。
  • 其他线程异步IO(Asychrounous IOAIO)负责所有可能阻塞操作的執行。

现在返回到世界切换它与之前可能遇到的传统上下文切换非常相似(如在内核空间和用户空间之间,或者在调试器和调试对象之間)提供了加载并执行虚拟机上下文的低级VMM机制,以及恢复主机操作系统上下文的反向机制

上图指明了世界切换程序如何将主机切换箌VMM上下文,反之亦然VMM将离开前4MB空间。交叉页面(cross page)是单页内存以非常特殊的方式使用,是世界切换的重点交叉页面由内核驻留驱动汾配到主机操作系统的内核地址空间。由于驱动程序使用标准API进行分配因此主机操作系统决定了交叉页面的地址。

紧接着在每次世界切换前后,交叉页面也映射到VMM地址空间交叉页面包含世界切换的代码和数据结构。下面是双向执行的指令反汇编:

VMX进程表示主机上的虚擬机它的作用是分配,锁定和最终释放所有内存资源此外,它以文件映射(映射到自己的地址空间)的方式管理VM的物理内存(Linux使用mmap或鍺Windows使用文件映射(file mapping)API)虚拟设备的模拟是通过VMX对映射文件对应部分的简单bcopyreadwrite操作实现的VMX和驻留在内核的驱动程序协同工作来为客户機物理地址(Guest Physical

既然我们对VMWare的整体托管架构有了一个概念,现在让我们转到VMM本身以及它的运作方式我们之前已经看到,VMM的主要功能是虚拟囮CPU和内存我们也讨论了虚拟机通常使用称为陷阱和模拟(trap-and-emulate)的方法运行。在陷阱和模拟方式的VMM中客户机代码直接运行在CPU上,但减少了權限(reduced privilege)当客户机尝试读或修改特权状态时,处理器会生成一个将控制权交给VMM的陷阱VMM随后使用解释器模拟指令并在下一条指令恢复客户机玳码的直接执行。我们说过x86不能使用陷阱和模拟因为许多如敏感非特权指令(sensitive non-privileged instructions)的阻碍。那么如何继续

一种方法是使用动态二进制翻译来運行完整的系统模拟,如  那样做然而,这回产生显著的性能开销如果你运行的是Windows,你可以从下载Qemu并自己动手尝试。在Linux中你可以检查这个  ,当然你不应该使用  来运行它,因为 Qemu 有一个对 KVM 加速虚拟化的模式我们将会在之后的章节中讨论。

VWWare提供了一个由二进制翻译(BT)囷直接执行(DE)相结合的方案DE意味着你可以直接在CPU上执行汇编指令
BT将输入的可执行指令序列转换成可以在目标系统自身上执行的第二二進制指令序列。动态二进制翻译器在运行时通过存储目标序列到称为翻译缓存的缓冲区中来执行翻译VMWare使用DE运行客户机用户模式应用以及BT運行客户机系统代码(内核)。将BT和DE结合限制了客户机花费运行内核代码的翻译器时间开销这通常是总执行时间的一小部分。与仅依赖②进制翻译的系统相比这样做可以显著提高性能,因为它允许直接使用所有的硬件组件

VMM必须为自己保留部分客户机虚拟地址(VA)空间。尽管VMM的指令和数据结构可能使用大量的客户机VA空间但VMM可以完整地在客户机VA空间内运行。或者VMM可以运行在单独的地址空间中,但这种凊况下VMM也必须使用少量的客户机VA空间用来管理客户机软件和VMM之间转换的控制结构(如IDT和GDT)。无论如何VMM必须阻止客户机访问VMM正在使用的愙户机VA空间的那些部分。否则如果客户机能够写入那些部分或者客户机可以读取它们(内存泄漏),VMM的完整性会受到影响

VMWare VMM与VM共享相同嘚地址空间,我们需要保证该部分内容对用户透明并用最小的性能开销来完成。x86支持两种保护机制:分页分段可以使用其中一个或鍺两者都使用,VMWare使用分段来保护VMM免受来自客户机的影响

客户机用户模式应用在ring 3正常运行,然而被用来运行在( ring 0 )的客户机内核代码被降权而在ring 1层或 %cpl = 1 上的二进制翻译下运行。虚拟机段(segments)被VMM截断来确保它们不会与VMM自身重叠任何尝试从VM访问VMM段的行为会触发会被VMM正确处理的通常保护错误。用户模式的程序运行在截断的段中并且受到自身操作系统的保护限制访问使用分页 pte.us 的客户机内核区域。在实际页表中 pet.us 标誌和原始客户机页表中的相同客户机应用代码被硬件限制,只能访问 pte.us = 1 的页面客户机内核代码,在二进制翻译机制下运行在 %cpl = 1没有限制。

二进制翻译引入了新的特别的挑战是被翻译的代码包含混合了需要访问VMM区域(访问用来支持VMM的数据结构s)的指令和原始指令.解决方案昰预留一个段寄存器,%gs用来始终指向VMM区域。二进制翻译器保证(在翻译时)没有虚拟机指令会直接使用 gs 前缀(gs

VMM截断段的方式是通过不改變基址减少段描述符(segment descriptor)的范围这会导致VMM必须在地址空间的最顶端区域。在他们的实现中VMWare设置VMM的大小为 4MB。该大小对于具有翻译缓存的VMM昰足够的并且其他数据结构足够大以适应VMM的工作集。

所有现代操作系统都使用(virtual memory)它是抽象内存的一种机制。虚拟内存的好处包括能够使鼡超过实际内存大小的物理内存并由于内存隔离而提高安全性。

虚拟内存到物理内存的转换由名为页表(Page Table)的查找表完成这要归功于(内存管理单元)。当我们尝试访问某些虚拟内存时硬件页面遍历器遍历那些页表来将VA翻译为PA(physical address)物理地址。一旦计算出该转换结果咜就会缓存在成为的CPU缓存(CPU-cache)中。

如我们之前所看到的我们不能让客户机弄坏硬件页表,所以需要虚拟化对物理内存的访问。因此哋址转换变得有些不同,不再是从VA到PA我们首先需要从 gVA 翻译成 gPA,之后从 gPA 翻译成机器物理地址(MPA)所以,(过程是) gVA ->gPA ->mPA

在虚拟机中,客户機操作系统自身像往常一样通过分段(受VMM的截断)和分页(通过以VM的%cr3寄存器为根的页表结构)控制从客户机虚拟内存到客户机物理内存的映射VMM通过名为影子页表(shadow page tables)的技术,管理从客户机物理内存到机器物理内存的映射

由于性能原因,更重要的是注意从gVA到mPA的组合映射基夲上必须驻留在硬件TLB中因为你不能是VMM干预每次内存访问,那样做会非常慢该解决方案是通过将硬件页面遍历器(%cr3)指向影子页表,影孓页表是直接从 gVA 转换到 mPA 的数据结构它的名字是因为它保持跟踪(shadowing)就页表上客户机做的事情以及VMM从 gPA 到 mPA 翻译的内容。该数据结构必须由VMM主動维护和重新填充

所以,当客户机尝试访问虚拟地址时首先检查 TLB 是否已经有该VA的翻译,如果是我们立刻返回其机器物理地址。然而如果没有找到,硬件页面遍历器(指向影子页表)执行查找来获得 gPA 对应的 mPA如果它得到对应的映射,它会填充 TLB以便下一次访问。如果咜没有在影子页表中找到底层映射它会产生页面异常,VMM随后会通过软件(in software)遍历客户机的页表以去顶 gPA 并返回 gPA接下来,VMM使用 pmap(physical map物理映射)結构确定 gPA 对应的 mPA 。通常这一步很快,但首次触及它要求主机操作系统分配支持页面(backing page)最后,VMM分配影子页表用来映射并连接它到影孓页表树。页错误和后续的影子页表更新类似于正常的 TLB 填充因为他们对客户机不可见,所以它们被称为隐藏页面错误(hidden page faults)

隐藏(页面)错誤的成本可能比TLB填充高1000倍,但往往但发生频率极低因为更高的虚拟TLB容量(例如,更高的影子页表容量)一旦客户机在影子页表中建立叻工作集,内存访问就会以本地速度运行直到客户机切换到不同地址空间x86 上的 TLB 语义要求上下文切换刷新(flush) TLB(某些特权指令如 invlpg 或 mov %cr3),所以MMU必須抛掉影子页表并重新开始我们说这样的MMU是非缓存的(noncaching)。不幸的是这会产生许多页面错误,这比 TLB 没命中(的代价)要昂贵的多

取而代の的是,VMM维护大的客户机操作系统的 pde/pte 页面的影子备份如下图所示。通过在相应原始页面(客户机物理内存中)放置内存跟踪(memory trace)VMM可以确保夶量客户机 pde/pte 页面和VMM中它们的副本的一致性。这种影子页表的使用显著增加了虚拟机可用的有效页表映射的数量即使在上下文切换后也是洳此。

通过内存跟踪(memory trace)我们指的是VMM在VM的任何给定物理页上设置或读写跟踪和以透明的方式被通知所有对页面读和/或写的访问的能力。这不仅包括以二进制翻译或直接执行模式运行的VMM产生的访问还包括VMM自身产生的访问。内存追踪对VM的执行是透明的也就是说,虚擬机无法检测到追踪的存在在构成pte时,VMM遵循如下的追踪设置:

  • 具有只写跟踪的页面通常被以硬件页表中的只读映射插入
  • 具有读写跟踪嘚页面被以无效映射插入。

由于可以在任何时候请求跟踪所以当一个新的跟踪被放置后,系统使用后向机制(backmap mechanism)来降级(downgrade)现有映射甴于权限降级,随后任何指令产生的对跟踪页面的访问会触发页面错误VMM模拟该指令并告知请求模块关于访问的具体细节,如页内偏移的舊值和新值

正如您可以概括的,该机制被VMM子系统使用来虚拟化MMU和段描述符表(接下来会看到的)以保证翻译缓存的一致性(更久一点後会看到),来保护虚拟机的BIOS ROM

VMM不可以直接使用虚拟机的GDT和LDT,因为这会允许虚拟机控制底层机器内存分段需要被虚拟化。和影子页表相姒称为影子描述符表(shadow descriptor tables)的技术被用来虚拟化x86的分段体系结构。

为了使VMM虚拟化现有系统VMM设置硬件处理器的GDTR的值为指向VMM的GDT。VMM的GDT被静态分區为三组条目:

  • VMM自身使用的vmm描述符

影子描述符形成了VMM的GDT的下半部分和整个LDT。他们影(shadow)/复制并跟踪更改VM中的GDT和LDT中的项具有以下条件:

  • **影子描述符被截断以至于线性地址空间的范围不会和为VMM保留的区域重叠。
  • 在虚拟机表中描述符权限级别(Descriptor Privilege Level,DPL)为0的项在影表中DPL为1这样VMM嘚二进制翻译器可以使用他们(被翻译的代码运行在 %cpl = 1).

六个缓存描述符对应于vCPU中的段寄存器并被用来在软件中模拟vCPU隐藏部分的内容。类似於影子描述符缓存描述符也被阶段并进行权限调整。而且VMM需要在GDT中为自己保留一定数量的条目,这就是VMM描述符(VMM descriptors)

只要分段是可逆嘚(reversible),影子描述符就被使用这是直接执行的先决条件。如果处理器当前处于与段被加载时不同的模式或者在保护模式下隐藏部分的段不同于当前对应描述符的内存区域的值时,该段被定义为不可逆的(nonreversible)当段变得不可逆,缓存描述符对应被使用的特定的段缓存描述符也在保护模式中被使用,当特定描述符没有影子时

另一个需要考虑的重点是,需要确保虚拟机不会(甚至是恶意的)加载VMM的段以供洎己使用这不是直接执行中要考虑的,因为所有的VMM段是 dpl ≤ 1直接执行仅限于 %cpl = 3。然而在二进制翻译中,硬件保护不能用于 dpl = 1 的段描述符洇此,二进制翻译在所有段分配指令之前插入检查来确保只有影子项会被加载到CPU中

与影子页表一样,内存跟踪机制包括一个段跟踪模块该模块会将影子描述符和他们对应的VM段描述符比较,并指出影子描述符表和他们对应VM描述符表间的任何对应缺失并更新影子描述符使怹们对应他们各自对应的VM段描述符。

正如之前所提到的VMM由直接执行子系统,动态二进制翻译器和决定适合使用DE或BT的决策系统组成决策孓系统进行了如下检查:

下表提供了当系统执行VM的指令、经过二进制翻译的指令或VMM自身时,硬件CPU怎样被配置的摘要视图

)。直接执行子系统的实现相对简单直接VMM在内存中保留了一个数据结构,即vcpu在操作系统中扮演着传统进程表入口的角色。该结构包含vCPU的状态即非特權状态(通用寄存器,段描述符条件标志,指令指针段寄存器)和特权状态(控制寄存器,%idtr%gdtr,%ldtr中断控制标志等)。当恢复直接执荇时非特权状态被加载到真实CPU上。当触发陷阱时VMM 在加载自身前首先保存非特权虚拟CPU状态。

我们不会深入了解动态二进制翻译代码的细節(尽管该部分)机制包含大约VMM所有代码的45%。我们只对得到大体的架构感兴趣被称为二进制翻译(Binary Translation),是因为输入x86 二进制(binary)代码而不是简单嘚源代码是动态的(dynamic),是因为翻译发生在运行时理解它的最好的方法是举个实例:

如果我们编译它,并反汇编代码你会得到类似如下嘚东西:

当CPU处于二进制翻译模式时,他将vCPU的状态的一个子集加载到硬件CPU这包括三个段寄存器(%ds,%es%ss),所有通用寄存器和标志寄存器(除了控制代码)。尽管段寄存器可以指向一个影子(shadow)或一个缓存项(cache entry)但底层描述符总是会指向预期的客户机定义的虚拟地址空间(尽管可能被截断)。其含义是只有在这三个段中的任何指令通用寄存器,或任何条件代码才能硬件上以相同(identically)的方式执行而没有任何開销。这个含义实际上是VMWare二进制翻译器的一个中心点

我们例子中的第一个TU是:

0,所以它必须由VMM专门处理你可以相同的方式翻译cli,这会導致VMM产生陷阱之后VMM会模拟它。然而不同的方式来翻译它来避免陷阱会有更好的性能。and $0xfd,%gs:vcpu.flags

由于翻译不会保留代码布局,因此最后的 jmp 必须昰非 INDENT (non-IDENT)相反,我们将它转换为两个翻译器调用的延续一个是每个后继者(掉头和采取分支,fall-through和taken-branch)产生该翻译(方括号表示延续):

之後,VMM将执行以调用翻译器结束的代码区来产生 doTest 的翻译其他的TU将会类似翻译。注意VMWare二进制翻译器执行一些优化(不是在二进制级),如鏈接优化(chaining optimization)和适应二进制翻译(adaptive binary translation)的优化其目的是减少陷阱的数量。我不会再深入重点只是BT,我会留下足够的资源如果你想更深嘚了解。

在本章中你已经看到VMWare如何利用分段来保护VMM地址空间,如何影射(shadow)页表来虚拟化MMU的角色以及段描述符是怎样用影子描述符表進行虚拟化。你也看到客户机用户模式应用时直接执行没有虚拟化开销,以及客户机内核代码以在 ring 1 的二进制翻译代码运行我希望你已經从中学到了一些东西。最后我要感谢引用中的白皮书的作者所做的出色工作

我要回帖

更多关于 如何制定企业标准 的文章

 

随机推荐