ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

四、共享资源保护

2021-08-15 16:02:21  阅读:215  来源: 互联网

标签:parg 互斥 void wen 共享资源 保护 while ...........


一、共享资源

典型的共享资源有:变量(静态或全局)、数据结构体、RAM中的表格、I/O设备中的寄存器、多个任务访问的函数等。 共享资源的可靠访问,任务必须对数据具有独享权变得极其重要,否则将可能导致任务间的竞争与数据损坏。 最常用的独占共享资源的方法有以下几种:
  • 关中断
  • 禁止任务调度
  • 使用信号量
  • 使用互斥型信号量(互斥锁)
独占共享资源的方法,取决于代码访问共享资源的速度,即占用共享资源的时间(重点),具体使用说明如下表:

二、选择题

1.以下请问使用( A )方式保护最为合适。

void T1(void *parg)
{
	while(1)
	{ 
         ...........
	        喂狗	
         ...........		
	}
}
A. 关中断、开中断    B.给调度器上锁、解锁   C.信号量   D.互斥锁  

2.以下请问使用( B )方式保护最为合适。

uint32 g=0;
void T1(void *parg)
{
	while(1)
	{ 
         ...........
	        g++;	
         ...........		
	}
}

void T2(void *parg)
{
   uint32_t a=0;
	while(1)
	{ 
         ...........
	        a = g;	
         ...........		
	}
}
A. 关中断、开中断   B.给调度器上锁、解锁   C.信号量   D.互斥锁

3.以下请问使用( A )方式保护最为合适。

uint32 g=0;

void T1(void *parg)
{
	while(1)
	{ 
         ...........
	        g++;	
         ...........		
	}
}

void T2(void *parg)
{
   uint32_t a=0;
	while(1)
	{ 
         ...........
	        a = g;	
         ...........		
	}
}

void USART1_IRQHandler(void)
{
    
         ...........
	        g = USART_ReceiveData(USART1);	
         ...........  
    
}
A. 关中断、开中断   B.给调度器上锁、解锁   C.信号量   D.互斥锁

4.以下请问使用( C )方式保护最为合适。

void T1(void *parg)
{
	while(1)
	{ 
         ...........
         printf("hello teacher.wen\r\n");	
         ...........		
	}
}

void T2(void *parg)
{

	while(1)
	{ 
         ...........
         printf("good bye teacher.wen\r\n");	
         ...........		
	}
}

 

A. 关中断、开中断   B.给调度器上锁、解锁   C.信号量   D.互斥锁

5.以下请问使用( D )方式保护最为合适。

void T1(void *parg)
{
	while(1)
	{ 
         ...........
         printf("hello teacher.wen\r\n");	
         ...........		
	}
}

void T2(void *parg)
{

	while(1)
	{ 
         ...........
         printf("good bye teacher.wen\r\n");	
         ...........		
	}
}

void T3(void *parg)
{
	while(1)
	{ 
         ...........
         printf("he's teacher.wen\r\n");	
         ...........		
	}
}

 

A. 关中断、开中断   B.给调度器上锁、解锁   C.信号量   D.互斥锁

三、辨析题

1.请分析以下代码。

void T1(void *parg)
{

	while(1)
	{ 
            调度器上锁
            printf("hello teacher.wen\r\n");
            delay_ms(1000)	
            调度器解锁		
	}
}

void T2(void *parg)
{
	while(1)
	{ 
            调度器上锁
            printf("good bye teacher.wen\r\n");
            delay_ms(1000)	
            调度器解锁			
	}
}

 

2.请分析以下代码。

void T1(void *parg)
{

	while(1)
	{ 
            等待互斥锁
            printf("hello teacher.wen\r\n");
            OLED_ShowString(0,2,"this is task 1\r\n");
            释放互斥锁		
	}
}

void T2(void *parg)
{
   uint8_t buf[5]={0};
	while(1)
	{ 
            等待互斥锁
            printf("good bye teacher.wen\r\n");
            dht11_read(buf)
            ......
            释放互斥锁			
	}
}

3.请分析以下代码。

void T1(void *parg)
{

	while(1)
	{ 
            等待互斥锁
            printf("hello teacher.wen\r\n");
            OLED_ShowString(0,2,"this is task 1\r\n");
            释放互斥锁		
	}
}

void T2(void *parg)
{
   uint8_t buf[5]={0};
	while(1)
	{ 
            等待互斥锁
            printf("good bye teacher.wen\r\n");
            dht11_read(buf)
            ......
            释放互斥锁			
	}
}

4.请分析以下代码。

void app_task_init(void *parg)
{
    创建信号量,初值为0
}

void T1(void *parg)
{
	while(1)
	{ 
            等待信号量
            printf("hello teacher.wen\r\n");
            释放信号量		
	}
}

void T2(void *parg)
{
	while(1)
	{ 
            等待信号量
            printf("good bye teacher.wen\r\n");
            释放信号量			
	}
}  
 

 

 

  

  

  

标签:parg,互斥,void,wen,共享资源,保护,while,...........
来源: https://www.cnblogs.com/yuanqiangfei/p/15143630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有