logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【深度拆解】musl libc 的系统调用层:一个头文件如何适配所有 Linux 架构

本文深度解析musl库中_INTERNAL_SYSCALL_H头文件的精妙设计。该设计通过宏技巧实现了:1)零开销的可变参数分发,利用__SYSCALL_NARGS_X宏自动推导参数个数并拼接对应系统调用;2)三层ABI兼容,统一处理32/64位、时间溢出和socket历史遗留问题;3)高效错误码转换(__syscall_ret);4)线程取消点支持(syscall_cp)。相比glibc的分散实

#linux#开发语言#数据结构 +2
解决 OpenAI Codex CLI 在 Linux/VMware 中报错:bubblewrap needs access to create user namespaces

摘要:本文详细分析了在Ubuntu虚拟机中运行OpenAICodexCLI时沙箱初始化失败的解决方案。主要原因是bubblewrap工具因Linux内核未启用非特权用户命名空间和AppArmor安全模块拦截而无法正常工作。解决方法包括:1)启用内核参数允许用户命名空间;2)解除AppArmor对非特权用户命名空间的限制;3)提供备用方案即在虚拟机环境中直接禁用沙箱功能。文章提供了从检查安装到完整修

【学习记录】Week12(二):House of Pig——Tcache 与 FSOP 的终极复合利用

本文介绍了现代glibc(2.34+)中堆漏洞利用技术HouseofPig,该技术通过结合Tcache投毒和IO_FILE结构体伪造,在移除__free_hook后仍能实现控制流劫持。文章详细剖析了_IO_str_overflow函数的关键漏洞点,阐述了如何精心构造伪造的IO_FILE_plus结构体,利用TcachePoisoning控制malloc返回目标地址,最终通过memcpy写入ROP链

深度拆解:Linux read() 系统调用的真正实现

本文通过分析musl libc中5行代码的read()实现,揭示了系统调用的本质。文章指出read()并非直接调用操作系统,而是通过libc封装层syscall_cp进入内核,其中_cp表示支持线程取消点。对比了musl(精简设计)和glibc(多层封装)的不同实现风格,解释了系统调用号、用户态/内核态切换过程,并列举了read()常见的三大使用误区(未读满缓冲区、EOF判断、EINTR处理)。最

#linux#开发语言#数据结构 +2
讲透 putchar 的底层实现:从标准库到自定义 I/O

这篇文章解析了C语言中putchar函数的核心实现机制。通过一个典型的自定义putchar实现(将输出重定向到do_putc函数),揭示了C语言I/O系统的分层设计思想:标准接口(如putchar)作为应用层,通过适配层(如do_putc)桥接到底层硬件驱动。文章对比了putchar与fputc的区别,解释了参数使用int而非char的原因(兼容EOF和整数提升),并指出这种自定义实现常见于嵌入式

#linux#运维#服务器
musl libc 的 fwrite 到底在干什么?逐行拆解

摘要:musllibc的__fwritex函数以不到50行代码实现了高效文件写入功能,核心设计包括:1)行缓冲机制(遇到换行符即flush);2)延迟分配策略(不写不分配缓冲区);3)大数据直写(避免二次拷贝);4)零拷贝memcpy优化。相比glibc的200+行实现,musl通过精简指针运算和逆向查找换行符等设计,在保证功能完整性的同时显著提升性能。该函数完美体现了musl"够用就好

#linux#运维#服务器
逐行拆解:musl libc 的 x86_64 优化版 memcpy 到底强在哪

这段30行的x86_64汇编实现了一个高效memcpy函数,核心策略是:先通过逐字节搬运对齐目标地址(最多7次),再用repmovsq批量搬运8字节块,最后处理剩余字节。相比glibc的复杂多版本实现,musl采用极简设计——小数据(<8B)直接走movsb避免rep开销,对齐后的大数据用repmovsq达到接近内存带宽的吞吐。关键点包括:严格遵循System V ABI寄存器约定、利用te

手写 memcpy:从字节对齐到移位拼接,这才是底层优化的艺术

这篇文章解析了高效memcpy实现的底层优化技巧。核心在于处理未对齐内存访问:1) 先逐字节对齐源地址;2) 根据目标地址偏移量分三种情况,通过32位寄存器滑动窗口和移位拼接技术实现高效拷贝;3) 采用16字节循环展开批量处理对齐数据,配合宏定义适配大小端架构。相比逐字节拷贝,该方案充分利用总线带宽,通过地址对齐和移位运算优雅处理任意偏移情况,在150行代码内实现了跨平台的高效内存拷贝,是底层优化

#算法
230. 二叉搜索树中第 K 小的元素 – CSDN 高质量题解

本文探讨了在二叉搜索树(BST)中查找第k小元素的算法。核心思路是利用BST中序遍历的递增特性,通过递归或迭代方式遍历树,当访问到第k个节点时返回结果。递归解法时间复杂度O(H+k),空间复杂度O(H);迭代解法使用栈模拟相同过程。对于频繁修改和查询的场景,提出进阶优化方案:为节点维护子树大小属性,构建顺序统计树(OrderStatisticTree),将查询复杂度优化至O(logn)。文章强调中

#算法#c语言#leetcode +1
openEuler:面向数字基础设施的开源操作系统崛起之路

openEuler(开源欧拉)是由华为于2019年12月30日正式开源的服务器操作系统项目,现由开放原子开源基金会托管运营。作为面向数字基础设施的全场景操作系统,openEuler支持服务器、云计算、边缘计算、嵌入式等多样化场景,并提供对ARM、x86、RISC-V、LoongArch等多样性算力的全面支持。关键里程碑2019年:华为开源EulerOS,openEuler社区正式成立2021年9月

#linux#开源#云原生
    共 17 条
  • 1
  • 2
  • 请选择