免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12791 | 回复: 91
打印 上一主题 下一主题

《linux内核设计高级技术研修班》上课!咨询电话:400-650-8390 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-31 15:39 |只看该作者 |倒序浏览
本帖最后由 AKAE007 于 2012-01-10 17:04 编辑

                           Linux 内核设计高级技术研修班      400-650-8390  

*课程背景:
      Linux内核是对操作系统最完美的诠释,在计算机专业教学以及相关行业工程开发中,都是必修的课程。然而它代码量巨大,代码更新速度很快,这使得工程人员及内核爱好者阅读相关书籍的同时,落后于最新的代码。Linux内核构架极其复杂,使得研究学习过程相对其他科目更为艰难,无数人在它面前不得不退缩。一个好的linux开发工程师,对于内核的理解无疑会大大提升自身工作和学习的能力。本课程适应于嵌入式/工控/手机研发/存储开发行业linux工程师,内核开发爱好者,学习linux的在校学生等。

*质量保证:
•培训合格学员可享受免费推荐就业机会。
•培训过程中如有部分内容理解不透或消化不好,可免费在下期班中重听;
•培训结束后免费提供一个月的技术支持,充分保证培训后出效果。

*基础要求:
1.具有一定的Linux使用基础和一定的核心代码阅读经验
2.熟练掌握C语言

*教    材:
(1)《 Linux 内核设计高级技术研修班讲义》

*学   费 :
   ¥2800

*学   时 :
     4天(24学时)

      为保证教学质量,本班为小班授课,15人为满,报满15人即停止报名或顺延下一期,如您决定上课请及时填写报名表并办理报名手续(报名时需携带本人身份证复印件1张及本人一寸照片3张)。



* 课程内容:
第一天
1 基础知识
  1.1 Linux内核的整体架构
  1.2 Linux内核版本演进规则
      1.2.1开发版本
      1.2.2稳定版本
  1.3 Linux内核源码管理工具(git)
      1.3.1Git环境配置
      1.3.2Clone Linux内核库
      1.3.3Git 常用命令介绍
      1.3.4建立自己的补丁文件(patch)
  1.4 参与Linux内核开发
      1.4.1 Linux内核开发相关社区
      1.4.2主要邮件列表
      1.4.3各模块的维护者(Maintainer)
      1.4.4提交我的patch
      1.4.5代码Review过程中的沟通技巧
2 内存
  2.1 Linux内核中的地址类型
      2.1.1 物理地址
      2.1.2 总线地址
      2.1.3 逻辑地址
      2.1.4 虚拟地址
  2.2 内存管理单元(MMU)对虚拟地址的支持
      2.2.1 页表的结构(PGD/PMD/PTE)
      2.2.2 页面属性与访问权限的定义
      2.2.3 Arm启动过程中第一张页表的建立
      2.2.4 Arm体系结构中如何保护内核地址空间不受用户程序访问
  2.3 Linux内核地址空间的划分
      2.3.1 Low Memory与 High Memory
          2.3.1.1 低端内存与高端内存的划分
          2.3.1.2三层内存管理结构 node/zone/page
          2.3.1.3 bootmem初始化及管理策略
      2.3.2 模块加载地址空间
          2.3.2.1 模块的本质
          2.3.2.2 模块加载时地址空间如何分配
          2.3.2.3 模块引用内核资源的过程
      2.3.3 线性地址空间
          2.3.3.1 内核Text/Data/BSS段的映射
          2.3.3.2 可分配页的管理-伙伴算法
          2.3.3.3 Kmalloc与Slab分配器
      2.3.4 Vmalloc地址空间
          2.3.4.1 非线性映射的内存分配
          2.3.4.2 ioremap的本质
          2.3.4.3 Vmalloc的结果能否在不同任务间共享
      2.3.5 DMA映射地址空间
          2.3.5.1 Cache对DMA影响
          2.3.5.2 什么情况下需要分配DMA空间
          2.3.5.3 与Kmlloc和Vmalloc的比较
      2.3.6 I/O固定映射空间
          2.3.6.1 哪些体系结构需要I/O固定映射
          2.3.6.2 I/O固定映射过程分析
      2.3.7 向量映射空间
          2.3.7.1 中断异常的物理入口地址
          2.3.7.2 向量的映射过程
          2.3.7.3 如何分布处理函数
      2.3.8 高端内存的映射(Kmap与Kmap atomic)
  2.4 Linux进程用户地址空间
      2.4.1 零至PAGE_OFFSET地址空间的划分
          2.4.1.1用户Text段之前的保留空间
          2.4.1.2 用户堆与栈
          2.4.1.3 malloc与mmap
          2.4.1.4 堆的增长与brk的本质
          2.4.1.5 动态运行库驻留空间
      2.4.2 进程用户空间的管理
          2.4.2.1 进程控制块与mm_struct结构体
          2.4.2.2 进程合法地址空间与非法地址空间
          2.4.2.3 合法地址空间链表(vm_area_struct list)
  2.5 缓存
      2.5.1 块设备的页面缓冲page cache
      2.5.2 文件系统的缓冲swap机制

第二天
3 进程与线程
  3.1进程的概念
      3.1.1 内核与用户空间看进程
      3.1.2 一个进程的资源
      3.1.3 struct task_struct
      3.1.4 进程的核态堆栈与用户态堆栈
      3.1.5 current是什么,如何获得
  3.2进程的生命周期
      3.2.1 系统建立的零号进程和一号进程
      3.2.2 进程的创建
          3.2.2.1 fork/clone的种类与实质
          3.2.2.2 重要的函数copy_process
          3.2.2.3 COW机制
      3.2.3 进程创建后的返回
      3.2.4 进程的消亡
          3.2.4.1 do_exit释放部分资源
          3.2.4.2 父进程对核态资源的释放
  3.3进程的调度
      3.3.1 进程的状态
      3.3.2 内核中的几种调度策略
      3.3.3 实时进程与普通进程
      3.3.4 O(1)调度器
          3.3.4.1 runqueue与expired queue
          3.3.4.2 prio与static_prio
          3.3.4.3 load balance机制
      3.3.5 CFS调度器
          3.3.5.1 CFS的sched class
          3.3.5.2 runqueue
          3.3.5.3 与O(1)相对应的几项改进
      3.3.6 如何改变进程的优先级
      3.3.7 如何绑定进程的调度算法
  3.4用户进程与线程
      3.4.1 用户进程的执行加载过程
      3.4.2 用户线程库
4时间与定时器
  4.1 linux内核中时间基准
      4.1.1 实时时间基准
      4.1.2 系统时间基准
  4.2 timekeeping
      4.2.1 时钟源clocksource
      4.2.2 系统计时的核心xtime
      4.2.3 do_gettimeofday()/do_settimeofday()
      4.2.4 如何进行时间校准
  4.3 generic time框架
      4.3.1 clockevent设备
      4.3.2 oneshot与periodic
      4.3.3 clockevent下如何实现tick(LRT)
      4.3.4 非clockevent下如何实现tick
      4.3.5 jiffies_64 update
  4.4 定时器
      4.4.1 低精度时钟定时器
      4.4.2 高精度时钟定时器
      4.4.3 真的可以实现纳秒吗
  4.5 dynamic tick
      4.5.1 由tick向dyna tick的转变
      4.5.2 idle task与dyna tick

第三天
5 中断
  5.1中断管理的硬件支持
      5.1.1 体系结构级(CPU级)
      5.1.2 中断控制器级(VIC级)
      5.1.3 设备级
  5.2 Linux内核中体系结构相关的中断管理
      5.2.1 中断向量表
      5.2.2 中断入口及现场保存
      5.2.3 现场恢复及中断返回
      5.2.4 local_irq_enable/disable
  5.3 Linux内核中平台相关的中断管理
      5.3.1 中断控制器的初始化
      5.3.2 irq_chip与中断注册
      5.3.3 级联中断的管理
      5.3.4 如何实现level与edge trigger的中断
      5.3.5 如何实现唤醒中断
  5.4 Linux内核中设备级的中断管理
      5.4.1 请求中断
      5.4.2 中断处理函数的实现
      5.4.3 如何实现中断共享
  5.5 Linux内核中体系无关的中断管理
      5.5.1 关键结构体irq_desc与irq_action
      5.5.2 irq_enter
      5.5.3 generic_handle_irq
      5.5.4 irq_exit与softirq
      5.5.5 中断处理过程中的开中断与关中断
  5.6 softirq
      5.6.1 系统预留的softirq
      5.6.2 如何trigger一个softirq
      5.6.3 softirq的运行时机
      5.6.4 tasklet与rcu
      5.6.5 如何实现自己的softirq
6异常与系统调用
  6.1 异常的基本概念
      6.1.1 系统中能够处理异常的种类
      6.1.2 异常与中断的关系
      6.1.3 异常向量表
  6.2 页面相关异常
      6.2.1 缺页异常的处理
      6.2.2 访问权限异常的处理
  6.3 无效指令异常
      6.3.1调试器stub的实现
      6.3.2 浮点指令的模拟
  6.4 对齐异常的处理
  6.5 系统调用
      6.5.1 系统调用与异常的区别
      6.5.2 系统调用号,参数与返回值
      6.5.3 系统调用与用户library
第四天
7 内核编程用到的若干互持同步机制
  7.1原子操作
      7.1.1原子操作的意义
      7.1.2体系结构相关的实现
          7.1.2.1 armv6以前的实现
          7.1.2.2 armv6以后的实现
          7.1.2.3 mips32如何实现原子操作
      7.1.3如何正确使用原子操作
  7.2 自旋锁(spinlock)
      7.2.1 spinlock的特点与意义
      7.2.2 SMP下的spinlock
      7.2.3 UP下的spinlock
      7.2.4体系结构相关的实现      
          7.2.4.1 armv6以后的实现
          7.2.4.2 mips32下的实现
      7.2.5各种spinlock的变体锁
      7.2.6如何正确使用spinlock
  7.3 信号量(semaphore)
      7.3.1 semaphore的特点与意义
      7.3.2 semaphore的实现本质
      7.3.3 semaphore的变体锁
      7.3.4如何正确使用semaphore
  7.4 RCU
      7.4.1 RCU的特点与意义
      7.4.2对reader的保护过程
      7.4.3对writer的保护过程
      7.4.4 RCU softirq
      7.4.5如何正确使用RCU
8 信号(signal)
  8.1信号的本质
      8.1.1用户空间看信号
      8.1.2从内核看信号
  8.2信号的类型
      8.2.1 Linux兼容的几大标准
      8.2.2基本信号
      8.2.3实时信号
  8.3信号的处理过程
      8.3.1捕捉,屏蔽,忽略
      8.3.2信号的设置及其本质
      8.3.3信号的调用时机
      8.3.4核心如何调用用户定义的信号处理函数
      8.3.5被打断的系统调用如何处理信号
      8.3.6信号处理函数如何返回
  8.4信号的使用
      8.4.1 init进程为何不能被杀死
      8.4.2两个不能被屏蔽的信号
      8.4.3信号相关的系统调用
9 电源管理
  9.1 嵌入式应用中常用得几种节电方案
      9.1.1 嵌入式应用的特点
      9.1.2 电池供电与节电需求
  9.2 suspend/resume
      9.2.1 suspend/resume的执行框架
      9.2.2 体系结构层的挂起与唤醒
      9.2.3 设备驱动的挂起与唤醒
  9.3 cpuidle
      9.3.1 cpuidle的几个级别
      9.3.2 体系结构层如何实现cpuidle
  9.4 cpufreq
      9.4.1 频率和电压的调节
      9.4.2 体系结构层如何实现cpufreq
      9.4.3 如何选择governor
  9.5 Android系统电源管理介绍
      9.5.1 wakelock 机制
      9.5.2 earlysuspend机制
  9.6 调度器对PM的支持
      9.6.1 进程迁移
      9.6.2 多cpu负载均衡
      9.6.3 Numa体系Cache均衡__

论坛徽章:
0
2 [报告]
发表于 2011-04-01 12:20 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2011-04-01 13:36 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2011-04-03 19:15 |只看该作者
这不都是《Linux内核设计与实现》上的目录吗?? 四天就能学完?? 那Kernel也太简单了吧……

论坛徽章:
0
5 [报告]
发表于 2011-04-06 12:12 |只看该作者
注意基础要求:
  1.具有一定的Linux使用基础和一定的核心代码阅读经验
  2.熟练掌握C语言

论坛徽章:
0
6 [报告]
发表于 2011-04-07 11:14 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2011-04-12 11:15 |只看该作者

论坛徽章:
0
8 [报告]
发表于 2011-04-15 11:28 |只看该作者
{:2_168:}

论坛徽章:
0
9 [报告]
发表于 2011-04-15 11:29 |只看该作者
{:2_178:}

论坛徽章:
0
10 [报告]
发表于 2011-04-15 11:30 |只看该作者
{:2_171:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP