第 14 章 内存 API

在这个插曲中,我们讨论 UNIX 系统中的内存分配接口。所提供的接口非常简单,因此本章简短而言之。我们要解决的主要问题是:

如何分配和管理内存

在UNIX/C程序中,了解如何分配和管理内存对于构建健壮可靠的软件至关重要。通常使用哪些接口?应该避免哪些错误?

思维导图

图 1. 思维导图

内存的类型


Mark Walen大约 16 分钟
简介

数据结构基础

本文主要参考 《数据结构——C语言版》严蔚敏版(第二版)


Mark Walen小于 1 分钟
线性表

线性表

单链表

存储结构

链式存储结构

问题1:

链式存储结构的特点:

用一组任意的存储单元存储线性表的数据元素。

两个域

  1. 数据域:存储数据元素的信息。

  2. 指针域:存储后继结点的存储位置(即地址)。

    链式的结构

Mark Walen大约 9 分钟

顺序栈

定义

仅限定在表尾进行插入或删除操作的线性表,是一种后进先出的数据结构

栈

Mark Walen大约 7 分钟数据结构
第 13 章 引言:地址空间

在早期,因为用户的期望并不高, 所以构建计算机系统是件轻松的事。正是那些该死的用户,他们对“易用性”、“高性能”、“可靠性”等的期望,真的导致了所有这些头疼的问题。下次你遇到其中一个计算机用户时,感谢他们引发的所有问题吧。

思维导图

图 13.1 思维导图

早期系统

从内存的角度来看,早期的计算机并没有为用户提供太多的抽象。基本上,机器的物理内存看起来有点像你在图 13.2 中看到的那样。

操作系统是一组例程(实际上是一个库),位于内存中(在这个例子中从物理地址 0 开始),并且会有一个正在运行的程序(一个进程)当前位于物理内存中(在这个例子中从物理地址 64k 开始),并使用其余的内存。这里几乎没有什么幻想,用户对操作系统的期望也不高。在那些日子里,操作系统开发者的生活确实很轻松,不是吗?


Mark Walen大约 12 分钟
第四节 周期性广播

PADVB——低功耗周期性广播

基础

ADV 广播逻辑传输(参见第三节 ADVB - 低功耗广播)发送的广播包传输在时序上包含一定程度的随机性。在广播事件的调度中,故意插入了 0 到 10 毫秒之间的随机延迟,以避免持续的数据包冲突。在执行传统广播时,这是广播工作的唯一方式。

周期性广播涉及按确定性调度传输数据包,并提供一种机制,允许其他设备根据广播设备的调度调整它们的扫描活动,以与广播设备设定的时间保持一致。这种同步确保了参与设备之间的有效通信和互动。周期性广播始终是不可扫描和不可连接的。周期性广播可以通过为观察设备提供更省电的扫描方式来提高效率,是 LE 音频广播解决方案中的关键组成部分。


Mark Walen大约 9 分钟
第三节 ADVB——低功耗广播

基础

LE 广播(或简称广播)提供了一种无连接的通信模式。它可用于传输数据或指示外围设备的可连接性。通常,广播数据包旨在被范围内的任何扫描设备接收,因此广播可以用于同时向多个扫描设备传输数据,形成一对多的拓扑结构。然而,还定义了一种称为定向广播的特殊形式,允许从一个广播设备无连接地向一个特定的扫描设备传输数据,该设备由其蓝牙设备地址标识。

广播本身仅支持单向数据通信,从广播设备到扫描设备,但这些设备可以通过 PDU 回复广播数据包,请求进一步的信息或建立连接。当扫描设备通过回复来获取更多信息时,称为主动扫描。当不回复时,称为被动扫描。

广播通常被称为一种不可靠的传输,因为接收方不会发送确认。


Mark Walen大约 10 分钟
第二节 逻辑传输基础

LE ACL——异步面向连接的逻辑传输

基础

当两个 BLE 设备连接时,它们使用异步面向连接逻辑传输(LE-ACL 或简称 ACL)。LE-ACL 是最常用的 BLE 逻辑传输类型之一,支持面向连接的数据通信。实际上,ACL 连接通常简称为连接。

设备可以通过响应接收到的广播数据包,并携带一个请求连接的 PDU 来与广播设备建立连接。请求中指定了多个参数,其中包括接入地址连接间隔外围设备延迟监管超时信道映射

连接间隔参数定义了在多少毫秒内,无线电可以用于为此连接提供服务。每当连接间隔到期时,就会开始一个连接事件,在此时,连接中的中央设备可以传输一个数据包。每个连接事件都有一个16位的标识符,这是一个计数值,每有一个连接事件就递增一。在每个连接事件开始时,使用适用的信道选择算法选择要使用的射频信道。


Mark Walen大约 11 分钟
物理层

思维导图

图 1. 物理层思维导图

BLE 物理层定义了进行数据传输和接收时,如何使用无线电发射器/接收器对数据进行编码和解码。并且还包括其它适用于无线电相关的参数和属性。

频段

BLE 的工作频段是从 2400 MHz 到 2483.5 MHz 之间的 2.4 GHz 无许可频段。BLE 的工作频段被划分为 40 个信道,每一个信道的带宽为 2 MHz。链路层和数据传输架构定义了信道的使用方式。

图 2. 蓝牙信道

Mark Walen大约 5 分钟
2
3
4
5