论文部分内容阅读
Wine是一款优秀的开源软件,通过在Linux用户空间仿真Windows操作系统环境,使得Windows应用程序能够直接在Linux操作系统上安装和使用。Wine弥补了Linux操作系统上应用软件的贫乏,对提升Linux操作系统在桌面领域的影响力有很大的促进作用。仿真Windows操作系统环境的是Wine中的Wineserver部件,它以Linux进程的形式运行并响应和处理所有Windows应用程序的Win32API请求。因为Wineserver运行机制的原因,Windows应用程序在Wine上运行效率不是很理想。首先, Windows应用程序发送Win32API请求以后,还需要请求进程调度以便让Wineserver运行;其次,Wineserver通过轮询和串行机制来处理所有的请求。当有大量Win32API请求时,Wineserver的这种处理机制将会成为瓶颈。本文通过在Linux内核中扩展Wineserver机制,使得Wineserver成为一个内核功能部件而不再是一个用户进程,从而提高Wineserver响应Win32API请求的效率。本文主要工作包括:1、针对Wineserver的进程调度问题,本文首先在Linux内核中建立了Win32API系统调用界面,同时扩展Wineserver所仿真的几个Windows功能部件并在Linux内核中实现。当Windows应用程序请求服务时,可以直接通过Win32系统调用界面进入到Linux内核空间中并调用Wine所提供的Win32API函数接口,从而避免了进程切换所带来的性能损耗。2、针对Wine在Linux用户空间间接加载Windows二进制映像文件,在完成第1步工作的情况下,在Linux内核空间中实现了Windows映像文件加载器。因此,Linux内核可以直接加载Windows映像文件。综上,本文的工作主要解决了Wineserver在处理Windows服务请求时因进程调度所带来的性能损失,提高了Wineserver的运行效率。