WEB开发网
开发学院服务器服务器方案 集群系统MOSIX分析(6) 阅读

集群系统MOSIX分析(6)

 2008-12-01 11:04:52 来源:WEB开发网   
核心提示: deputy这种方式将会给系统调用的执行带来不少的开销,主要是网络延迟,集群系统MOSIX分析(6)(3),而系统调用是比较频繁的,因此这会给进程的执行带来一部分代价,DREQ_CAPCNG:进程的权能被改变了,DREQ_DFSASYNC:DFSA改变,从系统调用返回在系统调用最终真正返回

deputy这种方式将会给系统调用的执行带来不少的开销,主要是网络延迟。而系统调用是比较频繁的,因此这会给进程的执行带来一部分代价。

从系统调用返回

在系统调用最终真正返回,回到用户态之前,将会转到straight_to_mosix标号,调用mosix_pre_usermode_actions,在返回用户态之前作些MOSIX系统相关的处理工作。首先对当前进程的性质进行判断。

如果当前进程是REMOTE,则调用remote_pre_usermode_actions()。首先检查deputy是否还需要它在核心态中为其做某些处理工作,如果是,则睡眠等待直到deputy的允许进程继续运行。然后检查是否处于错误的节点,如果是,则设置需要迁移回home节点。如果出现紧急事件,如前面设置需要迁移回home节点,则通知deputy有紧急事件发生。最后,如果存在未处理的异步信号或内核强制投递的信号,则将信号转发给deputy处理。

如果是DEPUTY,则调用deputy_main_loop(),根据DEPUTY的特性,我们知道它只是REMOTE在HOME节点的剩余,它应该主要处理和REMOTE的交互,而不是作实际的进程处理工作(计算或IO)。所以DEPUTY进程应该在deputy_main_loop()中循环等待和REMOTE的交互,直到意外死亡或不再是DEPUTY。这就是我们前面所说为什么deputy一直处于核心态的原因。

当前进程应该是本地的普通节点,作local_pre_usermode_actions()。首先做负载信息的衰退工作。如果进程被选中迁移了,则调用follow_whereto()迁移之。每个进程都不是独立的,不可能不受系统运行其它进程的影响。如果其它进程对本进程告知了某些请求,则必须检查并处理它。下面是一些考虑的请求:

DREQ_CHECKCONF:请求该进程检查MOSIX配置。

DREQ_CAPCNG:进程的权能被改变了。

DREQ_DFSASYNC:DFSA改变,需要被同步

DREQ_CHECKSTAY:检查进程是否需要继续呆在当前节点。

上一页  1 2 3 

Tags:集群 MOSIX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接