opennebula源码分析之框架分析

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

(1) oned -f 2 > &1 &

(2) mm_sched &

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

1 oned进程代码分析

opennebula源码分析之框架分析_第1张图片

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

1.1监听者线程

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

1.2管理者线程

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

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

opennebula源码分析之框架分析_第2张图片

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

你可能感兴趣的:(源码分析)