×

  首页 >   全部课程 > 打通Linux脉络系列:进程、内存和IO

打通Linux脉络系列:进程、内存和IO

企业定制,团体报名请您

在线预约

课程代码:X983培训课时:3天,18小时

该班级已开课 在线咨询

备注:详情可拨打 400-690-6115 或在线咨询客服人员

课程简介

本课程是打下内核、驱动和系统编程基础的课程,它主要讲解Linux内核最核心的进程调度、内存管理和I/O模型,打通开发过程中对Linux系统知识的要求。我们在多年的开发实践中发现,很多Linux开发者,无论做内核还是做系统编程,缺乏对Linux系统本身的认识,这使得他们在工程中处处受阻,碰到很多问题之后,不理解本质原因。所以本课程的定位,实际是为了帮助学员打通对Linux理解的任督二脉。

学员基础

Linux开发者(熟练地使用Linux,在Linux上从事开发)

课程目标

展示全部

课程大纲

第一章 进程
第一节 进程生命周期
Linux进程生命周期(就绪、运行、睡眠、停止、僵死)
僵尸是个什么鬼?
停止状态与作业控制,cpulimit
内存泄漏的真实含义
task_struct以及task_struct之间的关系
初见fork和僵尸
练习题
fork的例子
life-period例子,观察僵尸
用cpulimit控制CPU利用率

第二节 进程的创建、退出和睡眠
fork、vfork、clone
写时拷贝技术
Linux线程的实现本质
进程0和进程1
进程的睡眠和等待队列
孤儿进程的托孤,SUBREAPER
练习题
fork、vfork、Copy-on-Write例子
life-period例子,实验体会托孤
pthread_create例子,strace它
彻底看懂等待队列的案例

第三节 调度算法
1. CPU/IO消耗型进程
2. 吞吐率 vs. 响应
3. SCHED_FIFO、SCHED_RR
4. SCHED_NORMAL和CFS
5. nice、renice
6. chrt
练习题
运行2个高CPU利用率程序,调整他们的nice
用chrt把一个死循环程序调整为SCHED_FIFO
阅读ARM的big.LITTLE架构资料,并论述为什么ARM要这么做?

第四节 多核调度、cgroup、实时性
多核下负载均衡
中断负载均衡、RPS软中断负载均衡
cgroups和CPU资源分群分配
Android和NEON对cgroups的采用
Linux为什么不是硬实时的
preempt-rt对Linux实时性的改造
练习题
用time命令跑1个含有2个死循环线程的进程
用taskset调整多线程依附的CPU
创建和分群CPU的cgroup,调整权重和quota
cyclictest

第二章 内存
1 硬件原理和分页管理
CPU寻址内存,虚拟地址、物理地址
MMU以及RWX权限、kernel和user模式权限
内存的zone: DMA、Normal和HIGHMEM
Linux内存管理Buddy算法
连续内存分配器(CMA)
练习题
尝试去更改一个const变量
meltdown实例
看/proc/buddyinfo

2 内存的动态申请和释放
slab、kmalloc/kfree、/proc/slabinfo和slabtop
用户空间malloc/free与内核之间的关系
mallopt
vmalloc
内存耗尽(OOM)、oom_score和oom_adj
Android进程生命周期与OOM
练习题
看/proc/slabinfo,运行slabtop
运行mallopt.c程序:mallopt(M_TRIM_THRESHOLD)等
看/proc/vmallocinfo,grep ioremap映射
运行一个很耗费内存的程序,观察oom memory
通过oom_adj调整firefox的oom_score

3 进程的内存消耗和泄漏
进程的VMA。
进程内存消耗的4个概念:vss、rss、pss和uss
page fault的几种可能性,major和minor
应用内存泄漏的界定方法
应用内存泄漏的检测方法:valgrind和addresssanitizer
练习题
看一下进程的/proc//maps和smaps文件;
pmap一个进程;
把同一个程序运行2次,运行1次,观察pss;再运行,得到2个进程,观察代码段的pss变化;
valgrind检查内存错误

4 内存与I/O的交换
page cache
free命令的详细解释
read、write和mmap
file-backed的页面和匿名页
swap以及zRAM
页面回收和LRU
练习题
把hello,python运行两次,对比时间差;
free,cat /dev/sda > /dev/null, free,观察变化,分析原因;


5 其他工程问题以及调优
DMA和cache一致性
内存的cgroup
性能方面的调优:page in/out, swapin/out
Dirty ratio的一些设置
Swappiness
练习题
vmstat;
smem -s swap -t -k –n
限制一个cgroup的memory,用cgexec把一个进程放到这个cgroup

第三章 I/O
第1节 Linux I/O和网络模型
阻塞
非阻塞
多路复用
Signal IO
异步IO
Libevent
练习题
针对globalfifo采用signalio访问;
运行glibc-aio.c的案例;
运行libevent网络程序案例;
运行epoll案例

第2节 典型文件系统
VFS
EXT2/3/4的layout
文件系统的日志与掉电保护
练习题
dump一个ext文件系统;
分析各种日志方法的时序

第3节 IO调度器
Linux block IO流程
IO调度和CFQ调度算法
ionice
cgroup与IO
练习题
ionice调整进程io优先级,iotop观察;
cgroup控制io

课程推荐

  • PowerPoint专项应用——PPT商用演示文稿设计与专业演讲

    课程代码:X209培训课时:6小时


    本课程由培训经验10年以上的专业讲师精心设计,提升学员利用PPT进行演讲的专业能力;掌握演示文稿的节奏控制与演说表达的经典方法;学会运用互动、问答技巧,提升演讲、培训的效果;掌握幻灯片整体设计能力,将演示内容图形化、图示化、图表化直观表达。


  • 跨平台软件架构师

    课程代码:X404培训课时:24课时

    学习本课程将1、深入理解构架的重要性; 
    2、系统地掌握构架开发的技术和方法; 
    3、掌握构架分析的步骤和方法; 
  • PMP®项目管理

    课程代码:7052培训课时:63课时(共9天:5天精讲、3天考试辅导、1天串讲)

    PMP®是“Project Management Professional”的缩写,是由美国项目管理协会(PMI®)开发并推广的项目管理资格认证,也是目前国际项目管理界含金量最高的证书,在全球190多个国家和地区得到了高度认可。来自官方的最新数据显示,全球PMP®证书持有者的数量已经突破80万,中国大陆地区的PMP®数量已经超过13万,约占全球总量的1/6。PMP®认证培训所使用的教材为PMI主持开发的《项目管理知识体系指南(PMBOK指南)》,现在的最新版本是第5版。 中国大陆地区的PMP®考试由国家外国专家局负责组织实施,每年有四次考试,分别是三月、六月、九月和十二月,具体考试日期及考试相关问题请咨询东方瑞通的课程顾问。 PMP®培训的官方授权机构叫REP(Registered Education Providers ),东方瑞通是PMI®授权的REP®之一。 参加东方瑞通的PMP®项目管理培训可获得如下后续服务: 1、培训期间每个班都会配备班主任,全程为学员服务。 2、培训期间还会建立QQ群、微信群,考前全程提供在线辅导。 3、学员通过考试后,还可以参加东方瑞通组织的各种免费及收费活动,积攒PDU。

    PMP® is a registered mark of the Project Management Institute, Inc.

提示

老学员报名 非老学员报名