文档介绍:华中科技大学
硕士学位论文
基于Xen的声音设备虚拟化的研究
姓名:周文博
申请学位级别:硕士
专业:计算机软件与理论
指导教师:李胜利
2011-01-25
华中科技大学硕士学位论文
摘要
随着虚拟化技术的发展, CPU 和内存虚拟化已经取得了很多研究成果,但是 I/O
虚拟化仍然面临着一些挑战。当前,Xen 半虚拟化方式并没有提供对声音设备虚拟
化的支持,导致用户在 Xen 半虚拟化的虚拟机上不能使用声音设备,这直接影响了
用户在 Xen 半虚拟化环境的使用体验。
使用分离驱动模型,通过在非特权虚拟机上创建一个前端声卡驱动和在特权虚
拟机上创建一个后端声卡驱动,可以为 Xen 半虚拟化环境实现声音设备的虚拟化。
前端声卡驱动基于 ALSA驱动架构注册一个虚拟声音设备为上层应用提供抽象接口,
并通过这些接口来截取上层应用的音频请求,然后将音频请求发送到后端。后端声
卡驱动接收来自前端的音频请求,然后将这些音频请求递送到物理声卡驱动以完成
对声音设备的操作。为了提高声音设备虚拟化的性能,使用了设备 I/O 环、授权表和
事件通道来实现前后端声卡驱动之间的高效数据传输,其中设备 I/O 环用于传输请求
和响应,授权表用于实现无拷贝的数据传输,事件通道用于虚拟机之间的异步通知。
前后端通信连接的建立是基于前后端声音设备 XenBus 状态的状态机完成的,这保证
了连接操作在前后端之间的有序进行。为了注册前后端声音设备到 XenBus 总线,在
配置文件里增加了对声音设备的支持,并在解析配置文件的过程中将前后端声音设
备构造到 XenStore,然后通过遍历 XenStore 探测前后端声音设备并注册到 XenBus。
实验表明,增加声音设备虚拟化的支持后,在 Xen 半虚拟化环境也能流畅播放
音频,并且相比 Xen 全虚拟化环境为用户提供了更好的音频体验。
关键词:设备虚拟化,分离驱动模型,半虚拟化,声卡驱动
I
华中科技大学硕士学位论文
Abstract
With the introduce of virtualization technology, there are many achievements about
the research of virtualizing CPU and memory , high-quality I/O virtualization is still a big
challenge. Currently Xen paravirtualization solution doesn’t provide the support for sound
device, so user can’t play audio in Xen paravirtualized environment, which directly
impacts the user experience in Xen paravirtualized environment.
Based on split driver model, creating a frontend sound device driver in unprivileged
guest and creating a backend sound device driver in privileged guest can implement sound
device virtualization in Xen paravirtualized environment. The frontend sound device
driver builts a virtual sound device based on the ALSA driver architecture, which provides
abstract interfaces for upper. The frontend sound device driver intercepts the audio
requests via these interfaces and sends them to the backend sound device driver, which
receives audio requests and passes them to native sound device driver to operate sound
device. For high-efficiency, using the device I/O rings to