精华内容
下载资源
问答
  • Hadoop 任务优先级设置(MapReduce)

    千次阅读 2017-04-01 11:03:33
    作业提交到的队列:...作业优先级:mapreduce.job.priority Pig版本: SET mapreduce.job.queuename root.etl.distcp; SET mapreduce.job.priority HIGH; Hive版本: SET mapreduce.job.q

    作业提交到的队列:mapreduce.job.queuename

    作业优先级:mapreduce.job.priority

    Pig版本:

    SET mapreduce.job.queuename root.etl.distcp;

    SET mapreduce.job.priority HIGH;

    Hive版本:

    SET mapreduce.job.queuename=root.etl.distcp;

    SET mapreduce.job.priority=HIGH;

    MapReduce版本:

    Hadoop jar app.jar -D mapreduce.job.queuename=root.etl.distcp -D mapreduce.job.priority=HIGH

    目前只用到了MR版本。

    展开全文
  • 对于初学者,有时候会纠结任务优先级设置为多少合适,因为任务优先级设置多少是没有标准的。 IRQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先级最高的。 高优先级...

    FreeRTOS之任务优先级的分配

    声明:本人按照正点原子的FreeRTOS例程进行学习的,欢迎各位大佬指责和批评,谢谢!

    任务优先级分配方案

    对于初学者,有时候会纠结任务优先级设置为多少合适,因为任务优先级设置多少是没有标准的。

    1. IRQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先级最高的

    2. 高优先级后台任务:比如按键检测触摸检测USB 消息处理串口消息处理等,都可以归为这一类任务。

    3. 低优先级的时间片调度任务:比如 界面显示LED 数码管的显示等不需要实时执行的都可以归为这一类任务。 实际应用中用户不必拘泥于将这些任务都设置为优先级 1 的同优先级任务,可以设置多个优先级,只需注意这类任务不需要高实时性。

    4. 空闲任务:空闲任务是系统任务

    5. 特别注意IRQ 任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数即可),只有这样,高优先级任务才会释放 CPU 的使用权,,从而低优先级任务才有机会得到执行。

    6. 这里的优先级分配方案是我们推荐的一种方式,实际项目也可以不采用这种方法。 调试出适合项目需求的才是最好的。

    中断优先级和任务优先级区别

    1. 部分初学者也容易在这两个概念上面出现问题。 简单的说,这两个之间没有任何关系,不管中断的优先级是多少,中断的优先级永远高于任何任务的优先级,即任务在执行的过程中,中断来了就开始执行中断服务程序。

    2. 另外对于 STM32F103,F407 和 F429 来说,中断优先级的数值越小,优先级越高。而 FreeRTOS的任务优先级是,任务优先级数值越小,任务优先级越低

    结束

    展开全文
  • FreeRTOS任务优先级

    千次阅读 2019-03-01 16:31:50
    FreeRTOS任务优先级数值越小优先级越低,系统在运行过程中允许修改任务优先级 修改任务优先级的主要工作包括: .../* 设置任务优先级 */ void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriorit...

    FreeRTOS任务优先级数值越小优先级越低,系统在运行过程中允许修改任务优先级

    修改任务优先级的主要工作包括:

    如果新的优先级大于当前任务优先级,则请求切换

    重新设置事件列表值

    将任务从原就绪列表中移除并挂接到新的就绪列表中

    /* 设置任务优先级 */
    void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority)
    {
    	TCB_t *pxTCB;
    	UBaseType_t uxCurrentBasePriority, uxPriorityUsedOnEntry;
    	BaseType_t xYieldRequired = pdFALSE;
    
    	configASSERT((uxNewPriority < configMAX_PRIORITIES));
    
    	/* 任务优先级不能超过最大值 */
    	if(uxNewPriority >= (UBaseType_t)configMAX_PRIORITIES)
    	{
    		uxNewPriority = (UBaseType_t)configMAX_PRIORITIES - (UBaseType_t)1U;
    	}
    	else
    	{
    		mtCOVERAGE_TEST_MARKER();
    	}
    
    	taskENTER_CRITICAL();
    	{
    		/* 通过任务句柄获取任务TCB */
    		pxTCB = prvGetTCBFromHandle(xTask);
    
    		traceTASK_PRIORITY_SET(pxTCB, uxNewPriority);
    
    		#if (configUSE_MUTEXES == 1)
    		{
    			uxCurrentBasePriority = pxTCB->uxBasePriority;
    		}
    		#else
    		{
    			/* 记录原先的优先级 */
    			uxCurrentBasePriority = pxTCB->uxPriority;
    		}
    		#endif
    
    		/* 优先级和原先优先级不同 */
    		if(uxCurrentBasePriority != uxNewPriority)
    		{
    			/* 新优先级大于原优先级 */
    			if(uxNewPriority > uxCurrentBasePriority)
    			{
    				/* 该任务不是当前任务 */
    				if(pxTCB != pxCurrentTCB)
    				{
    					/* 新优先级大于当前任务优先级 */
    					if(uxNewPriority >= pxCurrentTCB->uxPriority)
    					{
    						/* 请求切换任务 */
    						xYieldRequired = pdTRUE;
    					}
    					else
    					{
    						mtCOVERAGE_TEST_MARKER();
    					}
    				}
    				else
    				{
    				}
    			}
    			/* 该任务为当前任务 */
    			else if(pxTCB == pxCurrentTCB)
    			{
    				/* 请求切换任务 */
    				xYieldRequired = pdTRUE;
    			}
    			else
    			{
    			}
    
    			/* 记录原优先级 */
    			uxPriorityUsedOnEntry = pxTCB->uxPriority;
    
    			#if (configUSE_MUTEXES == 1)
    			{
    				if(pxTCB->uxBasePriority == pxTCB->uxPriority)
    				{
    					pxTCB->uxPriority = uxNewPriority;
    				}
    				else
    				{
    					mtCOVERAGE_TEST_MARKER();
    				}
    
    				pxTCB->uxBasePriority = uxNewPriority;
    			}
    			#else
    			{
    				/* 设置新优先级 */
    				pxTCB->uxPriority = uxNewPriority;
    			}
    			#endif
    
    			/* 重新设置事件列表项的值 */
    			if((listGET_LIST_ITEM_VALUE(&(pxTCB->xEventListItem)) & taskEVENT_LIST_ITEM_VALUE_IN_USE) == 0UL)
    			{
    				listSET_LIST_ITEM_VALUE(&(pxTCB->xEventListItem), ((TickType_t)configMAX_PRIORITIES - (TickType_t)uxNewPriority));
    			}
    			else
    			{
    				mtCOVERAGE_TEST_MARKER();
    			}
    
    			/* 任务在就绪列表中 */
    			if(listIS_CONTAINED_WITHIN(&(pxReadyTasksLists[uxPriorityUsedOnEntry]), &(pxTCB->xStateListItem)) != pdFALSE)
    			{
    				/* 从原就绪列表中移除,就绪列表已经没有任务 */
    				if(uxListRemove(&(pxTCB->xStateListItem)) == (UBaseType_t)0)
    				{
    					/* 清除任务优先级记录中的优先级 */
    					portRESET_READY_PRIORITY(uxPriorityUsedOnEntry, uxTopReadyPriority);
    				}
    				else
    				{
    					mtCOVERAGE_TEST_MARKER();
    				}
    				/* 将任务加入新的就绪列表 */
    				prvAddTaskToReadyList(pxTCB);
    			}
    			else
    			{
    				mtCOVERAGE_TEST_MARKER();
    			}
    
    			/* 需要请求切换任务 */
    			if(xYieldRequired != pdFALSE)
    			{
    				taskYIELD_IF_USING_PREEMPTION();
    			}
    			else
    			{
    				mtCOVERAGE_TEST_MARKER();
    			}
    
    			(void)uxPriorityUsedOnEntry;
    		}
    	}
    	taskEXIT_CRITICAL();
    }

     

     

    系统也提供了获取任务优先级的接口,程序比较简单

    /* 获取任务优先级 */
    UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask)
    {
    	TCB_t const *pxTCB;
    	UBaseType_t uxReturn;
    
    	taskENTER_CRITICAL();
    	{
    		pxTCB = prvGetTCBFromHandle(xTask);
    		uxReturn = pxTCB->uxPriority;
    	}
    	taskEXIT_CRITICAL();
    
    	return uxReturn;
    }
    /* 在中断中获取任务优先级 */
    UBaseType_t uxTaskPriorityGetFromISR(const TaskHandle_t xTask)
    {
    	TCB_t const *pxTCB;
    	UBaseType_t uxReturn, uxSavedInterruptState;
    
    	portASSERT_IF_INTERRUPT_PRIORITY_INVALID();
    
    	uxSavedInterruptState = portSET_INTERRUPT_MASK_FROM_ISR();
    	{
    		pxTCB = prvGetTCBFromHandle(xTask);
    		uxReturn = pxTCB->uxPriority;
    	}
    	portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedInterruptState);
    
    	return uxReturn;
    }

     

    展开全文
  • FreeRtos 任务优先级和中断优先级

    千次阅读 2019-07-01 17:36:19
    中断优先级和任务优先级的区别: 1.简单的说,这两者之间没有任何关系,不管中断的优先级是多少,中断的优先级永远高任何任务的优先级,即在执行的过程中,中断来了就开始执行中断服务程序, 2.对应STM32F103 F...

    中断优先级和任务优先级的区别:

              1.简单的说,这两者之间没有任何关系,不管中断的优先级是多少,中断的优先级永远高任何任务的优先级,即在执行的过程中,中断来了就开始执行中断服务程序,

             2.对应STM32F103  F407来说,中断优先级数值越小,优先级就越高,而FreeRTOS的任务优先级是,任务优先级数值越小

    任务优先级越低。

     任务优先级配置  

       1. FreeRTOS中任务的最高优先级是通过FreeRTOSConfig.h中的configMAX_PRIORITIES  进行配置的   用户实际可以使用的优先级范围是0- configMAX_PRIORITIES -1,比如我们在此定义为5 那么用户可以使用优先级号 0,1,2,3,4,不包含5,数值越大优先级越高  

      2.建议用户配置configMAX_PRIORITIES 的最大值不要超过32,用户可以使用的范围0-31,根据实际应用配置,配置越大,需要的内存空间越大

      优先级分配方案:

       1.IRQ任务:IRQ任务是指通过中断服务程序进行触发的任务,,所有任务中优先级最高

       2.高优先级后台任务:比如按键检测,触摸检测,USB消息处理

       3.低优先级时间调度任务:比如:emWin的界面显示,LED数码管显示

      note:特别注意IRQ任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数),只有这样高优先级任务才会

     释放CPU的使用权,从而低优先级任务才会有机会得到执行

      在STM32使用由于中断优先级设置采用的是库函数,因此请必须保证优先级设置为可抢占优先级

       NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );只有抢占优先级,优先级为0--15级,数值越大优先级越低

    优先级设置介绍:

      FreeRTOSConfig.h中定义了两个宏,分别是:configKERNEL_INTERRUPT_PRIORITY和configMAX_SYSCALL_INTERRUPT_PRIORITY

              configKERNEL_INTERRUPT_PRIORITY用来设置RTOS内涵自己的中断优先级,因为RTOS内涵中断

    不允许抢占用户使用的中断,因此这个宏一般为硬件最低优先级

            configMAX_SYSCALL_INTERRUPT_PRIORITY  用来设置可以在中断服务程序中安全调用API函数最高优先级,

    如果优先大于这个宏代表的优先级,FreeRtos将无法关闭该中断,不受FreeRtos控制

    #ifdef __NVIC_PRIO_BITS /* __NVIC_PRIO_BITS 已经在stm32f4xx.h里面定义为4

    */ #define configPRIO_BITS __NVIC_PRIO_BITS

    #else #define configPRIO_BITS 4 #endif

    #define configPRIO_BITS  4

    此宏定义用于配置STM32的8位优先级设置寄存器实际使用的位数

    STM32f103 STM32F407  和STM32F429都是使用高4位。在往寄存器中写值的时候需要移位,

    SysTick的优先级我们一般配置为最低,即0xf 。这样可以提高系统的实时响应能力,即其他的外部中断可以及时的得到响应

    上面宏定义的FreeRtos优先级为5-15级,在FreeRtos中调用中断关闭中断开启对5-15级有效,对0-4的中断无效

     

          

     

     

      

     

     

                                                

     

     

     

     

    展开全文
  • 任务优先级

    2012-08-28 12:27:41
    应用程序执行过程中诸任务优先级不变,则称之为静态优先级。 在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。 动态优先级 应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。...
  • 任务优先级设置注意事项RTX 操作系统任务优先级的设置要注意以下几个问题: 设置任务的优先级时,数值越小优先级越低。 最低任务优先级是 0,此优先级被空闲任务使用,任何其它任务都不可以使用。 用户可以...
  • FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。 1.相对延时 1.1函数描述  void vTaskDelay( portTickTypexTicksToDelay )  调用vTaskDelay()函数后...
  • 本章节主要为大家讲解ThreadX任务优先级设置的注意事项、任务优先级的分配方案及其相关的一个例子,内容相对比较简单。 目录 12.1 任务优先级说明 12.2 任务优先级分配方案 12.3 中断优先级和任务优先级区别 ...
  • 本章节主要为大家讲解ThreadX任务优先级设置的注意事项、任务优先级的分配方案及其相关的一个例子,内容相对比较简单。 目录 12.1 任务优先级说明 12.2 任务优先级分配方案 12.3 中断优先级和任务优先级区别 ...
  • FreeRTOS任务优先级和中断优先级的区别  首先中断优先级和任务优先级这两个之间没有任何关系,不管中断的优先级是多少,中断的优先级永远高于任何任务的优先级,即任务在执行的过程中,中断来了就开始执行中断服务...
  • FreeRTOS 任务优先级和中断优先级

    千次阅读 2018-12-06 13:36:43
    FreeRTOS的任务优先级和系统的中断优先级没有直接关系。所有时间可以分为两种情况,有中断的时间和没有中断时间。没有中断的时间就是操作系统的任务执行时间,包括空闲任务和定时器任务以及用户定义的任务。在某一个...
  • FreeRTOS 任务优先级说明

    万次阅读 2018-06-01 10:23:53
    freeRTOS任务优先级与Unix进程优先级不同FreeRTOS任务优先:任务优先级数值越小,任务优先级越低。Unix任务优先: 进程优先级数值越小,进程优先级越高。下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,...
  • 工作任务优先级

    2019-09-10 17:06:04
    针对工作任务,有先有后,此处整理了一些工作任务优先级原则: 1、本部门领导发布的任务优先,其他领导发布的任务排后 2、明确规定日期的优先,不明确日期的排后;规定日期在前的优先 3、需要提前梳理,后续需要...
  • FreeRTOS 任务优先级问题

    万次阅读 2017-10-11 17:45:08
    任务优先级说明
  • 等等”,问这类问题的主要目的是判断功能的优先级,在确定了优先级后再根据它去想办法去简化任务流程以及界面设计。下面举一个自己工作中的一个例子来讲诉如何根据任务优先级来改进产品的用户体验。如下图是一个BI...
  • uCOS任务优先级分配

    千次阅读 2019-07-25 13:58:15
    比如我们的0,1,2,3这些数,UCOS任务优先级的取值范围为 0 - OS_LOWEST_PRIO之间,数字越小,优先级越大。 静态优先级  这个优先级被分配以后,它在任务的运行过程中,或者说在这个系统的运行过程中,它的优先级...
  • 文章主要介绍如何动态改变任务优先级,同时简析如何使用任务 handle。 1、头文件定义及任务创建 #include "FreeRTOS.h" #include "task.h" #include "supporting_functions.h" ...
  • FreeRTOS任务优先级说明

    千次阅读 2019-07-16 10:36:57
    任务优先级说明 下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固。 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 进行 ...
  • 此类任务应该设置为所有任务里面优先级最高的。 2、高优先级后台任务:比如按键检测、触摸检测、USB消息处理、串口消息处理等可以归于这一类。 3、低优先级时间片调度任务:比如emwin界面显示、LED数码管显示等不...
  • 优先级翻转问题是可以通过改变任务优先级解决。 那什么是优先级翻转问题呢? 所谓优先级翻转问题(priority inversion)即当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,而这个低...
  • 用户任务优先级确定

    千次阅读 2009-10-21 10:53:00
    用户任务优先级确定 VxWorks系统中优先级分为256级,从0到255,其中0为最高优先级,255为最低优先级.任务的优先级在任务创建时被分配,但在任务运行时可通过系统调用taskPrioritySet()动态改变其优先级。当操作系统...
  • ucos 任务优先级计算详解

    千次阅读 2016-09-06 11:47:39
    介绍下任务优先级小于64的情况。 1.首先看下任务优先级介绍的图片,这个图比较直观,也是中文的,从网上拷贝的: 2.几个变量说明下: OS_PRIO:可以理解为任务创建时分配的优先级,YYY表示任务优先级组,即...
  • 01_FreeRTOS 任务优先级

    2020-06-29 20:46:38
    FreeRTOS 任务优先级 RTOS即为操作系统。主要目的是使我们可以同时使用多个任务。 本文将介绍: a. 使用CubeMX 设置的免费RTOS。 b. 使用RTOS的好处。 c. 在没有CubeMX情况下创建任务。 d. 使用优先级来解决一些常见...
  • 任务优先级说明 下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固。  FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 进行 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 278,426
精华内容 111,370
关键字:

任务优先级怎么设置