时标(Time Scale)就是标度时间的方法。在时间的标度上,存在着两个相互独立的需求:一方面,我们希望时间标度能与地球的自转相吻合,可以称作天文学需求;另一方面,我们要求时间标度的单位是精确的,便于大家获得准确的时间。由于地球自转的不均匀性,从这两个需求出发制定的时标会有细微的差异。世界时(UT1)是基于地球自转的时标,下文有描述。国际原子时(TAI)是基于单位时间的时标,它以“铯-133原子基态两个超精细能级间跃迁辐射9,192,631,770周所持续的时间”为一秒。国际原子时是根据以上秒的定义的一种国际参照…

16 5 月, 2024 0条评论 458点热度 0人点赞 阅读全文

本文对linux内核中自旋锁的实现进行分析,描述了其背后原理和相关数据结构的含义。本文所有代码来源于linux-5.13.10。 自旋锁被定义为 spinlock_t ,其具体的实现方式与CPU体系结构相关。自旋锁相关的文件列表如下(仅通用部分可供使用者在源文件中使用#include指令包含)。 类别 路径 通用 include/linux/spinlock.h 通用 include/linux/spinlock_types.h UP include/linux/spinlock_up.h UP include/l…

16 5 月, 2024 0条评论 382点热度 0人点赞 阅读全文

C 语言定义了一些基本数据类型,但是没有给出数据类型实际的位宽。随着 64bit 处理器的大量使用,操作系统等软件就需要选择匹配上这些数据类型,由此产生出了下表列出的各种数据模型(单位:bit)。 类型 LP32 ILP32 LP64 ILP64 LLP64 char 8 8 8 8 8 short 16 16 16 16 16 int 16 32 32 64 32 long 32 32 64 64 32 long long 64 64 64 64 64 pointer 32 32 64 64 64 另外, flo…

16 5 月, 2024 0条评论 292点热度 0人点赞 阅读全文

littlefs的块分配器用于为littlefs分配空闲的Flash块。这个块分配器具有如下特征: 格式化文件系统时:块0和块1被分配。 挂载文件系统时及其以后:所分配到的块的顺序是随机的。 1 原理概述 块分配器未在Flash中存储任何相关的数据,而仅在运行时读取文件系统对Flash块的使用情况并以位图的形式记录于内存中。内存中的位图并不记录整个Flash所有的块的使用情况,而仅仅记录整个Flash中连续若干个块的使用情况,举例来说:整个Flash拥有1024个块,而块分配器仅在内存中记录索引为32~63的块的分…

16 5 月, 2024 0条评论 365点热度 0人点赞 阅读全文