UNIX/LINUX设计理念:
提供机制,而不是策略
机制- 提供什么样的功能
策略- 怎样实现这些功能
Linux通过系统调用来使得应用软件可以实现:进程间通信、网络、进程管理、内存管理等功能,而这些功能又是在硬件上实现的。
而Xen中,就是在系统调用和底层硬件之间加入了Hypercall,通过Hypercall使用Xen系统管理层,来获得硬件资源。
系统调用的作用 - 隔离变化
从程序的角度看,实际上不直接与系统调用打交道,而是跟API打交道,API是对系统调用的封装。
库函数以及应用程序怎样使用系统调用,内核并不关心,内核只跟系统调用打交道。
系统调用抽象出了用于完成某种特点目的的函数,至于这些函数怎么用不是内核关心的。
用户空间的程序无法直接执行内核代码。它们不能直接调用内核空间中的函数,因为内核驻留在受保护的地址空间上。如果进程可以直接在内核的地址空间上读写的话,系统的安全性和稳定性将不复存在。
模块机制 - 应对变化
内核改变,(驱动程序、一个新的文件系统、新功能等),都不需要修改。
虚拟文件系统机制的作用 - 隐藏差异
用户程序 - 虚拟文件系统VFS - Minix/Ext3/NTFS/设备文件
文件系统的系统调用接口,包括 read()、write()、open()、close()等
VFS的机制是,不同文件系统,不同驱动程序都有统一的接口
用户程序不关心具体文件系统的实现细节,使用抽象、统一、虚拟的界面。
内存管理机制
编程者看到的是逻辑地址空间,OS看到的是物理地址空间
OS的本质是什么
管理者- 提供软硬件资源,提高效率
服务者- 提供各种服务,方便用户
归根结底是执行者
OS的执行机制
执行用户程序- 为用户服务 - 进程机制;
响应中断- 为外设服务 - 中断机制;
执行系统调用- 解放程序员(使得程序员不需与繁杂的硬件打交道) - 软中断机制;
执行内核线程- 为操作系统自身服务 - 线程机制;
中断机制:
当新的设备引入新类型的中断时,CPU和操作系统不用关注如何处理它。
OS负责提供接口,让用户通过该接口注册根据设备具体功能而编制的中断服务程序。
如果用户注册了对应于一个中断的服务程序,那么CPU就会在该中断到来时调用用户注册的服务程序。
该中断来临时需通需要如何操作硬件、如何实现硬件功能
这部分工作就完全独立于CPU架构和操作系统的设计。
中断机制的实施
Linux把系统调用、异常和外部中断纳入统一框架处理
外部中断分为上下两半部分处理,上半部分就是通常的中断处理过程,下半部分有多种处理机制,softirq,tasklet,工作队列
Xen负责在各虚拟机之间进行CPU调度和内存分配,不会处理网络、存储设备、视频以及其他I/O。
Xen的驱动分离机制
DomU - Hypervisor - Dom0 - Hardware (有没有可能引起危害呢?因为domU是不可信的)
Dom0中的后端设备和DomU中的前端设备通过共享内存和事件通知来交互
机制与策略分离:
Xen Hypervisor 实现了机制,而把策略留给Dom0客户操作系统
Xen本身并不支持任何设备,它只是提供一种机制,使得客户操作系统可以直接访问物理设备
客户操作系统可以使用现有的设备驱动程序
这就使得即使支持一个新设备无需修改Xen
阅读(1118) | 评论(0) | 转发(0) |