论文部分内容阅读
多任务已经成为现代普通操作系统的必备功能之一。多任务在同一台计算机上分时运行让用户使用计算机更为方便灵活,允许多项工作同时共享同一台计算机资源。与之同时,多个进程经常需要为完成相关的工作而进行进程间的通信,这时就需要用到操作系统提供的进程间通信(IPC, Inter-Process Communication)的功能。IPC性能的提升往往意味着相关进程响应时间更短,效率更高。本文试图从内存管理策略以及内核实现出发,分析IPC过程中的开销,研究Linux中通过调整内存管理策略进一步提高IPC性能的方法。本文首先介绍了课题的背景、意义以及相关的研究,简要介绍了现代操作系统内存管理需求以及由此带来的IPC问题,介绍了操作系统内核的种类及相应的内存管理策略,文章还简要介绍了不同操作系统内核为了适应内核架构而提供的不同的进程间通信方法。本文随后详细分析了几个具有代表性的操作系统内核中进程间通信的机制以及实现的方法。文章先从宏内核的角度出发,详细考察了Linux内核中内存管理策略以及它为用户进程间通信提供的若干种[PC手段以及使用方法。经过阅读内核中相应方法的代码,理清其实现原理,分析并总结了Linux内核中各IPC方法在使用过程中所产生的开销,比较了各种方法之间的差异。文章再从微内核的角度出发,考察了MINIX3以及L4这两个微内核中用于在系统服务间进行进程间通信的方法。文中介绍了这两种微内核的相关研究资料以及设计原理。在阅读了相应的实现代码后,分析了这两种内核提供的内存管理策略以及在相应模型下形成的进程间通信手段。在比较了以上这些方法的优劣后,文中分析了进一步提高Linux中IPC性能的方法,尝试性地将微内核L4中所用到的一些内存管理策略及方法应用到Linux内核中,试图提出一种通过跨进程的直接内存映射进行IPC的方法,并为此设计了相关的语义及使用方法。文章随后详细分析了该方法在Linux内核中实现的可行性以及具体的手段,再详细介绍了各语义的具体实现方法,分析了方法对内核其他部分所产生的影响以及解决方案。文章最后介绍了这种模型与Linux现有的IPC方法间的简单测试,比较了它们在不同数据量传输时以及单次传输时的时间开销。测试表明,这种IPC方法在达到Linux现有的共享内存性能的同时,单次传输时间更短,开销更少。