
Linux内核
文章平均质量分 79
小而
这个作者很懒,什么都没留下…
展开
-
linux调度之SMP负载均衡
SMP调度背景 在多处理器系统上,内核必须考虑好几个额外的问题,以确保良好的调度。CPU负荷必须尽可能公平地在所有处理器上共享。 进程与系统中某些处理器的亲合性(affinity)必须是可设置的。 内核必须是能够将进程从一个CPU迁移到另一个上。linux SMP调度就是将进程安排/迁移到合适的CPU中去,保持各CPU负载均衡的过程。如下图所示。SMP调度时机scheduler_tick原创 2017-09-24 17:19:02 · 3914 阅读 · 0 评论 -
linux内存管理之页表
什么是页表页表就是用于将虚拟地址转换为物理地址的转换关系表。访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问。为何需要多级页表目前在linux中采用4级页表,ARM32采用2级页表,ARM64采用4级页表。但linux是一个通用性的系统,当ARM32时2级页表也是使用linux的4级页表机制,只是将其它两级页表转换不做任何处理。 那么为什么需要多级页表呢?节省内存空间。二级页表可以在需要的原创 2017-10-01 21:50:00 · 2814 阅读 · 0 评论 -
Linux内存管理之物理页面分配
概述页面分配器是Linux内核内存管理中最基本的分配器,基于伙伴系统算法(buddy)和zone-base的设计理念。物理页面分配接口alloc_pagesalloc_pages接口最终会调用到__alloc_pages_nodemask。struct page *__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,原创 2017-10-02 14:34:29 · 924 阅读 · 0 评论 -
Linux内存管理之slab分配器
slab分配器的目的在内核中,经常会发生对有限的几种数据结构频繁的分配内存和回收内存,比如进程描述符struct task_struct,索引节点对象struct inode等等。相比4KB或者8KB的物理页而言,这些对象往往较小,例如进程描述符一般只有1.7KB左右,索引节点对象则更小。那么对于这种高频发生的小数据结构的内存分配和回收,是否有可能进行优化呢?计算机科学家Jeff Bonwick早已原创 2017-10-02 15:06:58 · 572 阅读 · 0 评论 -
Linux内存管理之页面回收
概述有内存页面分配,自然就有内存页面回收。一种是主动释放内存,另一种是内核去回收内存页面。在linux内存充足时,内核会尽量多地使用内存作为文件缓存(page cache)从而提高系统性能,但当内存紧张时,文件缓存页面会被丢弃或回写到块设备中,然后释放出物理内存。当然这会在一定程度上影响系统的性能。Linux内核将很少使用到的内存换出去交换(swap)分区,以便释放内存,这个机制称为页交换(wapp原创 2017-10-02 20:06:34 · 1060 阅读 · 0 评论