小立爱学习
码龄7年
求更新 关注
提问 私信
  • 博客:963,041
    社区:20,461
    983,502
    总访问量
  • 286
    原创
  • 3,115
    粉丝
  • 64
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
加入CSDN时间: 2019-05-07

个人简介:底层开发新人,对底层十分感兴趣,立志于长期底层开发

博客简介:

小立仔

博客描述:
小立仔的知识笔记
查看详细资料
个人成就
  • 获得4,443次点赞
  • 内容获得161次评论
  • 获得6,431次收藏
  • 代码片获得18,251次分享
  • 博客总排名132,123名
  • 原力等级
    原力等级
    8
    原力分
    6,528
    本月获得
    4
创作历程
  • 31篇
    2025年
  • 61篇
    2024年
  • 104篇
    2023年
  • 90篇
    2022年
成就勋章
TA的专栏
  • 系统安全
    50篇
  • eBPF
  • Linux 数据结构与算法
    1篇
  • 计算机体系架构
    4篇
  • Linux 内存管理
    37篇
  • Linux 内核问题分析
    1篇
  • Linux 操作
    16篇
  • modern C++
    11篇
  • Linux 文件系统
    13篇
  • Linux shell命令
    14篇
  • Linux 网络协议
    10篇
  • Linux 内核同步
    7篇
  • 英文手册翻译
  • Intel 手册翻译
    13篇
  • ARM 手册翻译
    2篇
  • LWN 文章翻译
    9篇
  • 虚拟化技术
    3篇
  • 容器
    3篇
  • Intel x86_64
    7篇
  • Linux 内核模块
    10篇
  • Linux 内核常用API
    12篇
  • ARM 64
    19篇
  • Linux 进程调度
    12篇
  • Linux 进程管理
    8篇
  • Linux C语言杂谈
    10篇
  • Linux 系统调用
    7篇
  • Linux 调试及其原理
    36篇
  • Linux内核杂谈
    7篇

TA关注的专栏 7

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

兴趣领域 设置
  • 编程语言
    c语言
  • 网络与通信
    网络安全tcp/ip
  • 操作系统
    linux
  • 网络空间安全
    系统安全
创作活动更多

【多重好礼】鸿蒙心迹 · 开发录原创征稿活动

鸿蒙开发者的实战经验,值得被记录。从踩坑排查到项目复盘,从工具脚本到学习笔记,每一段真实的开发经历,都是社区最宝贵的技术资产。「鸿蒙心迹 · 开发录」正式启航,不限主题、随时可写,只要是鸿蒙开发相关的真实经验都欢迎投稿。 本活动为 [HarmonyOS 7.0 创新内容共创季](https://builderx.csdn.net/activity-site/harmonyos/activity2026)双轨征文之一,与[「共创季 · 稿事节」](https://harmonyosdev.csdn.net/6a97f0de2b83d06f0ecadec5.html)深度征文互补——「稿事节」写深度技术长文,「开发录」写日常开发实战笔记。 「开发录」每月一期,12月截止,本季共三期,投稿即有机会获得京东卡、CSDN博客流量券、亿万Token、社区定制周边好礼!

125人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

ARM64 指令 --- CCMP/CSEL

本文介绍了ARMv8架构中的CCMP(条件比较)指令和CSEL(条件选择)指令。CCMP指令根据前一条指令的条件标志决定是否执行比较操作,否则直接设置NZCV标志位。
原创
博文更新于 2025.12.23 ·
1311 阅读 ·
19 点赞 ·
0 评论 ·
11 收藏

ARM64 指令 --- TST/CSEL

TST指令是ARM架构中的测试指令,用于检查寄存器中的特定位而不修改寄存器内容。它执行逻辑AND操作并设置条件标志位(NZCV),常用于条件分支判断前。
原创
博文更新于 2025.12.23 ·
1155 阅读 ·
10 点赞 ·
0 评论 ·
22 收藏

ARM64 --- NZCV标志位

ARM64架构中的NZCV条件标志寄存器位于PSTATE中,包含N(负数)、Z(零)、C(进位)和V(溢出)四个关键状态位,用于记录最近算术或逻辑操作的结果状态。常见指令如ADDS、SUBS、ANDS会修改NZCV标志,而普通ADD、MOV等指令则不会。条件码如EQ、NE、LT等基于NZCV进行条件判断。NZCV标志在数值比较、位测试和条件执行中发挥重要作用,是ARM64条件分支和运算的基础机制。
原创
博文更新于 2025.12.23 ·
1419 阅读 ·
13 点赞 ·
0 评论 ·
11 收藏

ARM64 指令 --- CASP / CASPA / CASPL / CASPAL

CASP指令是ARM架构中的原子比较交换指令,用于对内存中的32/64位字对进行原子操作。主要特点包括:提供四种内存序语义(CASP无屏障、CASPA获取语义、CASPL释放语义、CASPAL全屏障);
原创
博文更新于 2025.12.12 ·
1104 阅读 ·
12 点赞 ·
0 评论 ·
11 收藏

Linux 内存模型(Memory: the flat, the discontiguous, and the sparse)

Linux 内存模型(Memory: the flat, the discontiguous, and the sparse)简单描述
原创
博文更新于 2025.11.21 ·
1700 阅读 ·
0 点赞 ·
1 评论 ·
6 收藏

Linux 内存 --- get_user_pages_remote 函数

本文介绍了Linux内核中的get_user_pages_remote()函数,该函数用于跨进程获取用户空间内存页的物理页描述符(struct page*)。文章首先分析了函数原型和工作原理,指出其主要用于DMA、零拷贝I/O等场景,但存在无法自动重试缺页的缺陷。随后提供了一个完整的代码示例:用户程序通过mmap分配内存并获取其物理地址,内核模块则通过指定PID和虚拟地址,使用get_user_pages_remote()验证目标进程内存。
原创
博文更新于 2025.10.24 ·
645 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

Linux 内存 --- get_user_pages/pin_user_pages函数

本文介绍了Linux内核中固定用户内存页(pin user pages)的概念及其实现机制。
原创
博文更新于 2025.10.22 ·
1592 阅读 ·
19 点赞 ·
0 评论 ·
27 收藏

Linux内存 --- pte_offset_map/pte_offset_kernel

本文分析了Linux内核中两种页表访问函数pte_offset_kernel()和pte_offset_map()的区别。pte_offset_kernel()用于内核页表访问,由于内核页表恒在线性映射区,可直接指针访问;pte_offset_map()则用于用户页表访问,在32位系统上需要kmap临时映射页表页,而在64位架构(如x86_64/ARM64)上由于没有高端内存,pte_offset_map()实际上等同于pte_offset_kernel()。
原创
博文更新于 2025.10.14 ·
1191 阅读 ·
10 点赞 ·
0 评论 ·
12 收藏

Linux用户空间/内核空间获取用户空间地址的页表

本文介绍了在Linux系统中获取用户空间地址页表的两种方法。第一种通过/proc/[pid]/pagemap文件接口,从用户空间查询虚拟地址对应的物理页帧号(PFN)和物理地址,需要root权限;第二种在内核空间通过遍历进程页表(pgd→p4d→pud→pmd→pte)直接获取物理地址。文章提供了完整的代码示例,包括用户态程序通过pagemap查询物理地址的实现,以及内核模块遍历页表获取物理地址的函数。两种方法最终都能正确获取用户空间虚拟地址映射的物理地址,验证结果一致。
原创
博文更新于 2025.10.14 ·
749 阅读 ·
9 点赞 ·
0 评论 ·
7 收藏

Spectre-v2 以及 Linux Retpoline技术简介

Spectre-v2 以及 Linux Retpoline技术简介
原创
博文更新于 2025.09.29 ·
3269 阅读 ·
31 点赞 ·
2 评论 ·
14 收藏

Spectre-v1 简介以及对应解决措施

Spectre-v1 简介以及对应解决措施。
原创
博文更新于 2025.09.29 ·
3468 阅读 ·
26 点赞 ·
0 评论 ·
27 收藏

Linux 获取用户空间虚拟地址的物理地址--- pagemap文件

本文介绍了Linux内核中的/proc/[pid]/pagemap文件,它提供了进程虚拟地址到物理页帧号(PFN)的映射接口。文件内容按虚拟页顺序排列,每个虚拟页对应一个64位条目,包含PFN、交换状态、软脏位、写保护标记等信息。文章详细说明了条目的位格式定义,并给出了通过lseek()+read()读取条目的方法。
原创
博文更新于 2025.09.26 ·
1391 阅读 ·
26 点赞 ·
0 评论 ·
12 收藏

Linux ARM64 内核页表初始化 paging_init

本文基于Linux 6.16内核,分析了ARM64架构下内存映射初始化过程。重点研究了paging_init()函数如何通过map_mem()建立内核虚拟地址空间映射。
原创
博文更新于 2025.09.24 ·
698 阅读 ·
3 点赞 ·
0 评论 ·
9 收藏

Linux C语言基于FP寄存器进行栈回溯

本文介绍了基于帧指针的栈回溯原理及实现方法。在X86架构中,RBP寄存器作为帧指针,通过其保存的前一个栈帧基址形成链表结构,从而实现栈回溯。
原创
博文更新于 2025.09.22 ·
670 阅读 ·
4 点赞 ·
0 评论 ·
7 收藏

x86_64架构栈帧以及帧指针FP

x86_64架构寄存器、栈帧以及帧指针FP简介
原创
博文更新于 2025.09.19 ·
3148 阅读 ·
14 点赞 ·
0 评论 ·
33 收藏

Linux .eh_frame section以及libunwind

Linux .eh_frame section的描述以及libunwind库的使用。
原创
博文更新于 2025.09.19 ·
4509 阅读 ·
27 点赞 ·
0 评论 ·
34 收藏

Linux ARM64 内核/用户虚拟空间地址映射

本文分析了Linux在AArch64架构下的内核虚拟地址空间布局,重点探讨了线性映射与页表映射的机制。
原创
博文更新于 2025.09.18 ·
1589 阅读 ·
9 点赞 ·
1 评论 ·
15 收藏

Linux arm64 PTE contiguous bit

ARM64架构通过Contiguous PTE机制优化TLB性能,允许将16个连续的4KB页(共64KB)合并为一个TLB条目。该特性通过PTE表项的bit52(PTE_CONT)标记,使MMU将物理连续、权限一致的多个PTE条目缓存为单个TLB项,减少TLB占用并提高命中率。
原创
博文更新于 2025.09.03 ·
1110 阅读 ·
19 点赞 ·
0 评论 ·
10 收藏

ubuntu24.04安装 bpftool 以及生成 vmlinux.h 文件

ubuntu24.04安装 Bpftool以及生成vmlinux.h文件
原创
博文更新于 2025.08.13 ·
1141 阅读 ·
6 点赞 ·
0 评论 ·
7 收藏

Linux内存管理之 compound pages

本文介绍了Linux内核中的复合页(compound page)机制。复合页是由多个物理连续页组成的逻辑单元,通过头部页(first head page)和尾部页(tail pages)结构实现统一管理。文章详细分析了复合页的元数据布局,说明其特有信息存储在第一个尾部页中,包括分配阶数、析构函数等。同时指出复合页可以存在于页缓存中,并通过alloc_pages()分配时需设置__GFP_COMP标志。最后介绍了复合页的三种析构函数类型及其应用场景,包括透明大页(THP)和hugetlbfs子系统等。
原创
博文更新于 2025.08.13 ·
1264 阅读 ·
10 点赞 ·
0 评论 ·
14 收藏
加载更多