址或文件名都是开放的,只要知道这些接入点的程序都可以和对端建立连接,不管怎样都无法阻止恶意程序通过猜测接收方地址获得
连接。
基于以上原因, 需要建立一套新的 机制来满足系统对通信方式,传输性能和安全性的要求,这就是 。 基
于 ! 通信模式,传输过程只需一次拷贝,为发送发添加 #$"$ 身份,既支持实名 也支持匿名 ,安全
性高。
面向对象的
使用 ! 通信方式:一个进程作为 ! 提供诸如视频"音频解码,视频捕获,地址本查询,网络连接等服务;
多个进程作为 向 ! 发起服务请求,获得所需要的服务。要想实现 ! 通信据必须实现以下两点:一是
!必须有确定的访问接入点或者说地址来接受 的请求,并且 可以通过某种途径获知 ! 的地址;二是制定
&'% 协议来传输数据。例如在网络通信中 ! 的访问接入点就是 ! 主机的 地址(端口号,传输协议为
) 协议。对 而言, 可以看成 ! 提供的实现某个特定服务的访问接入点, 通过这个‘地址’向 ! 发
送请求来使用该服务;对 而言, 可以看成是通向 ! 的管道入口,要想和某个 ! 通信首先必须建立这个管
道并获得管道入口。
与其它 不同, 使用了面向对象的思想来描述作为访问接入点的 及其在 中的入口: 是一个实体位于
! 中的对象,该对象提供了一套方法用以实现对服务的请求,就象类的成员函数。遍布于 中的入口可以看成指向这个
* 对象的 ‘指针’,一旦获得了这个‘指针’就可以调用该对象的方法访问 !。在 看来,通过 +指针’调用其提供
的方法和通过指针调用其它任何本地对象的方法并无区别,尽管前者的实体位于远端 ! 中,而后者实体位于本地内存中。‘指针’
是 ((的术语,而更通常的说法是引用,即 通过 的引用访问 !。而软件领域另一个术语‘句柄’也可以用来表述
在 中的存在方式。从通信的角度看, 中的 也可以看作是 ! 的‘代理’,在本地代表远端
! 为 提供服务。本文中会使用‘引用’或‘句柄’这个两广泛使用的术语。
面向对象思想的引入将进程间通信转化为通过对某个 对象的引用调用该对象的方法,而其独特之处在于 对象是一个
可以跨进程引用的对象,它的实体位于一个进程中,而它的引用却遍布于系统的各个进程之中。最诱人的是,这个引用和 ,&!& 里引
用一样既可以是强类型,也可以是弱类型,而且可以从一个进程传给其它进程,让大家都能访问同一 !,就象将一个对象或引
用赋值给另一个引用一样。 模糊了进程边界,淡化了进程间通信过程,整个系统仿佛运行于同一个面向对象的程序之中。形
形色色的 对象以及星罗棋布的引用仿佛粘接各个应用程序的胶水,这也是 在英文里的原意。
当然面向对象只是针对应用程序而言,对于 驱动和内核其它模块一样使用 语言实现,没有类和对象的概念。 驱动
为面向对象的进程间通信提供底层支持。
-通信模型
框架定义了四个角色: !,, !.&&/(以后简称 ./)以及驱动。其中 !,, ./ 运
行于用户空间,驱动运行于内核空间。这四个角色的关系和互联网类似: ! 是服务器, 是客户终端, ./ 是域名服务
器($0 ),驱动是路由器。
-1驱动
和路由器一样, 驱动虽然默默无闻,却是通信的核心。尽管名叫‘驱动’,实际上和硬件设备没有任何关系,只是实现方式和设
备驱动程序是一样的:它工作于内核态,提供 %23,&%23,%23,23等标准文件操作,以字符驱动设备中的 设备
注册在设备目录 "! 下,用户通过"!"* 访问该它。驱动负责进程之间 通信的建立, 在进程之间的传递,
引用计数管理,数据包在进程之间的传递和交互等一系列底层支持。驱动和应用程序之间定义了一套接口协议,主要功能由
23接口实现,不提供 &23,423接口,因为 23灵活方便,且能够一次调用实现先写后读以满足同步交互,而不必分别
评论3
最新资源