4/4 清明work

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。


二进制信号量:最快的最常用的信号量,可用于同步或互斥。
二进制信号量能够满足任务间的互斥和同步,需要
的系统开销最小,因此也称快速信号量。二进制信
号量可以看成一个标志,对应资源是可用还是不可
用。当一个任务调用semTake ()请求一个信号量时
,如果此时信号量可用,信号量会被清零,并且任务
立即继续执行;如果信号量不可用,任务会被阻塞来
等待信号量。
计数信号量:类似于二进制信号量,但是随信号量释
放的次数改变而改变。计数器信号量是实现任务同步
和互斥的另一种手段,在具体实现上有点差异。计数器
信号量除了像二进制信号量那样工作外,还保持对信号
量释放次数的跟踪。


2.使用技术型信号量完成生产者和消费者模型实验。

for(;;)
	{
		//share_data=1;
		printf("shop is ok\r\n");
		osThreadFlagsSet(myEvent01Handle,SHOP);
		osDelay(500);
		
		printf("wash is ok\r\n");
		osThreadFlagsSet(myEvent01Handle,WASH);
		osDelay(500);
		;
		printf("cook is ok\r\n");
		osThreadFlagsSet(myEvent01Handle,COOK);
		osDelay(500);
		;
}

	for(;;)
	{
		printf("I want to eat\r\n");
		osThreadFlagsWait(SHOP| WASH|COOK,osFlagsWaitAll,osWaitForever);
		printf("go to eat\r\n");
		osDelay(500);
	}

3.总结FreeRTOS中同步和互斥的五种方法的使用方法

队列、信号量、互斥量、事件组、任务通知。


4.总结任务通知和其他任务通信机制的区别


队列、信号量、互斥量、事件组在使用之前都需要先创建,才能使用。
任务通知无需创建即可使用。
队列、信号量、互斥量、事件组  多对多通信。
任务通知是多对一通信。(只需要知道要通知的任务ID即可)
队列、信号量、互斥量、事件组需要被创建,所以消耗的资源也是比较多。
任务通知不需要被创建消耗的资源少。


5.根据文档和录屏学习一下软件定时器,了解软件定时器的作用和软件定时器和硬件定时器的区别


一般硬件定时器集成在CPU的内部,有的可以使用外置的硬件定时器芯片,可以人
为通过编程来设置硬件定时器的工作频率,硬件定时器一旦设定好了工作频率,只要
上电,那么硬件定时器就会周期性的给CPU输出一个中断信号,称这个中断信号为时
钟中断,linux内核已经实现好了时钟中断对应的服务程序,这个服务程序也称之为
时钟中断服务函数,既然硬件定时器周期性的给CPU产生时钟中断,那么对应的中断
服务程序就会被内核周期性的调用
软件定时器是在硬件定时器基础之上出来的定时器,可以由一个硬件定时器模拟出成千
上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不
足,这是软件定时器的一个优点,即数量不受限制。但由于软件定时器是通过程序实现
的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。
 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值