Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1760511
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-08-09 08:47:04

  opennebula编译之后,生成两个后台进程onedmm_sched,当执行one start时,实际执行脚本share/scripts/one,通过分析该脚本,其主要完成两个主要任务:

(1) oned -f 2 > &1 &

(2) mm_sched &

因此,下面的分析将会按照onedmm_sched这两个进程的角度去分析。

1 oned进程代码分析

oned进程进程一共创建了10个管理者对象,大多数管理者对象的执行流程是类似的,即创建两个线程:管理者线程和监听者线程。

1.1 监听者线程

    监听者线程都是通过MadManager::start()创建的,该函数主要是创建管道用来实现监听线程与监听对象的通信,这点来分析下监听线程,即函数mad_manager_listener

1.2 管理者线程

    管理者线程通过循环判断action队列是否为空,如果为空则睡眠等待,否则,从action队列上取出一个action进行处理,处理函数为:ActionManager::loop(),所有的action都要经过ActionManager类来进行处理,但是具体的实现方法则是通过每个对应的类实现ActionManager的虚成员函数来实现的。

1.3 管理线程、监听线程与驱动线程之间的关系

至此,基本搞清楚了opennebula核心框架的运行和交互机制,下面将会详细分析每一个对象管理类的功能和实现细节。


阅读(282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~