第29卷第1期2008年2月首都师范大学学报(自然科学版)JournalofCapitalNormalUniversity(NaturalScienceEdition)NO.1Feb.2008运用Solarisr-1(Door)技术对提高计算机内存利用率的影响耿佳孙卫真(首都师范大学信息工程学院.北京100037)摘要门(Door)技术是Sun公司开发的Solafis操作系统中的一个进程间通信的功能.通过分析f-j(Door)机制的基本原理和结构,编写了基于Solarisf-1(Door)机制的客户,服务器的测试程序,并利用Solaris操作系统提供的内核分析工具对计算机内存的使用情况进行了详细的分析。获得了确定的结果.实现了在门(Door)机制的结构下对内存的共享,提高了内存的利用率,并且对于相同并发线程数量与利用率的关系给出了分析与结论.关键词:Solaris,操作系统,进程间通信(IPC),f-I(Door).中图分类号:TP316.811Solaris门进程间通信的基本原理进程间通信(IPc)是由操作系统支持的,它允许一个进程与另外的一个进程之间相沟通.进程可以在同一台计算机或经过网络连接的不同计算机上运行.IPC维持了进程进入共享资源和进程间同步的次序.门由服务器进程创建并由客户进程调用,由同一个进程完成创建和调用的情况也有可能.当门创建后,服务器端会指定一个服务器线程,它会被客户端调用.不像大多数远程过程调用那样,每个门对于每个客户都会对应一个服务器线程.服务器端可以将门绑定到一个文件,通过打开这个文件,客户端可以连接到对应的门.如图1.从图l中可以看出,门机制不仅仅是进程间通信的一种方法,还结合了远程过程调用,可以说,它是IPC和RPC的综合.由于门机制是基于用户线程级的,因此采用门机制有一个很大的好处.即可以节省内存的使用.多个客户共享同一段内存,从而提高系统的运行效率,这在每个用户线程都需要占用很大内存的服务器的情况下,效果极为明显.收稿日期:2007-09.0320客户进程图1Solaris门㈣∽0|内存页2Solaris门机制的结构分析从客户方面看,门使用的文件抽象是被客户核心线程用于取回函数door_call()产生的门句柄的.打开文件系统的一个路径名,返回的文件描述符被看作是door_call()的一个参数传递给对应的门.参数结构体(door_a骓t)由客户进程的代码声明而且用于传递参数给门服务器端的函数.从服务器方面看,利用door_create()来定义一个函数与客户通信.服务器还必须绑定门到一个文件系统命名空间中的某个文件.一旦这个绑定建立之后,客户就可以发出打开路径名的请求并且在door_call()中使用返回的万方数据第1期耿佳等:运用Solarisf-1(Door)技术对提高计算机内存利用率的影响文件描述符了.在进程中,门通过门描述符被引用,它在形式和功能上与文件描述符很相似.事实上,进程中门描述符的指写使用了文件描述符的通道.支持门机制所需的主要数据结构如图2.图2Solaris门结构两个主要的结构分析别是door_node,它与进程结构中的p-door_list指针相连,以及door_data,它与door_node中的door_data指相连.一个门服务器进程可以有多个函数(多个对应客户的门),因此客户的每次调用都产生一个door_node结构,它们通过door_list链接到一个.door_data结构的创建作为服务器线程创建的一部分,其中包括一个用来管理door_call函数中参数表的door_arg结构,还包括一个当服务器函数被调用时,用来传递门描述符的门描述符指针(door_desc).3基于门机制的客户,服务器的实现3.1构造设计并实现门由服务器线程创建并由客户线程调用.所以这里我们分别构造了服务器的线程和客户的线程.同时设计两个服务器门,一个用于验证客户传来的密码是否正确,另一个编写一段测试函数,即用于读某个指定文件.实验时在若干个客户端调用这个函数,产生若干个用户级的线程,来分析门机制共享内存的好处.为了进行比较分析,我们再编写一段没有使用门的代码,采用其他的进程间通信的方法实现相同的功能.在运行中使用内存分析工具来跟踪内存的使用情况.图3分别显示了程序中门机制服务器和客户线程的流程图.服务器线程图3客户线程门程序流程图下面是程序的主要代码,它们说明门是如何进行进程间通信的.door_logiIL81W登陆服务门中主要代码:intmain(intargc,c...