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

集群系统MOSIX分析(5)

 2008-12-01 11:04:43 来源:WEB开发网   
核心提示: MOSIX中进程的mm_struct结构中提取内存状态,并被封装成struct mm_stats_h结构,集群系统MOSIX分析(5)(5),和MIG_MM_STATS 消息一起发送到目的进程去(参见mig_send_mm_stats())struct mm_stats_h{unsigne

MOSIX中进程的mm_struct结构中提取内存状态,并被封装成struct mm_stats_h结构,和MIG_MM_STATS 消息一起发送到目的进程去(参见mig_send_mm_stats())

struct mm_stats_h
{
  unsigned long start_code, end_code, start_data, end_data;
  unsigned long start_brk, brk, start_stack;
  unsigned long arg_start, arg_end, env_start, env_end;
  unsigned long task_size;
};

进程虚地址空间:

为了能以自然的"方式"管理进程虚空间,Linux定义了虚存段VMA(vitual memory area),一个VMA是进程的一段连续的虚存空间,在这段虚存里的所有单元拥有相同的特征,如相同的访问权限、属于同一进程等。VMA由struct vm_area_struct描述,域vm_start 和vm_end是两个虚拟地址,它们描述了一个虚拟内存区域在进程虚拟地址空间中的位置;域vm_file记录了该区域所映射的文件,而vm_offset 表示该区域在映射文件中的开始位置。如果这两个域存在,它们和vm_start 和vm_end一起,描述了文件vm_file和虚拟内存之间的映射关系。域vm_next是个指针,用来将同一进程的所有虚拟内存区域连接成一个链表,表头位于mm_struct结构的mmap成员。因此,能够从mmap表头出发,依次获得所有的虚拟内存区域的状态。下面列出了struct vm_area_struc的一些主要成员。

struct vm_area_struct {
  struct mm_struct * vm_mm;  /* 所属的地址空间,回指mm_struct结构. */
  unsigned long vm_start;    /* 开始地址. */
  unsigned long vm_end;    /* 结束地址*/
  struct vm_area_struct *vm_next; /*指向本进程下一个VMA ,按地址排序 */
  pgprot_t vm_page_prot;    /*该VMA的访问属性. */
  unsigned long vm_flags;    /* 标志位 */
  struct vm_operations_struct * vm_ops; /*该VMA的操作集*/
struct file * vm_file;    /* 指向映射文件 (可以为 NULL). */
  /* AVL树,按地址排序*/
  short vm_avl_height;
  struct vm_area_struct * vm_avl_left;
  struct vm_area_struct * vm_avl_right;
  /*共享VMA*/
  struct vm_area_struct *vm_next_share;
  struct vm_area_struct **vm_pprev_share;
}

上一页  1 2 3 4 5 6 7  下一页

Tags:集群 MOSIX

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