《嵌入式实时操作系统:RT-Thread设计与实现》 —3.5.2 内核对象管理架构
3.5.2 内核对象管理架构
RT-Thread采用内核对象管理系统来访问/管理所有内核对象,内核对象包含内核中绝大部分设施,这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。
通过这种内核对象的设计方式,RT-Thread做到了不依赖于具体的内存分配方式,系统的灵活性得到了极大的提高。
RT-Thread内核对象包括线程、信号量、互斥量、事件、邮箱、消息队列和定时器、内存池、设备驱动等。对象容器中包含每类内核对象的信息,包括对象类型、大小等。对象容器给每类内核对象分配了一个链表,所有的内核对象都被链接到该链表上,RT-Thread的内核对象容器及链表如图3-4所示。
图3-5则显示了RT-Thread中各类内核对象的派生和继承关系。对于每一种具体内核对象和对象控制块,除了基本结构外,还有自己的扩展属性(私有属性),例如,对于线程控制块,在基类对象基础上进行扩展,增加了线程状态、优先级等属性。这些属性在基类对象的操作中不会用到,只有在与具体线程相关的操作中才会使用。因此,从面向对象的观点上来说,可以认为每一种具体对象都是抽象对象的派生,继承了基本对象的属性并在此基础上扩展了与自己相关的属性。
图3-4 RT-Thread的内核对象容器及链表
图3-5 RT-Thread内核对象的继承关系
在对象管理模块中,定义了通用的数据结构,用来保存各种对象的共同属性,各种具体对象只需要在此基础上加上自己的某些特别的属性,就可以清楚地表示自己的特征。
这种设计方法的优点如下。
(1)提高了系统的可重用性和扩展性,增加新的对象类别很容易,只需要继承通用对象的属性再加少量扩展即可。
(2)提供统一的对象操作方式,简化了各种具体对象的操作,提高了系统的可靠性。
图3-5中由对象控制块rt_object派生的有:线程对象、内存池对象、定时器对象、设备对象和IPC对象(IPC即Inter-Process Communication,进程间通信。在RT-Thread实时操作系统中,IPC对象的作用是进行线程间的同步与通信);由IPC对象派生出信号量、互斥量、事件、邮箱与消息队列、信号等对象。
- 点赞
- 收藏
- 关注作者
评论(0)