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

集群系统MOSIX分析(5)

 2008-12-01 11:04:43 来源:WEB开发网   
核心提示: 由于物理页面的迁移很费时间,为了给其它进程必要的运行时间,集群系统MOSIX分析(5)(7),MOSIX并不会一次将所有页面完全迁移,而是迁移一定数目的页面后, 进程被允许直接使用in/out IO指令(通过ioperm系统调用), init(1号)进程不能被迁移,就再次调度schedul

由于物理页面的迁移很费时间,为了给其它进程必要的运行时间,MOSIX并不会一次将所有页面完全迁移,而是迁移一定数目的页面后,就再次调度schedule( ),给予其它进程运行的机会。

浮点处理器状态

task_struct结构中,used_math成员表明进程是否使用了浮点运算器,struct thread_struct 类型的thread成员则保存了该进程和CPU特定相关的状态。如果进程使用了浮点运算器的话,则也要迁移浮点处理器状态,这可以从thread.i387结构中获得。

union i387_union {
  struct i387_fsave_struct  fsave;
  struct i387_fxsave_struct  fxsave;
  struct i387_soft_struct soft;
};

局部描述符表(LDT)

局部描述符表是一个段,它其中存放的是局部的、不需要全局共享的段描述符。例如,可以为每个正在运行的任务定义一个LDT,其中包含仅能被该任务使用的段描述符,如任务的代码段、数据段、堆栈段以及一些门描述符等。struct mm_struct的成员context 保存着体系结构相关的MM上下文。但是i386 结构不存在 MMU 上下文, 而是将段信息保存在其中。LDT保存于mm的segment成员中。每个进程最多有LDT_ENTRIES (8192)个条目,每个条目大小为LDT_ENTRY_SIZE (8)。

其它进程状态信息

包括其它的一些进程状态,如进程的时间数据成员,进程标识,进程资源管理等。

资源管理信息(limits)

结构rlimit中定义了与进程相关的资源限制信息。包括一个用户可以拥有的进程数、一个进程可以打开的文件数、地址空间限制、文件大小、数据大小等。进程可以随意减少自己的当前资源限制,也可以增加自己的当前资源限制,但增加的总数不能超过最大值,而且最大总数不能修改。一个进程只能修改自己的资源限制。进程中与资源控制相关的是数组rlim,其定义如下:struct rlimit {
  long    rlim_cur;    /* 当前值 */
  long    rlim_max;    /* 最大值 */
};

task_struct中rlim[RLIM_NLIMITS]数组保存了该进程得资源限制信息。迁移时,将从中取得CPU时间(RLIMIT_CPU)、最大数据长度(RLIMIT_CPU)、栈大小上界(RLIMIT_CPU)、驻留进程集上界(RLIMIT_CPU),地址空间界限(RLIMIT_CPU)等限制信息,传送到目的进程。

进程标识信息

包括进程的用户标识(uid)、用户组标识(gid)、进程的组标识号(pgrp)、 会话标识号(session)、可执行文件名(comm)。

时间数据成员

包括it_virt_value;和it_prof_value软定时值。

MOSIX控制相关状态

迁移限制

MOSIX的抢先式进程迁移机制进程支持对绝大多数进程的迁移,但是并不是所有的进程都能被迁移的。具有下面这些情况的进程是无法被迁移的。

进程以共享内存的方式使用文件或者使用了SysV IPC的共享内存。

进程映射了一些设备内存(device memory)。

进程处于8086仿真模式。

进程为内核守护进程。

进程的部分内存被mlock系统调用锁住。

进程与其它线程共享它的内存。

进程为实时调度的进程。因为迁移后无法精确控制时间。

进程被允许直接使用in/out IO指令(通过ioperm系统调用)。

init(1号)进程不能被迁移。

进程映射硬件内存来进行原始(raw )I/O。

上一页  2 3 4 5 6 7 

Tags:集群 MOSIX

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