《低功耗蓝牙开发权威指南》——2.3节昂贵的内存

简介:

本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第2章,第2.3节昂贵的内存,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.3 昂贵的内存
众所周知,一台电脑的内存越多,通常而言价格就越贵。然而,计算机内每一个比特内存不仅费钱,还费能量。内存通常需要动态刷新—每隔一小段时间芯片中的内容便要刷新一次。这种动态刷新需要能量,而设备装备的内存越多也就需要更多的能量来为其供电。因此,整个低功耗蓝牙设计在每一层都考虑了降低内存的数量。
例如,在链路层保持较短分组有助于减少无线电发送和接收数据包时对内存的要求。例如,属性协议层不需要处理任何长度大于23字节的数据报文,在状态转换时也不要求存储任何状态信息。所有这些都降低了对内存的需求。
另一个与内存相关的负担在于,当一台设备需要做许多事情时,需要激活大量的协议。例如,想象一副耳机同时支持免提(hands-free)、远程控制(remote control) 和电池状态报告(battery status reporting)功能。如果以上每个功能都需要一个单独的协议,这些协议对于存储器的需求将被加在一起。而低功耗蓝牙仅有一个协议—属性协议来支持名称发现、服务发现、读取和写入信息,以实现不同的用例。仅用一个协议显然要比使用多个协议的开销少得多。

相关文章
|
安全 架构师 编译器
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
因为X86及其CISC架构生态的封闭性,中国市场对未来处理器的选择,将是更开放、更模块化的RISC架构。 鲲鹏处理器就是符合这个潮流的创新产品和生态,将直面一系列挑战,和Apple一样赢得这场挑战,来扭转X86的封闭性的乾坤,创造出中国的处理器新生态。
762 0
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
|
26天前
|
缓存 Java Android开发
安卓应用开发中的内存优化策略
在移动应用开发领域,性能一直是衡量应用质量的重要指标之一。特别是对于安卓平台,由于设备的硬件配置多样化,内存管理成为开发者面临的重大挑战。本文将深入探讨针对安卓平台的内存优化技巧,包括内存泄漏的预防、合理使用数据结构和算法、以及高效的资源释放机制。通过这些方法,开发者可以显著提升应用的性能和用户体验。
|
1月前
|
监控 算法 Android开发
安卓应用开发中的内存优化策略
【2月更文挑战第30天】随着移动设备性能的不断提升,用户对应用程序的体验要求越来越高。在安卓应用开发中,内存管理是影响应用性能和用户体验的关键因素之一。本文将探讨针对安卓平台的内存优化技巧,包括避免内存泄漏、合理使用数据结构和算法、优化图片资源处理等策略,旨在帮助开发者提升应用性能和稳定性。
19 1
|
7月前
|
存储 Linux Apache
Apache IoTDB开发之内存工具
IoTDB中的内存分为三部分:写内存,读内存和保留内存。写内存用于数据写入分配。三者的比例可以在配置文件中设置。
128 0
|
4月前
|
存储 安全 数据安全/隐私保护
3.2 Windows驱动开发:内核CR3切换读写内存
CR3是一种控制寄存器,它是CPU中的一个专用寄存器,用于存储当前进程的页目录表的物理地址。在x86体系结构中,虚拟地址的翻译过程需要借助页表来完成。页表是由页目录表和页表组成的,页目录表存储了页表的物理地址,而页表存储了实际的物理页框地址。因此,页目录表的物理地址是虚拟地址翻译的关键之一。在操作系统中,每个进程都有自己的地址空间,地址空间中包含了进程的代码、数据和堆栈等信息。为了实现进程间的隔离和保护,操作系统会为每个进程分配独立的地址空间。在这个过程中,操作系统会将每个进程的页目录表的物理地址存储在它自己的CR3寄存器中。当进程切换时,操作系统会修改CR3寄存器的值,从而让CPU使用新的页
50 0
3.2 Windows驱动开发:内核CR3切换读写内存
|
5月前
|
存储 安全 API
3.5 Windows驱动开发:应用层与内核层内存映射
在上一篇博文`《内核通过PEB得到进程参数》`中我们通过使用`KeStackAttachProcess`附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离,此类功能的实现依附于MDL内存映射机制实现。
56 0
3.5 Windows驱动开发:应用层与内核层内存映射
|
5月前
|
安全 Windows
3.3 Windows驱动开发:内核MDL读写进程内存
MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进程的物理内存映射到当前进程的虚拟地址空间中,然后才能进行内存读写操作。
41 0
3.3 Windows驱动开发:内核MDL读写进程内存
|
7月前
|
Linux
底层开发必知的三个内存结构概念
底层开发必知的三个内存结构概念
底层开发必知的三个内存结构概念
|
9月前
|
JSON 数据可视化 定位技术
python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)
python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)
196 0
|
10月前
|
存储
驱动开发:内核读写内存多级偏移
让我们继续在`《内核读写内存浮点数》`的基础之上做一个简单的延申,如何实现多级偏移读写,其实很简单,读写函数无需改变,只是在读写之前提前做好计算工作,以此来得到一个内存偏移值,并通过调用内存写入原函数实现写出数据的目的。以读取偏移内存为例,如下代码同样来源于本人的`LyMemory`读写驱动项目,其中核心函数为`WIN10_ReadDeviationIntMemory()`该函数的主要作用是通过用户传入的基地址与偏移值,动态计算出当前的动态地址。
84 0

热门文章

最新文章