查看: 9453|回复: 42

《Linux内核探秘》教你高效利用Linux内核,带你一起走进Linux的精彩世界!

  [复制链接]
新浪微博达人勋 仙豆  实名认证
论坛徽章:
1386
EBS财务徽章
日期:2013-11-03 10:10:32Oracle研习者初级
日期:2012-08-21 00:27:18R研习者初级
日期:2012-09-17 19:50:38Hadoop研习者初级
日期:2012-09-28 23:48:40spss初级
日期:2012-10-11 16:17:06Oracle研习者初级
日期:2012-10-18 10:33:23SAS研习者初级
日期:2012-11-18 23:07:49Hadoop研习者初级
日期:2012-11-18 23:09:43Oracle研习者初级
日期:2012-11-26 11:09:48Oracle研习者初级
日期:2012-12-06 14:23:22Hadoop研习者初级
日期:2013-10-21 22:39:48Oracle研习者初级
日期:2012-12-06 14:23:48
发表于 2014-8-6 16:02 | 显示全部楼层 |阅读模式

算法 基础 架构 Linux 内核

课程简介:
本课程的内容很简单,分析透彻一个简单的文件系统,分析透彻一个设备驱动,
课后检验和作业也简单,学习者独立写一个简单文件系统,独立写一个设备驱动。
如果完成课程,达到课后目标,相信我,你已经超过了国内主流公司绝大多数人的内核水准。

老师致学习者的话:
我认为,计算机技术层面可以分为系统和架构、语言和编译、OS。而系统内核无疑是其中最有难度,学习路径最陡峭的一部分。各位既然选择业余时间来学习这门艰深的课程,想必对自己有所期许,也有投入的计划。诚实的说,本课程确实不是容易通过的,但对有志向的各位来说,如果很容易通过,那么别人也会很容易。既然大家都容易得到,那么价值就大打折扣了。由此有志于此的学习者需要做好挑战的准备。

老师只是课程的引导者,而非代替学习者实践和思考的人。学习者可以利用网络搜索和自行发现答案,我想这一定可以大大提升学习者的信心。


本课程不需要太多内核方面的知识。毕竟这是一门从基础开始的课程。基本的c语言编程知识还是需要的,起码要编译过内核,能配置内核编译的选项。


本课程的内容设置和典型的教科书不同,也和其它类似的教程不同,课程设置完全反应了老师的思考和对国内工业界现实的理解。将OS内核分为基础层面和应用层面是作者的一个创造,也是导引学习者快速入门和学以致用的关键。本课程包括对OS内存和任务调度的应用,但并不包括这些的原理。因为老师并不认为知识的堆彻就可以加深理解和思考,学习—应用—创新—再学习是作者理解的较好路径。如果能学以致用,就已经达到很深的程度。毕竟这只是起步阶段,太多的知识只会打击初学者的信心。


虽然课程有大量的学习内容,但课程的目的不是为了掌握某些知识,而是为了了解学习的方法,再进一步了解思考的方式。我一直认为,独立学习是重要的,而独立思考能力是最重要的。所以课程作业可能和课程的内容并没关系,甚至是课程里面完全没有的内容。没问题,如果深入思考,作业不会超过初学者可以达到的水准,而找到答案的学习者,会发现已经找到了自己的学习之路。

课程大纲:
第1前言(第一阶段:基础知识)
国内内核应用的现状
各大公司内核应用情况的介绍(百度、阿里、腾讯、IBM、intel、华为等)
国内普遍的内核应用模式和问题

内核在当前的主流应用
云计算和虚拟化中内核的应用
设备开发中驱动的开发
分布式系统应用:分布式文件系统,

如何学习内核
带着使用的目的学习内核,边学边用,学以致用
阅读和修改活着的代码,而非读书籍
以培养阅读代码的能力为主,而非具体知识的学习

内核基础层的范畴
内核基础层和应用层的划分逻辑
从代码量和应用模式理解应用层和基础层

学习方法和内容
切勿贪大求全,聚焦关键应用领域
奠定基础,循序渐进
兴趣是第一驱动力
本课程提出的学习方法和内容

第2内核基础层数据结构(第一阶段:基础知识)
内核数据结构
双向链表
Hash链表
单向链表
红黑树
Radix树

内核同步机制
自旋锁
内核信号量
自旋锁和内核信号量的区别
原子变量
completion
每CPU变量
RCU无锁机制

第3内核基础层提供的服务
内核中使用内存
Linux内存管理基础-伙伴系统和slab
从伙伴系统申请内存
从slab系统申请内存

内核中的任务调度
内核中进程调度的目的和应用范围
从例子程序学习进程调度
内核进程调度的几种方式

软中断和tasklet
软中断和中断的关系
内核缺省定义的软中断—BLOCK_SOFTIRQ、NET_TX_SOFTIRQ、NET_RX_SOFTIRQ
takslet

工作队列
可以被调度的工作队列
创建自己的工作队列

第4(第二阶段:文件系统)
文件系统的基本概念
虚拟文件系统VFS
超级块
目录项dentry
索引节点inode
文件—和进程有关的概念

文件系统的架构
超级块在文件系统中的基础作用
Dentry—将文件组织为树状
Inode—文件的代表
文件—和进程有关的逻辑对象

从代码层次理解文件系统
写一个最简单文件系统
登记文件系统
文件系统申请自身的数据结构
文件系统创建目录和文件

第5文件的打开过程

第6sysfs文件系统(第二阶段:文件系统)
Sysfs—为设备服务的特殊文件系统
Sysfs的作用以及sysfs和dev目录、proc文件系统的区别
Sysfs文件系统的初始化
目录文件的创建
普通文件的创建

文件的打开过程
和普通文件打开过程的衔接
为文件创建inode结构
为dentry结构绑定属性
在文件中保存私有数据

文件的读写
读文件的过程分析
写文件的过程分析

为对象属性服务的Kobject结构
Kobject概念和作用
利用koject理解总线的注册

第7文件系统的读写(第二阶段:文件系统)
文件系统的page cache机制
buffer I/O和direct I/O
块缓存和page cache
Page cache的管理
Page cache的状态

文件预读
预读的作用
预读机制的架构和算法

文件锁概念和应用
建议锁和强制锁
读锁和写锁

文件读过程代码分析
硬盘操作模式和文件读写的关系
文件同步操作和异步操作
页状态和读操作的关系
读操作的返回

文件写过程代码分析

第8通用块层和scsi层(第二阶段:文件系统)
块设备队列
Scsi块设备队列
电梯算法和电梯对象
硬盘HBA抽象层

IO的顺序控制

IO调度算法
IO调度算法的架构
Noop调度算法
Deadline调度算法

IO的处理过程
IO插入队列的过程
IO出队列的过程
IO返回路径

第9一个真实的文件系统ext2(第二阶段)
Ext2文件系统的布局
Ext2文件系统的目录树
Ext2文件系统的内容管理
Ext2文件系统的读写

第10设备概念和架构(第三阶段)
设备概念和架构
设备的端口和设备内存
设备中断和DMA
总线对设备的扫描
设备驱动管理

理解PCI总线
Pci设备工作原理
Pci总线域
Pci资源管理
Pci配置空间设置和读取

PCI设备的扫描和发现
扫描系统0号总线
扫描总线上的pci设备
扫描多功能设备
扫描single设备
设备信息和属性

第11字符设备和input
文件系统和设备的关系
代表设备的文件
字符设备和字符设备的缺省处理函数

Input设备注册
主从设备号
设备区间的登记
注册字符设备
打开input设备

Input设备的架构分析
注册input设备的驱动
设备和驱动的匹配方式
注册input设备

第12platform总线
从驱动发现设备的过程
Q40kbd键盘驱动的初始化
注册platform驱动
将驱动注册到总线
驱动加载
遍历总线上的设备

从设备找到驱动的过程
注册设备和总线
注册设备的资源信息
添加设备对象

第13块设备
块设备的架构
块设备、通用磁盘对象和队列
块设备和通用磁盘对象的绑定
块设备的队列和应用

块设备的创建和使用过程分析
块设备例子-nbd驱动初始化
为通用磁盘对象创建队列
通用磁盘对象加入系统

块设备文件系统
块设备文件系统的设计思路
块设备文件系统的初始化

块设备打开的过程
块设备对象
块设备的打开过程

授课时间:
预计课程将于12月3日开课,课程持续时间15周

软件版本:
2.6.18

课程环境:
可运行linux和可编译内核的版本即可,内核版本可以从file:///C:\Users\gaoyang\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngwww.kernel.org下载

授课讲师:
高剑林,资深Linux内核专家、存储系统专家、嵌入式系统专家。先后就职于华为、UT斯达康、赛门铁克等公司,从事路由器设备研发、软件开发和存储系统研究相关的工作10余年,经验非常丰富,著有《Linux内核探秘:深入解析文件系统和设备驱动的架构与设计 》一书。


新颖的课程收费形式:“逆向收费”约等于免费学习,仅收取100元固定收费+300元暂存学费,学习圆满则全额奖励返还给学员!

特别说明如下:
本门课程本来打算完全免费,某位大神曾经说过成功就是正确的方向再加上适度的压力。考虑到讲师本身要付出巨大的劳动,为了防止一些朋友在学习途中半途而废,浪费了讲师的付出,为此我们计划模仿某些健身课程,使用逆向收费的方法。
报名时每位报名者收取400元,其中100元为固定 收费,另外300是暂存学费,即如果学员能完成全部课程要求,包括完成全部的书面和互动作业,则300元全款退回,优秀的学员还可以获得礼品 奖励。如果学员未能坚持到完全所有的学习计划任务,则会被扣款。期望这种方式可以转化为大家强烈的学习愿望和驱动力!

课程授课方式:
1 学习方式:老师发布教学资料、教材,幻灯片和视频,学员通过网络下载学习。同时通过论坛互动中老师对学员进行指导及学员之间相互交流。
2 学习作业:老师每周布置书面及互动作业,学员需按时按质完成作业。
3 老师辅导:根据作业批改中发现的问题,针对性给予辅导,帮助大家掌握知识。
4 结业测验:通过测验,完成学业。

对此课程还有疑问,那么请 点击进入 FAQ,您的问题将基本得到解答
全国统一咨询热线 4008-010-006

课程现开始接受报名,报名方式
网上报名 请点击Linux内核探秘
咨询Email :edu01@dataguru.cnedu02@dataguru.cn
课程入门讨论咨询群:706821899(群内有培训公开课视频供大家免费观看)
咨询QQ: 2222010006 (上班时间在线)

术热点、 行业资讯,培训课程信息,尽在炼数成金官方微信,低成本传递高端知识!技术成就梦想!欢迎关注!
打开微信,使用扫一扫功能,即刻关注炼数成金官方微信账户,不容错过的精彩,期待您的体验!!!
回复

使用道具 举报

论坛徽章:
20
Oracle研习者初级
日期:2013-05-09 22:19:02金融徽章
日期:2017-07-11 14:28:40R研习者中级
日期:2017-07-12 17:44:11数据陷阱解读徽章
日期:2017-07-27 17:24:20架构徽章
日期:2017-11-30 16:01:31高并发架构徽章
日期:2017-12-07 16:06:15架构徽章
日期:2018-01-11 17:24:29Node.js徽章
日期:2018-05-17 15:59:22股票徽章
日期:2018-11-22 15:36:24架构徽章
日期:2015-04-29 17:09:41矩阵计算徽章
日期:2015-04-10 15:03:57Oracle研习者初级
日期:2013-08-08 23:03:51
发表于 2014-8-7 21:55 | 显示全部楼层
对课程有兴趣,但是c语言都是以前大学学习的,内核也没编译过,能报这个课程么?课程期间可不可以补这些基础?
回复 支持 反对

使用道具 举报

新浪微博达人勋 hq333  未实名认证
论坛徽章:
25
Hadoop研习者初级
日期:2014-09-19 14:11:00Java徽章
日期:2016-09-01 10:00:53机器学习徽章
日期:2016-12-08 15:50:26神经网络徽章
日期:2017-01-06 10:49:08机器学习徽章
日期:2017-03-30 17:23:20python徽章
日期:2017-05-18 16:18:18python徽章
日期:2017-06-01 17:07:17人工智能徽章
日期:2017-07-11 14:26:36Go徽章
日期:2017-12-25 17:16:30区块链徽章
日期:2017-12-25 17:32:20CUDA徽章
日期:2017-12-25 17:37:49Mycat徽章
日期:2016-06-08 14:19:31
发表于 2014-8-8 00:52 | 显示全部楼层
课程不错,有深度,学习了hadoop, 大数据方面,不知还有无时间学这门。先顶一下。
回复 支持 反对

使用道具 举报

新浪微博达人勋 hq333  未实名认证
论坛徽章:
25
Hadoop研习者初级
日期:2014-09-19 14:11:00Java徽章
日期:2016-09-01 10:00:53机器学习徽章
日期:2016-12-08 15:50:26神经网络徽章
日期:2017-01-06 10:49:08机器学习徽章
日期:2017-03-30 17:23:20python徽章
日期:2017-05-18 16:18:18python徽章
日期:2017-06-01 17:07:17人工智能徽章
日期:2017-07-11 14:26:36Go徽章
日期:2017-12-25 17:16:30区块链徽章
日期:2017-12-25 17:32:20CUDA徽章
日期:2017-12-25 17:37:49Mycat徽章
日期:2016-06-08 14:19:31
发表于 2014-8-8 00:55 | 显示全部楼层
这么好的课程,现在需求也大,是否这帖子没置顶,所以来讨论的人少?还是大家知难而退?
系统内核无疑是其中最有难度,……学习这门艰深的课程,……。诚实的说,本课程确实不是容易通过的,但对有志向的各位来说,如果很容易通过,那么别人也会很容易。既然大家都容易得到,那么价值就大打折扣了。由此有志于此的学习者需要做好挑战的准备。
回复 支持 反对

使用道具 举报

论坛徽章:
9
Oracle研习者初级
日期:2013-05-06 14:25:50Oracle研习者初级
日期:2014-09-19 14:07:02Oracle研习者中级
日期:2014-09-19 14:31:38mysql徽章
日期:2014-11-06 15:13:52linux徽章
日期:2014-11-06 15:15:45Java徽章
日期:2015-01-14 15:22:02电商分布式系统徽章
日期:2015-04-15 15:28:25架构徽章
日期:2015-04-29 17:09:41shell徽章
日期:2015-04-30 11:42:33
发表于 2014-8-8 10:32 | 显示全部楼层
好啊,内核研究
回复 支持 反对

使用道具 举报

论坛徽章:
0
发表于 2014-8-8 13:01 | 显示全部楼层
支持
回复 支持 反对

使用道具 举报

论坛徽章:
1
Hadoop研习者初级
日期:2015-01-14 15:17:46
发表于 2014-8-19 15:55 | 显示全部楼层
支持,但已报了hadoop学习,等以后有时间再来学
回复 支持 反对

使用道具 举报

论坛徽章:
0
发表于 2014-8-22 09:10 | 显示全部楼层
不错
回复 支持 反对

使用道具 举报

论坛徽章:
7
python徽章
日期:2013-05-09 13:21:16Hadoop研习者初级
日期:2013-08-25 13:45:19Oracle研习者高级
日期:2013-08-25 14:24:54R研习者中级
日期:2014-09-19 14:21:54树莓派
日期:2014-10-08 17:38:40scala徽章
日期:2014-11-06 14:56:26mysql徽章
日期:2014-11-06 15:13:24
发表于 2014-8-22 16:25 | 显示全部楼层
期待
回复 支持 反对

使用道具 举报

新浪微博达人勋 zyq2006  实名认证
论坛徽章:
44
架构徽章
日期:2018-12-13 15:56:34scala徽章
日期:2016-06-23 11:18:09抽样调查徽章
日期:2016-05-12 11:57:26DB2徽章
日期:2016-04-07 10:58:05Oracle研习者中级
日期:2016-03-31 15:31:28算法导论徽章
日期:2016-03-16 10:46:20技术内幕徽章
日期:2016-03-03 14:48:52R研习者高级
日期:2015-12-30 11:50:24matlab徽章
日期:2015-12-10 16:02:27STATA徽章
日期:2015-10-29 15:15:02数据展示徽章
日期:2016-06-23 11:26:00统计徽章
日期:2016-07-14 11:12:19
发表于 2014-8-23 14:02 | 显示全部楼层
建议加上编译内核一课
有c基础的多,真正编译过内核的估计会少很多
作业能有部分用于巩固课上知识,部分选作的用于培养学习思考能力就更好了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-12-16 06:26 , Processed in 0.191207 second(s), 70 queries .