自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 第三章 虚拟化概述(I/O虚拟化)

外设资源是有限的,为了满足多个客户机操作系统的需求,VMM必须通过I/O虚拟化的方式来复用有限的外部资源。VMM截获客户机操作系统对设备的访问请求,然后通过软件的方式来模拟真实设备的效果。从处理器角度看,外设是通过一组I/O资源(端口I/O或者是MMIO)来进行访问的,对设备相关的虚拟化又被称为I/O虚拟化。一、概述 首先分析一下没有虚拟化的情况。给定一个外设,定义有自己的一套供软件访问的接口,这些接口的属性可能是单向的,也可能是双向的。操作系统含有外设的驱动程序,它们...

2021-09-04 23:04:01 2435 1

原创 第三章 虚拟化概述(内存虚拟化)

在没有虚拟化的环境中,任何一个操作系统都认为自己完全控制处理器,相应的就完全拥有了内存的控制权。所以,操作系统总是按照一台物理计算机上内存的属性和特性对其进行管理的。...

2021-08-29 19:10:29 1903

原创 第三章 虚拟化概述(处理器虚拟化)

一、指令模拟 处理器虚拟化的关键在于正确的模拟指令行为,其中涉及到三个概念:虚拟寄存器、上下文和虚拟处理器。 虚拟寄存器 从某种程度上说,物理处理器无非包括了一些存放数据的物理寄存器,并且规定了使用这些寄存器的指令集。程序代码就是物理处理器按照一段预先写好的指令流,在给定时间点使用给定的部分物理寄存器来完成某种目的。 在没有虚拟化的环境中,操作系统直接访问物理寄存器,处在最高级权限,可以控制系统中的所有关键资源,包括寄存器、内存和I/O...

2021-08-07 17:24:35 735 2

原创 第三章 虚拟化概述(可虚拟化架构与不可虚拟化架构)

大多数现代计数机体系结构都有2个或者2个以上(x86是4个,arm、powerpc、RISC-v是2个),用来分离系统软件和应用软件(x86通过CPL、RPL控制访问特权级别)。系统软件运行在最高特权级,应用软件运行在非最高特权级。系统中有一些操作和管理关键系统资源的指令会被指定为特权指令。这些指令只有在最高特权级上才能正确运行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件来处理(处理完后由系统软件决定是否恢复非特权级代码继续往...

2021-08-07 13:45:09 419

原创 offset

我是“打死不用IDE,使用IDE也要调用我的makefile的maker”。在编写汇编代码时候,可能会遇到需要读取C结构体的成员。虽然知道某个结构体变量的地址,但还是得计算成员相对于结构体变量起始地址的偏移(offset)。一般来说,当编译完成,offset就确定了,但为了跨平台,我们希望,这个偏移值是在编译的时候动态生成的,只要我们在汇编中使用宏就可以了。第一种方法最简单,那就是手工计算...

2018-12-27 18:07:42 593

原创 osq

内核中的自旋锁 spin lock 常用 SMP 中保护短的临界区。当临界区别其他 CPU 占领时,当前 CPU 如果需要进入临界区,就会一直忙等,不会让出 CPU 。如果保护的临界区太大,忙等的消耗会很长,还不如放弃 CPU 让它做些其他事,这里主要考虑的是,忙等的代价应该小于放弃 CPU 付出的代价,具体使用时需要仔细斟酌。对于现代 CPU 的设计,CPU 与内存的速度差距太大,为了发挥 ...

2018-12-07 11:21:50 2077

原创 RCU

RCU基于这样一个现实,那就是不论什么架构,访问一个单一机器字是原子的,也就是说:访问一个指针变量是原子的,这是天然的,不用自旋锁保护的多核同步操作。所以RCU用来保护的资源只有一个指针,至于这个指针指向一个对象还是内存块它完全不关心。当你要操作删除一个指针指向的资源时,你可以直接删除,不用担心系统奔溃,比如直接将指针改为NULL,但你要小心旧指针指向的资源,可能其他核正在访问,所以如何释放旧...

2018-12-02 15:18:07 427

原创 select

select 函数及 poll 函数族的主要功能用于等待(监视)一批(多个)文件描述符的状态变化,可读可写或者发生异常。这样做的话,就能保证处理一批文件描述符时,得以等待最少的时间快速响应。不然线程(Linux中的 task , SylixOS 中的thread )只能自己无阻塞轮询多个文件描述符,浪费大量时间,而这些工作由内核处理更好一些,这就是 select 的目的和工作原理。Linux ...

2018-11-12 11:15:50 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除