集群系统MOSIX分析(4)
2008-12-01 11:02:39 来源:WEB开发网MOSIX中,每个进程的控制块中都保持着一条MOSIX连接contact(struct mosix_link *contact),用于deputy和remote之间的通讯。进程的remote部分可以在节点间多次迁移,但是deputy总能根据它的contact连接来定位remote部分;remote也能根据它的contact连接和deputy部分通讯合作。对于未迁移的进程,contact总是为NULL。
MOSIX连接层接口
MOSIX连接层提供了一系列接口用于集群间进程之间互相发送和接收数据。从这些接口的名字上,我们就很容易判断出它们的功能。
comm_open():为MOSIX 通讯打开一条连接
mosix_link * comm_open(int mos, mosix_addr *maddr, unsigned long timo)
如果mos > 0,则连接到第#mos号节点上的迁移守护进程。
如果mos = COMM_TOADDR,则连接maddr->saddr中给定的地址。
如果mos = COMM_ACCEPT,则打开一个SOCKET,并且可以接受连接。
如果mos = COMM_MIGD,则为迁移守护进程设置SOCKET。
如果mos = COMM_INFOD,则为信息守护进程设置SOCKET。
如果mos = COMM_LOOSE,则允许连接多个守护进程。
comm_use() :为进程设置新的连接并返回旧的连接
mosix_link *comm_use(struct task_struct *p, mosix_link *mlink)
进程p将使用mlink连接进行通讯。
comm_close():关闭Mosix通讯连接
void comm_close(mosix_link *mlink)
调用comm_shutdown(mlink)关闭对连接的写入,然后通过sock_release(mlink->sock)释放该连接上的套接字。
更多精彩
赞助商链接