布道师Peter
一直从业于半导体行业,曾为Linux内核开源文档社区提交过若干文档。 主要从事Linux、Android相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统。
展开
-
上帝视角 | 多核系统的负载均衡
前面的调度学习都是默认在单个 CPU 上的调度策略。我们知道为了 CPU 之间减少“干扰”,每个 CPU 上都有一个任务队列。运行的过程种可能会出现有的 CPU 很忙,有的 CPU 很闲,...原创 2021-07-12 07:57:00 · 1197 阅读 · 0 评论 -
吐血整理 | 肝翻 Linux 进程调度所有知识点
前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现。现在已经知道一个进程是如何创建...原创 2021-07-04 17:31:55 · 809 阅读 · 0 评论 -
do_fork 的实现
上面讲述了如何通过 fork, vfork, pthread_create 去创建一个进程,或者一个线程。通过分析最终 fork, vfork, pthread_create 最终都会通过...原创 2021-06-21 08:24:03 · 329 阅读 · 0 评论 -
内核线程的创建和运行
上面讲完了用户进程/线程的创建,这里我们看下内核是如何创建线程的。通过 ps 命令可以看到红色方框标出的都是父进程为2号进程的内核线程,2号进程即蓝色方框标出的进程 kthreadd,1号...原创 2021-06-24 07:58:00 · 1185 阅读 · 0 评论 -
Linux 对进程的描述
进程是操作系统种调度的实体,对进程拥有资源的描述称为进程控制块(PCB, Process Contrl Block)。通过 task_struct 描述进程内核里,通过 task_stru...原创 2021-06-18 08:00:00 · 354 阅读 · 0 评论 -
用户态进程/线程的创建 fork/vfork/pthread_create
forkfork 函数创建子进程成功后,父进程返回子进程的 pid,子进程返回0。具体描述如下:fork返回值为-1, 代表创建子进程失败fork返回值为0,代表子进程创建成功,这个分支是...原创 2021-06-17 08:00:00 · 810 阅读 · 0 评论 -
Linux 进程管理之任务绑定
什么是进程的 CPU 亲和性?在多核结构中,每个核有各自的L1缓存,相同类型的核被划分在同一个cluster中,而不同cluster之间又有共用的L2缓存。讲负载均衡的时候我们讲过一个进程...原创 2021-06-15 08:00:00 · 367 阅读 · 0 评论 -
Linux 进程管理之CFS负载均衡
什么是负载均衡? 前面的调度学习都是默认在单个CPU上的调度策略。我们知道为了CPU之间减少“干扰”,每个CPU上都有一个任务队列。运行的过程种可能会出现有的CPU“忙的一笔”,有的CPU...原创 2021-05-17 18:23:21 · 377 阅读 · 0 评论 -
Linux 进程管理之CFS调度器
调度的发展历史 字段版本O(n) 调度器linux0.11 - 2.4O(1) 调度器linux2.6CFS调度器linux2.6至今O(n) 调度器是在内核2.4以及更早期版本采用的算法...原创 2021-05-12 07:50:00 · 699 阅读 · 0 评论 -
Linux 进程管理之负载均衡
经过前面的学习,我们知道一个 task 有如下几种状态,但用top时往往会以缩写的形式展现,这里我们总结下。R (TASK_RUNNING),可运行状态。Linux中的 Ready 和 R...原创 2021-04-22 07:55:00 · 609 阅读 · 0 评论 -
Linux 进程管理之调度和进程切换
什么是调度?按照某种调度算法,从进程的ready队列中选择进程给CPU。为什么要调度?为了最大限度的利用CPU。调度相关结构体 task_struct我们先把task_struct中和调度...原创 2021-04-19 07:49:00 · 586 阅读 · 0 评论 -
Linux 内核进程管理之基础
没有废话,内存管理暂时告一段落,正式进入进程管理的内容。内核通过 task_struct 描述进程 用命令 pstree 可以让内核以树形的结构把进程之间的关系列出来,如下图:这是进程在内...原创 2021-04-14 22:55:33 · 293 阅读 · 0 评论