集群系统MOSIX分析(6)
2008-12-01 11:04:52 来源:WEB开发网由于MOSIX的一个实现目标就是透明性,给用户一个单系统印象(SSI)。MOSIX实现了迁移进程的位置无关性,用户和应用并不需要知道进程已被迁移走。即使节点A上的进程a被迁移走,A上的用户通过ps -ax命令仍能看到进程a,似乎进程a并未迁移走 。另外,在前面介绍的迁移过程中,并没有迁移进程的打开文件。但是remote进程仍能正常处理文件的读写,并保持与其它进程的网络通讯。通过deputy和remote的交互配合,MOSIX系统实现了很高的透明性。
大多数处理器都有几种执行状态,如:核心态和用户态。操作系统内核运行在核心态,用户进程运行在用户态。用户进程不能直接执行运行在核心态的内核代码或者存取操作系统内核的数据结构。这种方法保护了操作系统内核,提高了系统的安全性。系统运行模式的区分虽然带来了安全性,但同时也带来了不便。因为系统的许多工作必须由内核代码完成(如创建进程、分配内存、驱动设备等),用户程序无法、也不能直接做这些工作。但用户程序又不得不做这些工作(如创建子进程等),因此操作系统必须提供一种机制让用户程序能在用户代码段中调用操作系统内核的函数。这就是通过系统调用。在MOSIX中,remote部分是对用户级的封装,而deputy则是进程内核级的封装,进程通过系统调用进入核心态,在MOSIX中是怎么处理的呢?
当进程迁移成功后,deputy和remote之间仍然保持着迁移中建立起来的那条通讯连接。 Remote则按照程序流程,恢复执行,当遇到系统相关的系统调用或资源请求时,如果不能在本地处理,则向deputy发送请求,然后等待Deputy处理后的结果。Deputy在进程迁移后,一直处于核心态中,等待remote发送的请求,然后根据请求类型,作出相应的处理,将处理结果回复给remote。
赞助商链接