Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3319451
  • 博文数量: 258
  • 博客积分: 9440
  • 博客等级: 少将
  • 技术积分: 6998
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-03 10:28
个人简介

-- linux爱好者,业余时间热衷于分析linux内核源码 -- 目前主要研究云计算和虚拟化相关的技术,主要包括libvirt/qemu,openstack,opennebula架构和源码分析。 -- 第五届云计算大会演讲嘉宾 微博:@Marshal-Liu

文章分类

全部博文(258)

文章存档

2016年(1)

2015年(4)

2014年(16)

2013年(22)

2012年(41)

2011年(59)

2010年(40)

2009年(75)

分类: 云计算

2012-08-07 21:13:02

  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核心框架的运行和交互机制,下面将会详细分析每一个对象管理类的功能和实现细节。


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