在先前文章《近距离看GPU计算(2)》中,我们谈到现代GPU发展出SIMT(SingleInstructionMultipleThread)的执行结构,硬件线程池的线程们有相对独立的运行上下文,以Warp为单位分发到一组处理单元按SIMD的模式运行。这些Warp内的线程共享同样的...
1开场白环境:处理器架构:arm64内核源码:linux-5.10.50ubuntu版本:20.04.1代码阅读工具:vimctagscscope无论是任务处于用户态还是内核态,经常会因为等待某些事件而睡眠(可能是等待IO读写完成,也可能等待其他内核路径释放一把锁等)。本文来探讨...
一、背景:性能之战“不服跑个分”已经沦为手机行业的调侃用语,但是实话实说,在操作系统领域“跑分”确实是最重要的评价方式之一。比如Linux内核社区常常以跑分软件得分,来评价一个优化补丁的价值。甚至还有phoronix这样专注于Linux跑分的媒体。而且今天我还想说一点,让软件跑分...
很多基础的概念,将跨越软件的层次而存在。比如slab,对于内核人员,我们都知道slab是buddy之上的一层。因为buddy作为Linux内核最底层的内存管理器,它分配1页,2页,4页,2^n页,但是作为内核的堆用户本身,经常只是调用kmalloc()申请一个小内存,或者调用km...
已经运行了一段时间的系统上会产生大量不连续的page, 要想找到高阶(high-order)条件的内存空间具有挑战性。
通用操作系统,通常都会开启mmu来支持虚拟内存管理,而页表管理是在虚拟内存管理中尤为重要,本文主要以回答几个页表管理中关键性问题来解析Linux内核页表管理,看一看页表管理中那些鲜为人知的秘密。
Anolis OS 国密是社区在 Anolis OS 上做的国密技术解决方案,非常欢迎业界有兴趣的开发者能够参与到 OpenAnolis 社区,为国内的基础软件生态添砖加瓦。
Page cache和Buffer cache, 它们到底是什么关系?
本文主要讲解文件系统挂载核心逻辑,暂不涉及挂载命名空间和绑定挂载等内容(后面的内容可能会涉及),且以ext2磁盘文件系统为例讲解挂载。