《基于嵌入式实时操作系统的编程技术》笔记清单:第七章资源同步

《基于嵌入式实时操作系统的编程技术》笔记清单:第三章任务划分.
《基于嵌入式实时操作系统的编程技术》笔记清单:第四章任务设计.
《基于嵌入式实时操作系统的编程技术》笔记清单:第五章中断服务程序设计.
《基于嵌入式实时操作系统的编程技术》笔记清单:第六章行为同步.
《基于嵌入式实时操作系统的编程技术》笔记清单:第七章资源同步.
《基于嵌入式实时操作系统的编程技术》笔记清单:第八章数据通信.
《基于嵌入式实时操作系统的编程技术》笔记清单:第九章时间管理.
《基于嵌入式实时操作系统的编程技术》笔记清单:第十章采集任务设计.

前言

任务对共享资源进行访问的代码段落称为关键段落,各个任务访问同一个资源的关键段落必须互斥,才能保障共享资源信息的可靠性和完整性。这种使得不同任务访问共享资源时能够确保共享资源信息可靠和完整的措施称为“资源同步”。

本章笔记清单

1. 资源同步的四种方式

1)关中断;
2)关调度;
3)使用互斥信号量;
4)使用计数信号量。

2. “只读”的共享资源,不需同步。

此类资源,只能够读取,不能改写。比如:OLED的字符数组。

3. 关中断(保障数据正确性)
在公共函数中使用关中断
void synch(void)
{
	OS_ENTER_CRITICAL(); //关闭关中断
	if(count == total - 1)
	{
		count = 0;
		OS_EXIT_CRITICAL();		//打开中断
		OS_MboxPostOpt(...);
	}
	else
	{
		count ++;
		OS_EXIT_CRITICAL();
		OS_MboxPend(...);
	}
}

1)在公共函数中,访问全局变量时,暂时将中断关闭,从而不能产生调度,不会破坏原数据。加上“关中断”操作,将不可重入函数变为可重入函数。
2)优点:操作简单。
3)缺点:①在关中断期间,不能调用挂起自己的函数;②关闭中断期间,执行的内容尽可能简单,不能占用太多时间,否则整个系统的实时性变差。

4. 关中断(保障数据的完整性)

在这里插入图片描述
1)任务1直接显示(读取)结构体A的数据成员的话,可能由于任务2的修改而导致显示有误。
比如:实现一个时钟功能,在屏幕上,正要显示 “7:59:59” 正好读取完 “7” 这个数字。
接下来还要读取“分,秒”,此时,来了一个定时器中断,任务1被打断。任务2被定时中断调用了,更新了一下时间,A结构体的数据变为 “8:00:00”。
等调度任务1后,任务1继续读取“分、秒”,最终,屏幕上显示的是“7:00:00”,与实际的时间相差1小时。

2)针对以上情形,我们需要在执行屏幕显示函数的时候关一会儿中断。但是,执行显示函数的时间有点慢,这样关闭中断,影响实时性。
这时,我们可以采取“拍照”方式。在任务1中,定义一个结构体B,在关闭中断期间,把A结构体复制给B。这样,花费的时间是最短的。任务2中,也需将“写”操作保护起来。避免数据发生损害。

5. 关调度

1)当共享资源比较复杂,或规模较大时,采用“拍照”的方法也很费时,有些共享资源是功能部件(函数),根本不能“拍照”。
2)共享资源的调用者全是任务,不包含ISR,则可用关调度来访问共享资源。
3)关调度但没关中断,故系统对异步事件仍然可以及时响应,并使相关任务进入就绪状态,但不会立即进入运行状态。
4)关调度的缺点是:使与该共享资源无关的任务受到牵连,如ISR关联的任务无法立即执行。
5)关调度的优点不多,缺点也不少,尽可能不要使用。

6. 使用互斥信号量

1)互斥信号量具有处理优先级反转问题的功能,特别适合对共享资源的访问。
2)互斥信号量的初始值为1(用0XFF表示),表示共享资源有效(共享资源尚未使用)。
3)使用互斥信号量进行共享资源访问对系统的实时性影响最小。
4)使用共享资源过程中,插入延时函数,可以较好地模拟实际情况,模拟出并发的模式。延时不需太长。



7.题外话

1+1=2

那是学生时代的事了,那是线性关系,正比例相关。

如今我们步入社会,发现这世界处处都是非线性关系,并不是我一直努力,就一直会正比例增加回报,非线性关系的典型特征就是付出和努力不一定成正比,它有随机性,有不可预测性。

我们学了太多关于如何攀登人生高峰,但我们也应该多学学如何应对人生低谷,因为人生如浪,起起伏伏才是常态。

愿你学会独处,面对起落人生。

——转自水木然学社公众号文章《人在低谷时,千万别打扰任何人!学会独处,才能翻身》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《基于嵌入式实时操作系统程序设计技术 第2版》是一本关于嵌入式实时操作系统(RTOS)程序设计技术手册。该书以嵌入式系统的特点为基础,详细介绍了使用RTOS进行程序设计的方法和技术。以下是本书的主要内容回答。 本书的第一章介绍了嵌入式系统和实时操作系统的基本概念以及它们的特点和应用领域。同时还介绍了一个实时操作系统的基本组成部分,包括任务管理器、中断服务例程和资源管理器等。 第二章详细介绍了嵌入式实时操作系统的任务管理和调度技术。其中包括任务的创建、销毁和切换等操作,以及不同的调度算法和优先级设置。 第三章讨论了嵌入式实时操作系统的中断服务例程设计和处理。该章重点介绍了中断服务例程的编写和中断的嵌套处理,以及中断的优先级和中断控制器的配置。 第四章探讨了嵌入式实时操作系统的通信和同步技术。该章介绍了进程间通信(IPC)和任务间同步的方法和技术,包括信号量、消息队列和邮箱等。 第五章介绍了嵌入式实时操作系统的定时器和时钟管理技术。其中包括定时器的配置和使用,以及时钟的同步和校准等。 第六章讨论了嵌入式实时操作系统的内存管理和存储技术。该章介绍了内存的分配和回收方法,以及存储器的管理和保护技术。 最后一章总结了全书的内容,提供了一些实际案例和应用实例,以帮助读者更好地理解和应用所学的嵌入式实时操作系统程序设计技术。 总体而言,《基于嵌入式实时操作系统程序设计技术 第2版》通过详细介绍了嵌入式实时操作系统的各个方面,为读者提供了一个全面了解和掌握嵌入式实时操作系统程序设计技术手册。无论是初学者还是有经验的嵌入式系统开发者,都能从中获得宝贵的知识与经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值