本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。

前言

在展开本文之前,先解释一下本文中会提到的三个重要概念:arena,bin,chunk。三者在逻辑上的蕴含关系一般如下图所示(图中的chunk严格来说应该是Free Chunk)。

Linux glibc malloc

三者概念的解释如下:

arena:通过sbrk或mmap系统调用为线程分配的堆区,按线程的类型可以分为2类:

main arena:主线程建立的arena;

thread arena:子线程建立的arena;

chunk:逻辑上划分的一小块内存,根据作用不同分为4类:

Allocated chunk:即分配给用户且未释放的内存块;

Free chunk:即用户已经释放的内存块;

Top chunk

Last Remainder chunk

bin:一个用以保存Free chunk链表的表头信息的指针数组,按所悬挂链表的类型可以分为4类:

Fast bin

Unsorted bin

Small bin

Large bin

在这里读者仅需明白arena的等级大于bin的等级大于(free)chunk的等级即可,即A>B>C。

为文件搜索文字字符串,fgrep命令 是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件 fgrep 命令将显示包含匹配行的文件。

fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep 命令使用快速的压缩算法。$, *, [, |, (, )和\等字符串被 fgrep 命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号' ... '。如果没有指定文件, fgrep 命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。

  1. fgrep 命令和带 -F 标志的 grep命令是一样的但出错和用法消息不同-s 标志功能也不同。
  2. 每行限制在 2048 个字节。
  3. 段落(-p 标志下)目前限制在5000个字符的长度。
  4. 不要在特定的文件中运行 grep 命令,因为会产生不可预料的结果。
  5. 输入行不能包含空字符。
  6. 输入文件应该以换行字符结尾。
  7. 虽然可以同时指定很多标志,但某些标志会覆盖其余的标志。例如,如果同时指定 -l 和 -n ,只有文件名写入到标准输出中去。

命令语法


fgrep [选项][参数]

OpenGL 3D

什么是 SFTP

SFTP 代表 Secure File Transfer Protocol. S有时也代表 SSH(或 Secure Shell),它是文件传输服务运行的安全加密隧道。

SFTP 是一种通过远程系统安全传输文件的流行方法。该sftp命令通常是 OpenSSH 包的一部分。它被设计为 SSH v2.0 的扩展,以增强 安全文件传输功能。该sftp命令行界面被设计为类似于ftp命令。

Linux NTP

NTP(网络时间协议)

NTP(网络时间协议)是一种运行在端口 123 UDP 上的协议。NTP 将客户端的时间和日期与主服务器同步。

RHEL 8 不再支持 NTP 包。Chrony是默认的 NTP 客户端,也是 Red Hat Enterprise Linux 8 上的 NTP 服务器。


Service Name= chronyd

chrony 和 ntp 的区别

一、修改设备树

1、在pinctrl子系统对应节点添加子节点,即在 iomuxc 、iomuxc_snvs 节点添加新的子节点,即添加设备对应的 IO 。

示例:


pinctrl_i2c1: i2c1grp { 
  fsl,pins = < 
   MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
   MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
  >;
};
 
节点标签:节点名{
        引脚属性字符串 = <
            使用的引脚_引脚复用功能 电气特性(IO 的上/下拉、驱动能力和速度等)
        >;
}
 
注意:节点标签,节点名可自定义,但节点标签前缀一定要为 pinctrl_

2、在 I2C 、SPI 等节点下添加子节点,杂项驱动(MISC)在根节点下添加节点,配置设备相关属性信息:

示例: