- 博客(42)
- 收藏
- 关注
原创 EDK2编译报错:BrotliCompress.c:20:10: fatal error: ./brotli/c/common/constants.h: No such file or directo
解决EDK2环境搭建中编译报错
2025-03-21 10:33:48
261
原创 内存管理之匿名页面
匿名页面在刚分配的时候会加入到active LRU链表的头部,在活跃LRU链表移动一段时间后 ,会到达链表的尾部,shrink_active_list()会将该页加入到不活跃LRU链表中,然后shrink_inactive_list()会扫描不活跃链表,然后通过add_to_swap()为该页面分配交换区,再进过pageout()把该页面写到交换分区。匿名页面的建立是在缺页中断分配完成之后,此时已经建立了进程虚拟地址和物理地址之间的映射关系,用户进程访问虚拟地址就可以访问到匿名页面中的内容。
2025-01-14 19:24:17
71
原创 内存管理之页面回收
在LRU算法中新产生的页面被添加到链表的开头,当系统内存紧张时,LRU链表尾部的页面将会离开并被换出,当系统再需要这些页面的时候,会重新置于链表的开头,也是会存在一种情况,频繁被使用的页面,也会不可避免的会被换出。内存紧张时总是优先换出文件映射的文件缓存页面,而不是匿名页,因为大多数情况下,文件混存页面不需要被回写到磁盘,除非页面内容被修改了,也就是脏页,匿名页面总是要在写入交换分区之后,才能被换出。直接内存回收是同步回收,就是执行页面回收的进程就是应用进程本身,会阻塞调用者进程的执行。
2025-01-13 20:53:05
59
原创 Linux内存管理调试
1. 当pages free小于pages min,说明所有内存耗尽,此时说明内存压力过大,会开始触发同步回收,表现为系统卡死,分配内存被阻塞,开始尝试碎片整理、内存压缩,如果都不奏效,则开始执行 OOM Killer,直到pages free大于pages high。2. 当pages free在pages min和pages low之间,说明内存压力较大,kswapd0线程开始回收内存,直到pages free大于pages high。slab相关信息,包括总页面大小,可回收页面和不可回收页面。
2025-01-10 11:34:17
37
原创 解决grub中编译报错
O 后指定平台架构,是ARM还是x86,像search serial linux等这些,都是mod模块,如果make完,在grub-core中会生成很多.mod文件,如果命令中没有对应的.mod文件,就会报错。1、grub-core的编译规则,在执行完configure后会自动生成,因此需要添加编译规则,不应该在生成的Makefile中添加,需要在Makefile.in中更改;因此添加功能源代码后,需要在这两个文件也要,添加规则进入,不然在编译的时候,会报链接不到接口,报:not define!
2024-11-07 19:46:28
466
1
原创 IMA/EVM开发和测试流程
评估的含义是在进程存取文件之前,内核先判断文件的完整性度量值和预先存入到文件的扩展属性“security.ima”中的值是否一致,如果一致则允许存取操作,不一致则拒绝。EVM 子系统将安全相关的扩展属性的值合在一起作为消息输入,将密钥“evm-key”作为密钥输入,算出当前的 HMAC 值,用这个值和之前存储在扩展属性 security.evm 中的值进行比较,确定文件的安全相关扩展属性的完整性是否被破坏。同样,EVM的扩展属性security.evm的值也有两种形式,一种是HMAC,另一种是数字签名。
2024-10-21 11:26:51
210
原创 cgroup基本原理与使用
在cgroups v2中,虚拟文件系统通常挂载在`/sys/fs/cgroup/`,并且不同控制器的文件不再分散,而是统一到一个cgroup目录下。说明:控制该 cgroup 的内存换出到 swap 的倾向,值在 0 到 100 之间,数值越大表示更倾向于将内存换出到 swap。说明:设置该 cgroup 的内存软限制,允许 cgroup 在有剩余内存时使用更多的内存,但当系统内存紧张时会首先回收超出部分。说明:控制当进程迁移到一个新的 cgroup 时是否将其当前的内存使用量一起迁移。
2024-09-18 11:00:30
300
原创 Linux中RT-Mutex实现
本文主要梳理优先级继承的基本原理,优先级继承主要是用来解决优先级反转,可以简单理解为一个进程在当前进程拥有的锁上阻塞时,会继承另一个进程的优先级。举个例子说明,进程A、B、C,其中A优先级最高,B次之,C最小,那么当 A 在 C 拥有的锁上阻塞时,C 将继承 A 的优先级。因此,如果 B 变为可运行状态,它将不会抢占 C,因为此时 C 具有 A 的高优先级。一旦 C 释放锁,它将失去继承的优先级,然后 A 可以继续使用 C 拥有的资源。
2024-07-31 16:58:12
1048
原创 UEFI和Legacy简介
Legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程,Legacy启动模式包含一系列已安。目前UEFI替代Legacy的极大原因就是,UEFI使用GPT的分区引导方案,支持更大的硬盘。Legacy下安装的系统,就会调用Legacy引导模式启动,同理如果检测到是UEFI下安装的系统,则。另外,在UEFI规范中还有个兼容模块—CSM,是 一个特殊模块,可以为不支持 UEFI 的系统和硬。时,Legacy会切换到列表中的下一个设备并不断重复此过程,直到找到引导加载程序,否则返回。
2023-12-28 15:30:33
703
原创 UEFI开发 - 编译Option ROM之解决error: Cyclic dependency detected while generating rule
基于UEFI规范进行VBIOS开发
2023-08-30 17:11:04
453
原创 修改无法被git检测到,导致无法提交修改
本地代码仓中新增文件夹,文件夹中包含所有功能代码,执行git status。git add -f 修改的内容。无文件要提交,干净的工作区。就可以进行代码提交了!就会显示出来,然后执行。
2023-08-23 15:55:04
1071
原创 AIS架构之QCarCam API介绍以及代码实战
本文旨在通过调用libais_client相关接口实现同时打开多路摄像头,常见的车载应用场景中,像AVM就是同时打开前、后、左、右4路摄像头,环视应用拿到4路图像数据后,进行融合拼接,呈现出360环视效果。在实现同时打开4路camera之前,首先介绍下常用的QCarCam API。
2023-05-24 16:25:24
4301
13
Android v4l2 camera apk
2022-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人