查看原文
其他

《Linux的进程、线程以及调度》连续4次课(预案)

宋宝华 Linux阅码场 2018-06-20

本课程分成4个组成部分,每次课60分钟。每次课后留下3~4个练习题,可以在微信群或者Linuxer公众号留言讨论答案和做题心得。

 

第一部分深入彻底地搞清楚进程生命周期,进程生命周期创建、退出、停止,以及僵尸是个什么意思;第二部分,深入分析进程创建的写时拷贝技术、以及Linux的线程究竟是怎么回事(为什么称为轻量级进程),此部分也会搞清楚进程0、进程1和托孤,以及睡眠时的等待队列;第三部分,搞清楚Linux进程调度算法,不同的调度策略、实时性,完全公平调度算法;第四部分,搞清楚Linux多核下的CPU、中断、软负载均衡,cgroups调度算法以及Linux为什么不是一个实时操作系统,如何把Linux变成一个硬实时的操作系统。

 

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

 

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

指导老师: 宋宝华

平台: CSDN

 

第一部分大纲

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

  2. 僵尸是个什么鬼?

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

  4. 内存泄漏的真实含义

  5. task_struct以及task_struct之间的关系

  6. 初见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. 多核下负载均衡

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

  3. cgroups和CPU资源分群分配

  4. Android和NEON对cgroups的采用

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

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

练习题

  1. 用time命令跑1个含有2个死循环线程的进程

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

  3. 创建和分群CPU的cgroup,调整权重和quota

  4. cyclictest



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存