微内核与宏内核的区别:
微内核是将各种服务功能放到内核之外,自身仅仅是一个消息中转站。
宏内核是将所有服务功能集成于一身,使用时直接调用。

从资源管理角度,操作系统主要功能划分:CPU管理、存储管理、I/O设备管理、文件系统、用户接口

文件描述符表、系统文件表、内存索引节点表:

文件描述符表:该表记录进程打开的文件。它的表项里面有一个指针,指向存放在内核空间的文件表中的一个表项。它向用户提供一个简单的文件描述符,使得用户可以通过方便地访问一个文件。
当进程使用open打开一个文件时,内核就会在这个表中添加一个表项。如果对同一个文件打开多次,那么将有多个表项。使用dup时,也会增加一个表项。
文件表:文件表保存了进程对文件读写的偏移量。该表还保存了进程对文件的存取权限。比如,进程以O_RDONLY方式打开文件,这将记录到对应的文件表表项中。
索引结点表:每个文件都有一个索引节点(inode)(包含文件所有者、存取权限、及其存取时间等信息),当一个进程建立一个新文件时,内核分配给它一个尚未使用的索引节点。索引节点被存储在文件系统中(即磁盘索引节点表),但是当操作文件时,内核将它们读到内存索引节点表中,即:对系统中的每个活动的文件(被某个进程打开了),内存中索引节点表都包含一个条目。几个系统文件表条目可能对应于同一个内存索引节点表(不同进程打开同一个文件)
上面所说的三个表的功能,使得三个表紧密地联系在一起,文件描述符表项有一个指针指向文件表表项,文件表表项有一个指针指向索引结点表表项。每打开一次同一个文件,内核就会在文件表中增加一个表项。这是因为每次open文件时使用了不同的读写权限,而读写权限是保存在文件表表项里面的。

虚拟机的类型:
- 宿主型-需要运行在Host OS之上,由其提供驱动程序与硬件通信
- 独立监控型-直接运行于硬件层之上

虚拟化的分类:
- 全虚拟化:使用了一种叫做二进制转换(Binary Translation)的技术。其核心是让Hypervisor运行在0环上,由它来负责管理底层的硬件。而虚拟机的操作系统运行在权限较低的1 环上,当这些操作系统调用特权指令的时候,0环的VMM使用二进制转换技术将这些指令调用拦截下来,并负责指令的后续工作。
缺点:软件拦截机制,性能开销大
- 泛虚拟化:使得虚拟机的操作系统仍然可以运行在0 环上,但是需要修改操作系统的内核,把其中对特权指令的调用都改成对Hypervisor的调用,这种调用叫做Hypercall,半虚拟化的典型代表是Xen。这样,当在0 环上的虚拟机的操作系统调用特权指令的时候,会转成对Hypervisor的Hypercall 调用,依然是由Hypervisor来统一的对系统硬件资源进行管理。
缺点:需要修改OS内核
- 硬件辅助虚拟化:需要CPU 对虚拟化技术的支持。除了0 环到3 环以外,CPU 额外的多提供了一个环为Hypervisor专用,称为 -1 环。虚拟机的操作系统仍运行在0 环上,在操作系统调用特权指令的时候,通过硬件的机制将特权指令调用转到在处在 -1环上的Hypervisor 上,由Hypervisor完成对硬件的统一管理。缺点:需要有硬件支持(如Intel VT, AMD SVM)

操作系统虚拟化安全的预备知识

系统虚拟化的主要用途:隔离、合并、迁移、个性化

主流虚拟化软件:
- VMWare: 不开源
- Xen:开源
- INTEL VT系列
- VT-x: 处理器辅助虚拟化技术
- VT-d: I/O辅助虚拟化,直接IO
- VT-c: 网络辅助虚拟化技术
- TXT:可信执行技术

内存虚拟化实现采用的MMU泛虚拟化与影子页表技术思想和区别:

对于 MMU 泛虚拟化方法,VMM 将映射关系 f•g 直接写入 guest OS 的页表中,并替换原来的映射g。
对于影子页表技术,它为 guest OS 的每个页表维护一个影子页表,并将合成后的映射关系 f•g 写入到“影子” 中,guest OS 的页表内容保持不变。最后,VMM 将影子页表交给 MMU 进行地址转换。

相关文章:

  • 2021-12-24
  • 2021-12-03
  • 2021-04-18
  • 2021-06-25
  • 2021-09-01
  • 2021-08-09
猜你喜欢
  • 2021-07-29
  • 2021-12-24
  • 2021-06-02
  • 2021-06-17
  • 2022-02-14
  • 2021-12-24
  • 2021-12-09
相关资源
相似解决方案