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

集群系统MOSIX分析(7)

 2008-12-01 11:04:48 来源:WEB开发网   
核心提示: mosix_deputy_setup_frame()通过deputy_request()函数向REMOTE发送DEP_SETUPFRAME请求,REMOTE将在remote_wait()函数中接收到该请求,集群系统MOSIX分析(7)(4),调用remote_setup_frame()来响

mosix_deputy_setup_frame()通过deputy_request()函数向REMOTE发送DEP_SETUPFRAME请求,REMOTE将在remote_wait()函数中接收到该请求,调用remote_setup_frame()来响应该请求。REMOTE进程在remote_setup_frame()中,根据DEPUTY传来的参数,通过setup_rt_frame()或setup_frame()安排好一个框架。

这样,当REMOTE进程从系统空间返回到用户空间时,将执行信号处理程序。然后,将通过sigreturn()系统调用重返系统空间。sys_sigreturn()的作用就是从用户空间执行信号处理程序的框架中恢复当初系统空间中的原始框架。它通过restore_sigcontext() 恢复框架的。但是对于DEPUTY进程,则是通过mosix_deputy_restore_sigcontext()函数来恢复系统空间的原始框架的【参见sys_sigreturn()】。这里,因为是REMOTE进程调用sigreturn()系统调用,因此根据我们前面对系统调用的分析,REMOTE进程向DEPUTY进程发送REM_SYSCALL请求,DEPUTY将在通过deputy_syscall()函数中调用sys_sigreturn()来响应该请求。

mosix_deputy_restore_sigcontext()则向REMOTE进程发送DEP_RESTORESIGCONTEXT请求。REMOTE在向DEPUTY发送REM_SYSCALL请求后,将处于remote_wait()循环中等待REM_SYSCALL请求的应答【参见remote_standard_system_call()】。REMOTE在remote_wait()中接收到DEP_RESTORESIGCONTEXT请求后,则通过remote_restore_sigcontext()函数调用restore_sigcontext()真正恢复核心空间的原始框架。此后,当REMOTE进程从系统空间返回后,将回到信号处理前原先的用户空间处继续往下执行。

信号发送

发送一个信号给进程可以在用户空间通过系统调用发送,如通过sys_kill和 syr_rt_sigqueueinfo调用发送。内核也可以通过force_sig()和force_sig_info()向进程强制发送信号,将屏蔽位强制清除,不允许目标进程忽略该信号。

上一页  1 2 3 4 5  下一页

Tags:集群 MOSIX

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