ucos-II虽然是一个小微的操作系统,但是基本上包含了操作系统的机制和管理原理,分析它可以有助于我们对操作系统的理解和应用,有助于我们开发产品。
我对分析整体的划分,分成如下几个部分:
1. 任务的创立和管理机制;
2. 任务的调度管理
3.同步和互斥的机制实现
4. 任务间通信
5. 中断和时钟
6.信号量集的实现
7.内存管理
一. 任务的创立和管理机制:
1.任务的基本属性:
a) ucos-II中的任务相当于linux的线程,负责完成大程序中的一个小任务。
b)系统中对任务的存储结构: 任务控制块----保存任务的工作属性,任务堆栈---保存任务工作环境, 任务程序代码---任务的执行部分代码;
c)任务的分类:ucos-II分为用户任务 和系统任务;linux中分为用户空间和内核空间。两者机理类似。
用户任务:解决实际问题; 系统任务:为应用程序提供支撑服务;
d) 每一个任务都是当中一个节点,相当于一个链表。(数据结构中的链表结构,单链表,双链表)
2.任务管理
a) ucos-II具有64个任务,包括系统任务和用户任务。 思考:能不能扩大任务数?ucos-II中如何实现任务数量的管理的?
b) 任务的执行状态: 运行,就绪,等待,睡眠,中断,来实现对CPU控制权的管理、
c)为应用任务服务的两个系统任务:空闲任务和统计任务。空闲任务每个应用任务必须用,指某个时间段内无用户任务可运行而应用的任务,防止CPU闲的捣蛋而创立的+1任务。统计任务是计算CPU的利用率而设计的。
d) 任务的优先权和优先级别:64个任务, 0最大,63最小;
e)任务堆栈:在存储器中后进先出的原则组织的连续存储空间。为了满足任务切换和响应中断时保存的CPU寄存器内容和存储任务私有设计的需要。
任务堆栈的增长方向: 由低到高,由高到低,视处理器的情况而定。
f)任务控制块:管理任务的当前状态,任务的堆栈指针,任务的优先级别等状态的,放在任务控制块中。ucos-II有两个任务控制块链表:一个是空任务链表,任务控制块还没分配任务;二是任务块链表,分配过任务的控制块。
g)任务就绪表和任务调度:
任务调度:多个任务运行时如何来确定让哪个任务先运行;通过任务就绪表来进行管理,记录任务的就绪状态。
如何让任务间进行切换由任务调度器来完成:1.在任务就绪表中查找具有最高优先级的就绪任务,2,实现任务的切换。2种调度器:一是任务级的调度器,一个是中断级的调度器;
h)任务的创建,挂起和恢复;
i)任务优先级别的修改,任务的删除;
j)任务的初始化和启动;
参考书籍《嵌入式实时操作系统uc/os-II原理及应用》 ---任哲