早鸟报名:《Linux内核铁三角》之《进程调度》6节课

Linux的进程调度和内存管理是理解Linux的关键,如果这2个问题理不清,Linux的脉络就打不通,很多问题就无法得到解释。

这是宋老师《Linux内核铁三角》的第一脉——《Linux的进程、线程以及调度》2020最新版,试图解决进程的生命周期、调度算法、多核负载均衡、Linux实时性、cgroups等一系列的问题。

Linux内核铁三角系列共包含:进程调度、内存管理、IO/文件系统三个系列。

大纲

本课程作为《打通Linux脉络系列》中的一个分系列,分成6个组成部分,每次课60-70分钟。每次课后留下3~4个练习题,可以在答疑群讨论。

  • 第一部分深入彻底地搞清楚进程生命周期,进程生命周期创建、退出、停止,以及僵尸是个什么意思;

  • 第二部分,深入分析进程创建的写时拷贝技术、以及Linux的线程究竟是怎么回事(为什么称为轻量级进程),此部分也会搞清楚进程0、进程1和托孤,以及睡眠时的等待队列;

  • 第三部分,搞清楚Linux进程调度算法,不同的调度策略、实时性,完全公平调度算法;

  • 第四部分,搞清楚Linux多核下的CPU、中断、软负载均衡,Linux实时性问题,SCHED_DEADLINE调度算法

  • 第五部分,cgroups调度算法,自动cgroup,Android、docker、systemd对cgroup的应用以及cpuset cgroup。

  • 第六部分,深入解释深度睡眠TASK_UNINTERRUPTIBLE、浅度睡眠TASK_INTERRUPTIBLE和TASK_KILLABLE,D状态以及D状态与系统负载的关系。

通过这4部分的学习,彻底理清Linux的进程、线程,弄清楚你写的内核和应用程序在系统里面究竟是如何跑,知其然,知其所以然。

 

针对人群:Linux开发者以及其他对进程调度感兴趣的开发者

指导老师:宋老师

上课时间:课程已经全部上线,无需等待

上课式:在线视频,无限回看。课程群讨论答疑。

第一部分大纲

  1. Linux进程生命周期(就绪、运行、睡眠、停止、僵死)

  2. 僵尸是个什么鬼?

  3. 僵尸可以被杀死的一个假象(全新内容)

  4. 停止状态与作业控制,cpulimit

  5. 内存泄漏的真实含义

  6. task_struct以及task_struct之间的关系

  7. 初见fork和僵尸

练习题

  1. fork的例子

  2. life-period例子,观察僵尸

  3. 用cpulimit控制CPU利用率

第二部分大纲

  1. fork、vfork、clone

  2. 写时拷贝技术

  3. Linux线程的实现本质

  4. 进程0和进程1

  5. 进程的睡眠和等待队列

  6. 孤儿进程的托孤,SUBREAPER

练习题

  1. fork、vfork、Copy-on-Write例子

  2. life-period例子,实验体会托孤

  3. pthread_create例子,strace它

  4. 彻底看懂等待队列的案例

第三部分大纲

1. CPU/IO消耗型进程

2. 吞吐率 vs. 响应

3. SCHED_FIFO、SCHED_RR

4. SCHED_NORMAL和CFS

5. nice、renice

6. chrt

练习题

  1. 运行2个高CPU利用率程序,调整他们的nice

  2. 用chrt把一个死循环程序调整为SCHED_FIFO

  3. 阅读ARM的big.LITTLE架构资料,并论述为什么ARM要这么做?

第四部分大纲

  1. Linux Deadline调度器(全新内容)

  2. Linux为什么不是硬实时的

  3. preempt-rt对Linux实时性的改造

  4. 多核下负载均衡

  5. 中断负载均衡、RPS软中断负载均衡

练习题

  1. 用taskset调整多线程依附的CPU

  2. cyclictest

  3. SCHED_DEADLINE案例

第五部分大纲

  1. 基于cpu cgroups进行CPU资源分配

  2. Linux的sched_autogroup(全新内容)

  3. 基于cpuset cgroups进行进程CPU绑定(全新内容)

  4. Docker和cgroups

  5. Systemd和cgroups(全新内容)

  6. Android对cgroups的利用

练习题

  1. 开启和关闭sched_autogroup,关键CPU利用率情况;

  2. 创建和分群CPU的cgroups,调整权重和quota;

  3. 利用cpuset cgroups,进行进程的CPU绑定

第六部分大纲

  1. 深度睡眠TASK_UNINTERRUPTIBLE和浅度睡眠TASK_INTERRUPTIBLE(全新内容)

  2. D状态的意思是什么?(全新内容)

  3. 为什么需要深度睡眠?(全新内容)

  4. TASK_KILLABLE(全新内容)

练习题

  1. 写内核代码,实践TASK_UNINTERRUPTIBLE、TASK_INTERRUPTIBLE和TASK_KILLABLE

报名方法

苹果和电脑用户报名方法:


电脑浏览器访问yomocode.com(不支持手机访问),先点击网站右上角图标,微信扫码登录,然后在此链接报名:

https://yomocode.com/courses/18

(访问该网址,也看免费试看一小节)

报名价格:

原价759元,现在报名仍享早鸟优惠价格:599

安卓手机用户可点击链接一键报名:


 点击报名

也可微信一键试看免费小节:


 点击试看

详情也可扫描如下二维码添加客服咨询:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值