会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
ZouTaooo
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
下一页
2023年10月16日
CFS(三)调度周期与最小抢占粒度
摘要: 前言 CFS的调度逻辑是将一个调度周期的物理时间按照任务的权重分配给每一个任务,确保在一个调度周期内,队列中的每一个任务都能够得到执行,尽管执行的时长会有差异。本文对调度周期的设定规则以及配置参数进行探究。 调度周期 调度周期的计算函数__sched_period如下,计算结果与以下参数有关: nr
阅读全文
posted @ 2023-10-16 11:07 ZouTaooo
阅读(471)
评论(0)
推荐(0)
2023年10月12日
CFS(二)load_weight与vruntime
摘要: 前言 在理清楚了CFS的基本实现以后,调度类fair_sched_class中规定了调度器的基本操作集合,cfs_rq实现了被操作的就绪队列。剩下的就是研究操作集合中的具体实现,看看CFS是如何管理这些队列中的进程的。本文主要解释了两个问题: 什么样的任务归CFS管? CFS如何实现队列内部的优先级
阅读全文
posted @ 2023-10-12 18:58 ZouTaooo
阅读(423)
评论(0)
推荐(0)
Linux任务的优先级机制
摘要: 前言 在阅读源码的过程中发现一个task_struct包含四个优先级相关的成员,prio、static_prio、normal_prio和rt_priority这几个优先级值有什么区别和联系呢? struct task_struct { int prio; int static_prio; int
阅读全文
posted @ 2023-10-12 18:54 ZouTaooo
阅读(752)
评论(0)
推荐(0)
2023年10月11日
CFS(一)设计理念与实现架构
摘要: 前言 本文对CFS的基础的设计理念以及在内核实现上的基本代码架构进行了分析,从宏观上梳理调度和CFS的脉络。本文所有的代码基于Linux 4.19。 CFS的设计理念和目标 CFS(Completely Fair Scheduler)完全公平调度器,从字面上看定义的很清晰,首先CFS的本质是一个调度
阅读全文
posted @ 2023-10-11 11:34 ZouTaooo
阅读(529)
评论(0)
推荐(0)
2023年10月8日
vmalloc&vfree浅析
摘要: 前言 熟悉伙伴系统的管理机制以及伙伴系统提供的内存分配API方式以后我们知道,伙伴系统提供了以分配阶为参数的连续page的分配接口。但是在内核中并不是在所有时候都要求分配的内存在物理上连续,只需要在逻辑上连续即可。比如,随着系统的使用,分配连续的大的内存块由于内存碎片的存在是有可能失败的。因此分配逻
阅读全文
posted @ 2023-10-08 16:59 ZouTaooo
阅读(294)
评论(0)
推荐(0)
内核态内存的正确使用方法
摘要: 前言 看完了伙伴系统的设计、slab分配器的设计、vmalloc、kmalloc这些内容对于内存管理的一些细节上好像比较清楚了,但是内核是如何使用内存的还是有一些混淆。也产生了一些疑问,在内核中内存的正确打开方式是什么呢? 内核地址空间划分 首先我们需要搞情况内核的地址空间,不同地址空间的内存的使用
阅读全文
posted @ 2023-10-08 16:20 ZouTaooo
阅读(177)
评论(0)
推荐(0)
持久映射&固定映射
摘要: 前言 内核地址空间的划分 VMALLOC_START和VMALLOC_END之间的区域用于vmalloc分配逻辑上连续物理上不连续的内存。 内核地址空间中还有一段区间用于高端内存的持久映射,PKMAP_BASE和FIXADDR_START,如果存在高端内存可以通过alloc_pages_node分配
阅读全文
posted @ 2023-10-08 16:14 ZouTaooo
阅读(155)
评论(0)
推荐(0)
slab分配器
摘要: 前言 slab分配器从伙伴系统获取页帧进行管理,对外为一些固定size的小内存块和特定内核数据结构提供缓存和内存分配服务。slab分配器为的是满足内核中小内存块的分配需求,毕竟伙伴系统的内存分配以page为单位实在太大了。 使用slab带来以下几个好处: 减少了伙伴系统的访问次数,小内存的分配在sl
阅读全文
posted @ 2023-10-08 15:17 ZouTaooo
阅读(308)
评论(0)
推荐(0)
页帧的数据结构设计
摘要: 前言 页帧page是物理内存管理的基本单位,struct page记录了任意时刻page的所有状态,因此每一个物理页帧都需一个对应的struct page结构体记录状态,对于内存多计算机系统来说需要的struct page本身就需要大量内存进行存储,因此该结构体中每增加一个变量带来的代价会很大,需要
阅读全文
posted @ 2023-10-08 11:44 ZouTaooo
阅读(143)
评论(0)
推荐(0)
内存管理的框架与数据结构设计
摘要: 前言 在谈Linux内存管理框架之前需要了解NUMA,NUMA是非一致性内存访问(Uon-Uniform Memory Access)的缩写,与之相反的是一致性内存访问UMA。在多核的UMA架构的机器上,CPU视角下所有的内存都是均匀的,不同CPU访问同一块内存的延迟是相同;而在NUMA架构的机器上
阅读全文
posted @ 2023-10-08 11:27 ZouTaooo
阅读(162)
评论(0)
推荐(0)
上一页
1
2
3
4
5
下一页
公告