![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
lygweifeng
这个作者很懒,什么都没留下…
展开
-
uc/os-II 分析(2)
二. 任务的调度管理 对于多任务的操作系统来说,多任务之间的调度是系统的核心。调度就是确定在多任务中确定哪个任务先运行。所谓的调度器就是实现这个功能的函数。 1. 任务就绪表 uc/os-II的任务调度思想:一直让优先级最高的而且就绪的任务处于运行状态,使用调度器来确定要运行的任务并运行任务。uc/os-II的调度依据就是任务就绪表。 在RAM中设立一个记录表,用来记录哪些任务已经就绪,哪原创 2016-11-02 22:52:47 · 345 阅读 · 0 评论 -
ucos-ii分析(1)
ucos-II虽然是一个小微的操作系统,但是基本上包含了操作系统的机制和管理原理,分析它可以有助于我们对操作系统的理解和应用,有助于我们开发产品。 我对分析整体的划分,分成如下几个部分: 1. 任务的创立和管理机制; 2. 任务的调度管理 3.同步和互斥的机制实现 4. 任务间通信 5. 中断和时钟 6.信号量集的实现 7.内存管理 一. 任务的创立和管理机制:原创 2016-11-02 08:29:03 · 589 阅读 · 0 评论 -
uc/os-II 分析(10)--消息队列
消息队列在任务间可以传递多条消息,由3部分组成:事件控制块、消息队列和消息、 OSEventType=OS_EVENT_TYPE_Q时,描述的就是消息队列。 1.消息指针数组 消息队列的核心iushi消息指针数组。 OSQSize: 数组的长度; OSQEnter:已存放消息指针的元素数目; OSQStart: 指针,指向消息指针的起始数组; OSQEnd:指针,指向消息指针数组结束翻译 2016-11-13 15:20:46 · 486 阅读 · 0 评论 -
uc/os-II 分析(9)---消息邮箱
消息邮箱:任务和任务之间传递数据,在存储器中建立一个数据缓冲区,用这个缓冲区进行数据通信。 如果把数据缓冲区的指针赋值给OSEventPtr,同时OSEventType为常数OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱。 1. 创建消息邮箱 函数原型: OS_EVENT *OSMboxCreate( void *msg);//消息指针 返回翻译 2016-11-13 12:24:33 · 433 阅读 · 0 评论 -
uc/os-II 分析(8)---互斥型信号量
互斥型信号量 互斥型信号量是一个二值信号量,可以使任务以独占方式使用共享,他可以独占方式使用共享资源。 互斥型信号量会出现任务优先级反转的问题。 1.优先级反转 在可剥夺型内核中,当任务以独占方式使用共享资源时,会出现低优先级任务先于高优先级 任务而被运行现象,这种现象叫做任务优先级反转。 出现优先级反转现象: 是因为一个优先级别较低的任务在获得了信号量使用共享资源期间,被具翻译 2016-11-13 11:47:34 · 683 阅读 · 0 评论 -
uc/os-II 分析(7)
一.信号量 事件控制块成员OSEventType=OS_EVENT_TYPE_SEM表示信号量;信号量由信号量计数器和任务等待表两部分组成。OSEventCnt作为计数器,用OSEventTbl[]数组来充当等待任务表。 1. 当有任务申请信号量时,如果信号量计数器OSEventCnt的值大于0, 则把OSEventCnt减1并使任务继续运行。 2. 如果OSEventCnt翻译 2016-11-13 09:03:52 · 337 阅读 · 0 评论 -
uc/os-II 分析(6)
任务的同步和通信: 1.同步和互斥概念 任务同步:任务之间的这种制约性的按照一定执行顺序执行的合作运行机制叫做任务间的同步; 任务互斥:对某个共享资源,如果一个任务在使用,则其他任务只能等待,等待该任务是否该共享资源,等待的任务之一才能占有资源。 2. 事件 事件:任务间的同步依赖于任务间的通信,使用信号量、邮箱(消息邮箱)和消息队列这些被当作事件的中间环节来实现任务之间的通信。翻译 2016-11-11 17:14:27 · 538 阅读 · 0 评论 -
uc/os-II分析--(5)---时钟
提供时钟以供系统处理:延时,超时等与时间相关的时间。采用硬件定时器产生一个毫秒级的周期性中断来实现系统时钟。最小的时钟单位是两次中断之间的间隔的时间,这个最小时钟单元叫做时钟节拍。----time Tick 1. 硬件定时器以时钟节拍为周期定时产生中断,该中断的中断服务程序叫做OSTickISR(); OSTimeTick()来完成每个时钟节拍时需要做的工作。 2.任务的翻译 2016-11-07 11:47:02 · 463 阅读 · 0 评论 -
uc/os-II 分析(4)----中断
1.概念: uc/os-II响应中断的过程:在系统接收到中断请求后,如何这时候CPU处于中断允许状态,系统就会中止正在运行的当前任务,而按照中断响应的指向转而去运行中断服务子程序; 中断服务子程序运行结束后,系统将会根据情况返回被中止的任务继续执行,或去运行另外一个优先级更高的就绪任务。 2. uc/os-II属于可剥夺型内核;中断结束回来不是运行原来任务,而是等待中级别最高的。记翻译 2016-11-07 11:22:13 · 834 阅读 · 0 评论 -
uc/os-II 分析 (3)
3.uc、os-II管理调度函数 1)任务的创建 任务是由控制块来管理的,因此任务的创建就是创建一个控制块,并通过控制块来把任务代码和任务堆栈关联起来形成一个完整的任务。并把新创建的任务进入就绪状态,引入一次任务调度。 用函数OSTaskCreate()创建任务,函数原型: INT8U OSTaskCreate( void (*task)(void *pd), //指向任原创 2016-11-03 09:27:07 · 335 阅读 · 0 评论