IPC9800-PTW怎么使用?

部分素材参考原同事文档,如有冒犯敬请谅解。

只有在异常(如:中断、page faults等)发生时(或者异常处理返回时),才能切换Exception level(这也是Exception level的命名原因,为了处理异常)。当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。同样,异常处理返回时,也有两种选择,停留在当前EL,或者调到更低的EL。

ARMV8从设计之初就提供了对虚拟化的硬件辅助支持,主要包括以下几点:

  • 系统指令,如cache和TLB操作指令

在EL2中实现额外的存储器转换层,称为“阶段2转换”。hypervisor将为每个虚拟机创建和管理Stage 2的页表;

目前主要的Hypervisor分为两类,分别是:

Hypervisor运行在host的操作系统上,再去提供虚拟化服务

Armv8中跟虚拟化相关的寄存器包括在下面列表中。

在多核或群集系统中,处理器和群集ID

性能监控调试配置寄存器

Hypervisor虚拟化转换表基址寄存器

Domain访问控制寄存器

Hypervisor辅助存储器属性间接寄存器

hypervisor启动过程中,需要对armv8虚拟化相关寄存器进行配置,主要为以下部分:

  • 设置hypervisor异常向量基址寄存器()配置中断向量表
  • 设置,禁止Gues OS通过访问协处理器、浮点等陷入到EL2

hypervisor为客户机提供一套完整的硬件系统环境,在Guest OS看来其所拥有的CPU即是vCPU(virtual CPU)。当hypervisor在cpu上调度一个Guest OS时,它必须执行上下文切换,也就是说,将当前运行的Guest OS的上下文保存到内存中,然后从内存中恢复新Guest OS的上下文。目的是在当前cpu恢复之前,为新Guest OS创建环境,创造不间断执行的假象。通过执行上下文切换,hypervisor确保执行环境跟随Guest OS,并提供Guest OS始终占据的虚拟CPU的假象。

hypervisor从内存中恢复Gues OS上下文,并进入Guest mode执行Guest程序,Guest在运行过程中遇到异常,陷入的hypervisor中,hypervisor将保存当前Guest的上下文到内存中,并对异常进行处理,处理完毕以后,从内存中恢复Gues OS上下文,并切换到Guest。

在进入Guset OS之前需要从内存中恢复需要执行的Guest OS上下文,主要包括以下元素(其中vcpu表示内存中的数据结构):

只有在异常(如:中断、page faults等)发生时(或者异常处理返回时),才能切换Exception level。所以虚拟机退出一定是发生了异常。Hypvisor在启动的过程中会将中断向量表vectors写入vbar_el2(Vector Base Address Register 寄存器),该寄存器保存了EL2的异常向量表的基地址,执行命令如下:

vectors作为异常向量表的基地址定义在汇编中,如下:

通过下图更形象的展示异常向量表的内存布局:

根据上面的描述异常向量表可以分为4组,4个组的分类根据发生异常时是否发生异常级别切换和使用的堆栈指针来区别。分别对应于如下4组:

  • 异常发生在当前级别且使用SP_EL0(EL0级别对应的堆栈指针),即发生异常时不发生异常级别切换,可以简单理解为异常发生在EL2,且使用EL0级别对应的SP。 这种情况在hypvisor中未进行实质处理,直接进入do_bad_mode()流程。
  • 异常发生在当前级别且使用SP_ELx(ELx级别对应的堆栈指针,x可能为1、2、3),即发生异常时不发生异常级别切换,可以简单理解为异常发生在EL2,且使用EL2级别对应的SP。 这是比较常见的场景。
  • 异常发生在更低级别且在异常处理时使用AArch64模式。可以简单理解为异常发生在虚拟机,且进入hypvisor处理异常时,使用的是AArch64执行模式(非AArch32模式)。 这也是比较常见的场景。
  • 异常发生在更低级别且在异常处理时使用AArch32模式。可以简单理解为异常发生在虚拟机,且进入hypvisor处理异常时,使用的是AArch32执行模式(非AArch64模式)。

根据异常的不同,可以分为4类,SYNC,IRQ,FIQ和SError。这4类异常可以进一步分为同步异常和异步异常。

异步异常,也就是中断,包括SError,IRQ,FIQ。FIQ在操作系统中使用的比较少,一般没有做处理。SError也就是System Error异常,出现这种异常是致命的,系统自身无法做相应的修复操作,不知道具体原因,也不知道如何修复,在这种情况,系统一般会dump上下文信息,然后hang。

同步异常,异常是由于直接执行或尝试执行指令而生成的;提供给异常处理程序的返回地址确定保存着指示引起异常的指令;异常是精确的。

下面继续分析虚拟机同步异常陷出流程,这里以上面异常向量表中的guest_sync_a64为例。

  1. Hypervisor可以通过读取获取异常相关信息。
  2. 从ESR_EL2中取出EC字段,获取本次Exception的原因,并进入相应的分支处理异常。
  3. EC_UNKNOWN,未知原因,系统不期望走到这里,如果走到这里,Hypervisor将会dump系统信息,并设置虚拟机为halt。

其中未标红部分为UVMM和GUEST OS共有的设置。

3,根据不同的调用设置vcpu不同的返回值和返回参数

从内核返回到用户态entry_ip指示的位置,进入VCPU_ENTRY函数中,根据vcpu->r.err索引到vcpu_entries中具体的项目。条目中的主要内容为中断处理、异常处理、代码仿真,完后处理后通过设置vcpu_state的相关寄存器的值并利用resume_vcpu来恢复guest os。

物理CPU在进行调度的时候会进行VCPU的切换,根据当前context的state和切换后context的state来确定物理CPU是否进入虚拟化模式,这个切换可能会导致CPU改变虚拟化模式。切换步骤在switch_exec_lock中,关键代码如下:

2,如果当前CPU处于虚拟化模式,则利用save_ext_vcpu_state保存相关寄存器;

3,如果切换后CPU处于虚拟化模式,则利用load_ext_vcpu_state加载相关寄存器;

1.一种系统内存管理装置,其特征在于,包括一转译控制单元、若干转译缓冲单元、一仲裁单元和一比对判断单元,其中:

转译控制单元,用于进行二级转译查找表的查找或全局页表查找,产生页表查找结果并发送至转译缓冲单元,或当页表项无效时,产生页表项对应的转译查找表入口无效请求并发送至转译缓冲单元;

转译缓冲单元,包含用于存储和自身相连的各个主设备的常用物理地址的标签表存储阵列,并接收来自主设备的读写请求以及来自转译控制单元的页表查找结果或页表项对应的转译查找表入口无效请求,获取读写请求、页表查找结果或页表项对应的转译查找表入口无效请求中的要比对的信息并发送至比对判断单元,产生与要比对的信息对应的标签比对请求并发送至仲裁单元;

仲裁单元,用于接收标签比对请求,对标签比对请求进行存储并排序,将最优先的标签比对请求发送至比对判断单元;

比对判断单元,用于接收最优先的标签比对请求,获取最优先的标签比对请求对应的要比对的信息及对应的标签表存储阵列,将要比对的信息和对应的标签表存储阵列进行比对,产生比对结果并发送至转译缓冲单元。

2.根据权利要求1所述的系统内存管理装置,其特征在于,所述转译缓冲单元包括分离设置的主模块和标签存储模块,其中,

主模块,用于存储各个主设备的常用物理地址,接收来自主设备的读写请求以及来自转译控制单元的页表查找结果或转译查找表入口无效请求,分别获取读写请求、页表查找结果或页表项对应的转译查找表入口无效请求中的要比对的信息并发送至比对判断单元,产生与要比对的信息对应的标签比对请求并发送至仲裁单元;

标签存储模块,用于存储与常用物理地址对应的标签表存储阵列。

3.根据权利要求1所述的系统内存管理装置,其特征在于,所述比对判断单元包括一号多路选择器、二号多路选择器和比对模块,其中:

所述仲裁单元具体用于,对标签比对请求进行存储并排列优先级,将优先级最高的标签比对请求对应的转译缓冲单元的标识发送至一号多路选择器和二号多路选择器的选择控制端;

将所述若干转译缓冲单元的标签表存储阵列输入所述一号多路选择器的数据输入端,将所述若干转译缓冲单元的要比对的信息输入所述二号多路选择器的数据输入端,将所述一号多路选择器和二号多路选择器的数据输出端均连接至比对模块;

所述比对模块,用于对一号多路选择器和二号多路选择器的数据输出结果进行比对,将比对结果发送至所述转译缓冲单元。

4.根据权利要求1所述的系统内存管理装置,其特征在于,所述比对判断单元包括相互独立的第一比对模块和第二比对模块,其中,

所述仲裁单元,具体用于接收所述由主设备的读写请求产生的标签比对请求,标记为第一类标签比对请求,对第一类标签比对请求进行存储并排序;接收所述由转译控制单元的页表查找结果返回转译查找表或页表项对应的转译查找表入口无效请求产生的标签比对请求,标记为第二类标签比对请求,对第二类标签比对请求进行存储并排序;

第一比对模块,用于提取所述仲裁单元中的最优先的第一类标签比对请求,获取与最优先的第一类标签比对请求对应的要比对的信息和最优先的第一类标签比对请求所属的转译缓冲单元的标签表存储阵列进行比对,产生比对结果并发送至所述转译缓冲单元;

第二比对模块,用于提取所述仲裁单元中的最优先的第二类标签比对请求,获取与最优先的第二类标签比对请求对应的要比对的信息和最优先的第二类标签比对请求所属的转译缓冲单元的标签表存储阵列进行比对,产生比对结果并发送至所述转译缓冲单元。

5.根据权利要求1至4任一所述的系统内存管理装置,其特征在于,所述仲裁单元对标签比对请求进行存储并排序时,由转译控制单元的页表项对应的转译查找表入口无效请求产生的标签比对请求,由转译控制单元的页表查找结果返回转译查找表产生的标签比对请求,以及由主设备的读写请求产生的标签比对请求,其优先级顺序由高到低排列。

6.根据权利要求5所述的系统内存管理装置,其特征在于,对于所述由转译控制单元的页表项对应的转译查找表入口无效请求或页表查找结果返回转译查找表产生的标签比对请求,所述仲裁单元按照先来后到的次序进行存储并排序。

7.根据权利要求6所述的系统内存管理装置,其特征在于,对于同时到来的由转译控制单元的页表项对应的转译查找表入口无效请求或页表查找结果返回转译查找表产生的标签比对请求,所述仲裁单元根据所述标签比对请求最初来源的转译缓冲单元的优先级进行存储并排序。

8.根据权利要求5所述的系统内存管理装置,其特征在于,对于所述由主设备的读写请求产生的标签比对请求,所述仲裁单元按照预先指定的各个主设备的优先级顺序,或者根据主设备正在读写的传输数进行存储并排序,主设备正在读写的传输数越少,排序的优先级越高。

9.一种系统内存管理方法,其特征在于,包括:

系统内存管理装置中的转译缓冲单元接收来自主设备的读写请求以及来自转译控制单元的页表查找结果或页表项对应的转译查找表入口无效请求,获取读写请求、页表查找结果或页表项对应的转译查找表入口无效请求中的要比对的信息,产生与要比对的信息对应的标签比对请求;

系统内存管理装置将比对请求存入缓冲器并进行优先级排序;

系统内存管理装置提取缓存器中的最优先的标签比对请求,获取最优先的标签比对请求所属的转译缓冲单元的要比对的信息,并和对应的标签表存储阵列进行比对,产生比对结果并发送至转译缓冲单元。

10.根据权利要求9所述的系统内存管理方法,其特征在于,所述系统内存管理装置将比对请求存入缓冲器并进行优先级排序时,由转译控制单元的页表项对应的转译查找表入口无效请求产生的标签比对请求,由转译控制单元的页表查找结果返回转译查找表产生的标签比对请求,以及由主设备的读写请求产生的标签比对请求,其优先级顺序由高到低排列。

Windows服务器系统包括一个全面、集成的基础结构,旨在满足开发人员和信息技术(IT)专业人员的要求。此系统设计用于运行特定的程序和解决方案,借助这些程序和解决方案,信息工作人员可以快速便捷地获取、分析和共享信息。入侵者对Windows服务器系统的攻击主要是针对IIS服务器和组网协议的攻击。

在真实环境下往往需要一个稳定、安全、可随时操作的环境,家中的电脑不能一直开着,而且还有解决公网IP的问题,这时候我们往往需要一台vps,但是市面上的vps往往并不支持安装kali系统,只有某些较贵的KVM构架vps可以不太稳定的安装kali系统,其他linux系统支持的测试软体也并不全面,于是今天我为大家介绍一款可以直接在常见Ubuntu设备上安装全部kali工具集的程序katoolin。

现在你可以在终端的任何位置,通过键入Tool-X来打开Tool-X。最后提醒大家一句,请勿将该工具用于任何非法目的!

我要回帖

更多关于 DH-IPC-HDP2230C-SA 的文章

 

随机推荐