- 博客(11)
- 收藏
- 关注
原创 firmware是怎么诞生的
UEFI取代传统BIOS:针对传统BIOS的局限性(如16位模式、MBR分区限制),英特尔主导开发了UEFI(统一可扩展固件接口),支持64位、GPT分区及模块化扩展,成为现代PC和服务器的标准。存储介质升级:从EPROM(紫外线擦除)到EEPROM(电擦除),再到NOR/NAND Flash,存储技术的进步使固件可在线更新(如早期路由器的固件升级)。开源生态推动:如Coreboot、U-Boot等开源固件的出现,推动了嵌入式设备和特定领域(如航天、工业控制)的固件定制化。
2025-05-20 09:21:00
149
原创 静态大页的使用方式
综上,静态大页的使用主要通过内核启动参数预留和运行时 sysfs 动态调整两种方式控制,结合 hugetlbfs 文件系统实现高效内存访问。此方法适用于所有支持的大页尺寸(如 2MB、1GB 等),且分配的大页在系统启动时即通过 bootmem 预留,避免运行时内存碎片干扰。大页尺寸支持:需确认 CPU 和内核支持目标大页尺寸(如通过 /proc/cpuinfo 检查 pse 或 pdpe1gb 标识)。内存释放限制:通过 sysfs 释放大页时,需确保目标大页未被应用程序占用。
2025-05-12 16:35:41
239
原创 系统选择 1GB 大页或 2MB 大页的机制
字段确定当前生效的大页大小。若未显式配置,默认大页通常为。强制设置系统默认大页为 1GB18。调用优先使用 1GB 大页。
2025-05-12 11:27:00
249
原创 多线程环境下 brk 的挑战与内核解决方案
多线程 brk 请求 非主线程触发线程分配区创建,通过独立的 mmap 堆空间分配,避免主堆锁竞争 分配区隔离 + mmap_sem 锁。每个线程拥有独立的 线程分配区(Thread Arena),通过 mmap 分配非连续堆空间,避免主堆(Main Arena)的全局锁竞争。线程分配区维护独立的 Fast Bins,优先复用线程本地的小内存块,减少全局 Bin 链表的访问频率。主分配区仅处理单线程进程或未创建线程分配区的情况,通过细粒度锁(如 mmap_sem)同步关键操作。
2025-05-09 13:14:26
227
原创 linux brk
在 Linux 系统中,brk 是一个低级系统调用,用于直接操作进程的堆内存(heap)。分配内存:调用 brk(new_break),将 program break 指针移动到更高的地址(new_break),内核会为这段新空间预留虚拟内存(物理内存实际分配可能延迟到首次访问时)。sbrk(n) 是 brk 的封装,用于将堆顶移动 n 字节并返回旧地址(sbrk(0) 仅查询当前堆顶)。brk 适合分配小块连续内存(默认情况下,glibc 的 malloc 对小内存请求使用 brk)。
2025-05-09 11:11:36
355
原创 PF_INET和PF_PACKET
综上所述,PF_INET和PF_PACKET分别代表了TCP/IP协议族和底层数据包接口,在Linux套接字编程中有着不同的应用场景和用途。选择哪种协议族取决于具体的应用需求和数据处理层次。
2025-01-17 17:41:12
408
原创 tc tbf 关键参数说明
因为buffer和bucket都是一个固定大小的内存结构(除非重新设置),所以是有上限的。buffer的上限决定了能同时缓存最多多少的数据包,而bucket的上限决定了token最大的上限。综上所述,TBF 的 buffer 设计需要根据具体应用场景和网络环境来权衡各项参数,以达到流量整形的最佳效果。总之,桶和缓冲区在 TBF 中起着不同但相互补充的作用,共同完成流量整形的功能。合理设计两者的参数是实现有效流量控制的关键。TBF 是一种流量整形技术,它使用 token bucket 的机制来控制网络流量。
2024-06-26 20:53:08
480
原创 如何确保独占某一个cpu核心?
这个点就是我们需要注意的点------如果你此刻运行你的程序在23核上,势必和hrclient进行cpu时间片的共同占用。对于时间敏感的程序来说,必然无法接受。很多小伙伴在linux上跑某些程序的时候,由于各种特殊的需求,需要独占某一个cpu。那么如何确保确保独占?很多人用top比较麻烦,今天我们使用awk轻松实现。其中,23代表的是待查看的cpu核,执行完毕将打印出23核对应的所有线程。其中[] 包含的是系统的内核线程,1个用户态线程 hrclient。
2024-04-07 11:24:05
354
原创 系统信息SystemInfo MemoryStatus
int main(int argc, char* argv[]){ SYSTEM_INFO sysInfo; MEMORYSTATUS memStaus; GetSystemInfo(&sysInfo); GlobalMemoryStatus(&memStaus); GlobalMemoryStatusVlm() cin.get(); return 0;}
2013-11-11 16:53:11
731
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人