linux epoll实例_打通Linux脉络系列:Linux内核进程、内存和I/O2019年3月28日北京开班...
一、课程描述
本课程是打下内核、驱动和系统编程基础的课程,它主要讲解Linux内核最核心的进程调度、内存管理和I/O模型,打通开发过程中对Linux系统知识的要求。我们在多年的开发实践中发现,很多Linux开发者,无论做内核还是做系统编程,缺乏对Linux系统本身的认识,这使得他们在工程中处处受阻,碰到很多问题之后,不理解本质原因。所以本课程的定位,实际是为了帮助学员打通对Linux理解的任督二脉。
二、主办单位:
中国高科技产业化研究会智能信息处理分会
北京中际赛威文化发展有限公司
北京中际荣威科技有限公司
三、研修时间:2019年3月28-30日(27日 报到)
四、研修地点:北京(具体地点及路线图详见报到通知)
五、培训对象:
本课程适合对象: Linux开发者(使用Linux、在Linux上从事开发)
课时安排:每天共6个小时,上课4小时、上机2小时,每天安排多个上机实践,巩固课堂知识。
随课程赠送《Linux内核设计与实现》

六、课程内容

热身:Linux内核学习的方法论
1. Linux内核学习的8句话
2. 分析内核源码如何入手
3. Linux内核中的源码地图
第一章 进程
第一节 进程生命周期
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要这么做?
第四节 多核调度、cgroup、实时性
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
第二章 内存
第一节 硬件原理和分页管理
1.CPU寻址内存,虚拟地址、物理地址
2.MMU以及RWX权限、kernel和user模式权限
3.内存的zone: DMA、Normal和HIGHMEM
4.Linux内存管理Buddy算法
5.连续内存分配器(CMA)
练习题
1.尝试去更改一个const变量
2.meltdown实例
3.看/proc/buddyinfo
第二节 内存的动态申请和释放
1.slab、kmalloc/kfree、/proc/slabinfo和slabtop
2.用户空间malloc/free与内核之间的关系
3.mallopt
4.vmalloc
5.内存耗尽(OOM)、oom_score和oom_adj
6.Android进程生命周期与OOM
练习题
1.看/proc/slabinfo,运行slabtop
2.运行mallopt.c程序:mallopt(M_TRIM_THRESHOLD)等
3.看/proc/vmallocinfo,grep ioremap映射
4.运行一个很耗费内存的程序,观察oom memory
5.通过oom_adj调整firefox的oom_score
第三节 进程的内存消耗和泄漏
1.进程的VMA。
2.进程内存消耗的4个概念:vss、rss、pss和uss
3.page fault的几种可能性,major和minor
4.应用内存泄漏的界定方法
5.应用内存泄漏的检测方法:valgrind和addresssanitizer
练习题
1.看一下进程的/proc//maps和smaps文件;
2.pmap一个进程;
3.把同一个程序运行2次,运行1次,观察pss;再运行,得到2个进程,观察代码段的pss变化;
4.valgrind检查内存错误
第四节 内存与I/O的交换
1.page cache
2.free命令的详细解释
3.read、write和mmap
4.file-backed的页面和匿名页
5.swap以及zRAM
6.页面回收和LRU
练习题
1.把hello,python运行两次,对比时间差;
2.free,cat /dev/sda > /dev/null, free,观察变化,分析原因;
第五节 其他工程问题以及调优
1.DMA和cache一致性
2.内存的cgroup
3.性能方面的调优:page in/out, swapin/out
4.Dirty ratio的一些设置
5.Swappiness
练习题
1.vmstat;
2.smem -s swap -t -k –n
3. 限制一个cgroup的memory,用cgexec把一个进程放到这个cgroup
第三章 I/O
第一节 Linux I/O和网络模型
1.阻塞
2.非阻塞
3.多路复用
4.Signal IO
5.异步IO
6.Libevent
练习题
1.针对globalfifo采用signalio访问;
2.运行glibc-aio.c的案例;
3.运行libevent网络程序案例;
4.运行epoll案例
第二节 典型文件系统
1.VFS
2.EXT2/3/4的layout
3.文件系统的日志与掉电保护
练习题
1.dump一个ext文件系统;
2.分析各种日志方法的时序
第三节 IO调度器
1.Linux block IO流程
2.IO调度和CFQ调度算法
3.ionice
4.cgroup与IO
练习题
1.ionice调整进程io优先级,iotop观察;
2.cgroup控制io
七、主讲讲师:
中际赛威Linux培训讲师,中国高科技产业化研究会智能信息处理分会理事,多年嵌入式系统软硬件开发经验,资深研发工程师、项目经理。熟悉嵌入式系统软硬件设计的全过程,多年来始终专注于嵌入式Linux内核研究和设备驱动的开发,精通嵌入式Linux操作系统,尤其擅长Linux系统内核及设备驱动开发。作为资深PM,曾指导完成多个大型嵌入式项目的软硬件设计。长期活跃于Linux、tboot、Ceph等开源社区,为富士通、贝尔、富士康、德赛西威、飞利浦、南瑞、冠捷、英飞拓、ABB等知名企业提供嵌入式Linux企业培训和技术服务,深受企业和学员广泛好评。
八、收费标准:4500元/人,含资料、午餐、课时费、证书。
九、咨询联系:010-64113137


openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)