`
小麦麦子
  • 浏览: 30848 次
文章分类
社区版块
存档分类
最新评论

Ucos系统时钟节拍详解

阅读更多

我们以前在将这个操作系统在进行多任务切换的时候,说过这样的概念操作系统怎么进行多任务切换呢?

  首先它把这个时间进行分片,就是划分为11片的,比如说这个时间都以10毫秒划分为1个片,在第一个10毫秒中执行一个任务,在第二个10毫秒中执行另外一个任务,在第三个10毫秒中执行另外一个任务,这样的话,我们就进行了一个多任务的切换,多任务在切换的过程中,必须要使用的一个就是时钟节拍,时钟节拍实际上是一个定时器,这个定时器它定时的来切换我们的各个任务,比如这个任务执行10毫秒,那操作系统怎么知道执行10毫秒的时间有没有到达,或者说当这个任务主动放弃CPU的时候,那操作系统怎么知道你主动放弃了CPU,所以,在这里就要用到时钟节拍了。

  时钟节拍实际上就是一个硬件定时器,就是由硬件给我们提供一个定时器,它定时一定的时间,比如说,我们定时1毫秒,那也就是说每隔1毫秒我来检查一下当前的这个任务状态,那比如说,在某一个时钟节拍中,我发现这个任务它的定时时间到了,它的执行时间到了,那我就让它执行下一个任务,把这个任务的执行权剥夺掉,然后执行下一个任务,或者说,在某一个时钟节拍中这个任务主动放弃了CPU,那这个时候,我也去执行下一个任务,这就是我们时钟节拍的作用。一个操作系统必须要有一个时钟节拍,为什么呢?

  因为这个时间,还有任务状态的判断都与这个时钟节拍有关系。那接下来这个问题出现了,我们使用到的这个时钟节拍,并且我们知道时钟节拍是由硬件定时器提供的,那这个定时时间多长比较合适呢?我们定时1毫秒,还是10毫秒,还是100毫秒好,一般来说,我们来看看定时1毫秒和100毫秒有什么不同。

  首先我们来看看定时1毫秒,定时1毫秒也就是说,每隔1毫秒,我们的CPU会来检查一下各个任务的状态,那CPU在检查这个任务的状态的时候,那我们可以看看,它在检查这个任务的状态的时候执行的代码对于我们任务来说,它是一个无用功,因为你在检查任务的状态的时候,这样的代码对于我们任务来说根本没有任何作用,所以说,我们可以看到,当你1毫秒中断一次,也就是每秒钟检查1000次,而我这个100毫秒,每秒钟只检查10次,那也就是说,你检查1000次,和检查10次,显然检查1000次做的无用功显然要远远大于检查10次,那我们从这可以看到,检查时间越短,那CPU做的无用功也就越多。

  但是,我们看一下另外一个问题,假设我还是1毫秒进行一次时钟节拍,定时器定时1毫秒,假设在这个时刻,这个任务放弃了执行权,也就是说这个任务说,我不需要执行了,那从它放弃到我们CPU发现了这个最大时间间隔是1毫秒,为什么呢?

  因为我们定时器定时的时间是1毫秒,那对于定时100毫秒呢,我们看一下,从这个任务放弃CPU使用,到操作系统发现了它的最大时间是100毫秒,那很显然,这个1毫秒要比100毫秒的实时性要好,所以我们可以看到如果定时器定时的时间越短,它的实时性越好,但是CPU做的无用功越多,同样,定时的时间越长,虽然CPU做的无用功越少,但是,它的实时性越差。那对于一个系统,我们的时钟节拍设置为多少合适呢?

一般来说,我们设置的时钟节拍在10-100毫秒之间是比较好的,当然,随着我们CPU时钟的提高,比如我们说我们这个CPU跑的时钟频率比较高,都跑到了100M,比如128M400M这样的频率,那这个时候,我们可以设置到1000赫兹,就是1毫秒这样的时间,一般来说,设置为1毫秒已经是实时性比较好了,那如果你设置为微秒级的话,那这个时候,CPU做的无用功就相当相当多了,那这个时候,我们的实时性也不会提升到多好。所以,一般来说,我们设置的时钟节拍在10-100毫秒之间。当然如果CPU的频率比较高,你可以设置到1000赫兹。

 

原文链接:http://www.maiziedu.com/wiki/iot/ucosclock/

 

分享到:
评论

相关推荐

    ucos系统移植

    5. **时钟节拍处理**: 配置并实现硬件定时器,为UCOS提供时钟节拍,用于任务调度和时间管理。 6. **设备驱动开发**: 根据目标平台的外设,编写相应的设备驱动程序,使UCOS能够控制这些硬件设备。 7. **测试与调试*...

    ucos2操作系统

    ucos2操作系统的时钟节拍与时间管理 ucos2(µC/OS-Ⅱ)是一款广泛应用于嵌入式系统的实时操作系统(RTOS),其核心特性之一是精确的时间管理和任务调度能力。时钟节拍是ucos2实现时间管理的基础,它要求用户提供...

    uCOS-II系统详解

    ### uCOS-II系统详解 #### 一、概述 uCOS-II是一款广泛应用于嵌入式系统的实时操作系统(RTOS),以其高效稳定的特点深受开发者喜爱。本文档旨在深入剖析uCOS-II的各项功能及其工作原理,帮助读者更好地理解并运用...

    ucosii系统在STM32移植详解.zip_ucosii_移植详解

    4. **配置RTOS**:根据uCOSII的配置文件,设定任务栈大小、系统时钟节拍率、定时器配置等。STM32的Systick定时器常用于实现RTOS的时钟节拍。 5. **任务创建**:在uCOSII中,任务是并发执行的基本单元。你需要定义...

    简单剖析uCOS,对各位童鞋了解架构很有帮助

    `OSTickISR()`是系统时钟节拍中断服务函数,定期触发,为内核提供时钟节拍,用于任务调度和延时计算。时钟节拍的频率应根据实际应用需求和MCU性能来设定。 6. **任务切换** uCOS中的任务切换分为任务级和中断级...

    at91rm9200移植ucos系统

    3. **配置RTOS内核**:UCOS内核配置包括定义任务数量、任务堆栈大小、时钟节拍率等。这些参数需要根据具体应用需求进行调整,以保证系统的实时性和效率。 4. **驱动程序开发**:AT91RM9200具有众多外设,如串口、...

    ucos2学习资料

    《UCOS2操作系统详解——邵贝贝系列学习指南》 UCOS2,全称为uC/OS-II,是一款广泛应用于嵌入式系统的实时操作系统(RTOS)。由Jean J. Labrosse开发,以其小巧、高效和可移植性而备受赞誉。邵贝贝系列教程是针对...

    UCOSii操作系统移植

    6. 时钟节拍:LPC2132上一般使用定时器作为时钟节拍源,配置合适的中断周期,确保UCOSii的时间管理功能正常运行。 7. 编译调试:编译源代码,通过仿真器或JTAG接口下载到LPC2132,利用调试工具进行错误检查和功能...

    UCOS-II操作系统详解.doc

    UCOS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数、系统时间函数。 UCOS-II中的内存管理是通过分区管理来实现的。每个分区中包含整数个大小相同的内存块...

    uCOS ARM移植要点详解

    3. 时钟节拍设置:设置系统的时钟源和时钟节拍,为任务调度提供时间基准。这通常涉及硬件定时器的配置和中断处理。 4. 处理器特性适配:根据ARM处理器的特性,如异常处理、中断服务例程(ISR)的进入和退出,调整uCOS...

    uCOS-II移植51单片机实例

    3. **时钟节拍**:设置一个合适的时钟节拍源,用于系统时间管理和任务调度。 4. **初始化**:编写启动代码,初始化系统并调用uCOS-II的初始化函数。 5. **任务创建**:根据需求创建特定的任务,并分配优先级和栈空间...

    uCOS-II内核架构解析---uCOS-II系统核心

    3. **时钟管理**:定义了系统的基本时钟节拍,支持时间延迟、定时器等功能。 4. **多任务同步与通信**:通过邮件箱、消息队列、信号量、互斥量等机制,实现任务间的同步与数据交换。 5. **内存管理**:提供了私有...

    Timer_uCOSII

    系统定时器在uCOSII内部被称为“Tick Timer”,它的主要职责是定期产生时钟节拍(Tick)。时钟节拍的频率决定了任务调度的最小时间间隔,这个值在系统初始化时设定,并且可以通过配置文件进行调整。系统定时器的中断...

    基于s12x的ucos操作系统源码

    《基于S12X的uCOS操作系统源码详解》 在嵌入式系统开发领域,了解和掌握操作系统源码对于优化系统性能、提高程序效率至关重要。本文将详细探讨基于S12X单片机的uCOS实时操作系统源码,帮助读者深入理解其工作原理和...

    ucos3.rar_ATMEGA UCOS_atmega16_atmega16 ucos_ucos atmega_ucos-ii

    - **时钟节拍**:UCOS依赖于周期性的时钟节拍来执行任务调度,因此需配置适当的定时器中断作为时钟源。 - **内存管理**:由于ATMEGA16的内存资源有限,合理分配任务堆内存,避免内存浪费。 - **中断处理**:在中断...

    ucosII.rar_site:www.pudn.com_ucos_ucosII 内核_ucosii内核详解

    2. **时间管理**:UCOSII提供了一个精确的时钟节拍,用于任务调度、延时和定时器服务。用户可以通过定义时钟节拍频率来调整系统的时间分辨率。 3. **内存管理**:内核实现了动态内存分配和回收,包括任务堆栈的分配...

    avr-ucosii-Iar

    例如,UCOSII的时钟节拍通常通过中断来实现,因此需要编写适配AVR的时钟中断服务程序。 任务(Task)是UCOSII的基本执行单元,每个任务都有自己的栈空间和优先级。在AVR平台上创建任务,需要确定任务的入口函数、栈...

    ucos移植到arm9(s3c2440)

    2. 时钟源:选择合适的时钟源,如RTC或定时器,作为UCOS的时钟节拍源。 3. 中断处理:编写与S3C2440中断控制器兼容的中断处理函数,实现UCOS的中断服务。 四、启动代码编写 移植的关键步骤之一是编写启动代码,它...

    UCOSII操作系统-STM32移植模板.rar_STM32操作系统_ucosII stm32_ucosii

    《UCOSII操作系统在STM32上的移植与应用详解》 UCOSII,全称 μC/OS-II,是一款轻量级、实时的操作系统(RTOS),适用于微控制器环境,包括STM32系列芯片。STM32是意法半导体公司推出的基于ARM Cortex-M内核的微...

    UCOSII-实时系统概念

    12. **μC/OS-Ⅱ 初始化**:在系统启动时,需要调用OSInit函数初始化UCOSII内核,设置基本参数,如任务堆栈大小、时钟节拍频率等。 13. **μC/OS-Ⅱ 的启动**:初始化后,通过OSTaskCreate创建第一个任务,然后调用...

Global site tag (gtag.js) - Google Analytics