随想录(如何学习内核)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
很多学习linux kernel的同学都会陷入到一个误区当中。一方面,他们希望自己学习的东西大而全,恨不能理解全部的kernel代码;另外一方面,他们常常无法将学习到的知识应用到工作当中,这会导致一种感觉,好像学习了很多东西,但是基本上都没有什么用。
所以,这里我建议同学们可以从这几个角度去理解内核就可以了。既可以学习到知识,也可以在现实中发挥作用。
1)注重对kernel整体结构的把握
这主要包括kernel怎么启动,怎么加载驱动,怎么加载文件系统,怎么编译等等。
2)了解kernel内核层、中断的处理流程
这主要包括了kernel是如何处理系统调用和中断的。
3)了解kernel的编译和调试。
大多数同学喜欢看linux的书籍,却不怎么去调试,其实用qemu仿真学习是最好的学习方法,没有之一。
4)了解vmlinux.txt
了解vmlinux.txt,即kernel dump出来的文件,这是学习汇编最好的方法,没有之一。
5)了解arch目录下某一个体系结构的代码
现在的代码分工非常严格,比如kernel支持很多的cpu,每一个cpu又可以有很多的soc,每一个soc又可以有很多的platform。一定要了解一款。
6)了解kernel驱动代码
大部分kernel开发的同学都是以驱动开发为主,所以platform device/ platform driver/bus一定要好好掌握。
7)signal机制
signal机制是unix/linux os的重要特性,一定要好好掌握。
8)实践比理论更重要
看太多的书,不如自己实践一下。代码十行不如手写一行,手写十行不如汇编一行,说的就是这个基本道理。
希望大家都能找到适合自己的kernel学习方法。:-)
随想录(如何学习内核)相关推荐
- 随想录(学习wrk的代码)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 早几年,有一份差不多200m大小的文件在网上疯传,这份文件不是别的,正是windows的ker ...
- 手机安卓学习 内核开发
官网开源代码 Documentation - MiCode/Xiaomi_Kernel_OpenSource - Sourcegraph Xiaomi 11T Pro GitHub - MiCod ...
- 随想录(学习《许式伟的架构课》)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 市面上关于软件架构的课程大概有这么几种, 1.设计模式类,比如<设计模式>.< ...
- 随想录(学习nxp rt1052 soc)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在国内市场上,stm32是谜一样的存在.工控领域,除了51单片机,大概就是stm32的应用最广. ...
- 随想录(学习消费类soc芯片)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 要说起消费类的soc,国内做的比较好的企业还是有一些的,比如瑞芯微.全志.新岸线等等.目前,这些 ...
- 随想录(学习使用virtualbox软件)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 就我个人认为,虚拟软件是一个伟大的发明.无论是学习.应用方面,虚拟软件为这个社会创造了巨大的价 ...
- 随想录(学习英文的好处)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 我曾经和我的外甥女说,千万不要把英文丢了.因为不管你承认不承认,如果出国的话,相互沟通的主要工 ...
- go语言学习--内核态和用户态(协程)
go中的一个特点就是引入了相比于线程更加轻量级的协程(用户态的线程),那么什么是用户态和内核态呢? 一.什么是用户态和内核态 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核 ...
- 内核函数输出怎么看到_谈谈如何学习Linux内核
学习内核的好处很多,在学习过程中不仅可以夯实大量理论基础,还可以学习到很多编码惯用法,提升学习能力和分析能力. 一.确立高度,明确目标 高度决定视角,视角决定行动 在学习内核过程中最容易犯的错误,也是 ...
最新文章
- redmine的知识库插件-Redmine Knowledgebase plugin,程序员们的知识需要管理
- php学习笔记之static的问题
- 文献记录(part75)--基于最大平均熵率的大数据关联聚类算法
- IPM: Technical model of IP right scope on Contract Item level
- 收集一些常用的前端知识
- 统一配置中心的设计方案
- 【NOIP2015】D2-T1跳石头,二分答案
- 怎么python安装mysql库_python在windows上怎么安装mysql数据库
- 第2章 系统的分层结构
- Web前端-HTML基础
- 经典的同态滤波算法的优化及其应用参数配置
- M语言中的操作符说明:大括号{}-列List,方括号[]-记录Record
- 小程序之100推荐:901~1000
- java 扁平化_java 扁平化输出json所有节点key/value
- 在光伏并网柜保护监测领域安科瑞给出的解决方案
- oracle stdevp函数,SQL Server和Oracle的常用函数对比
- php中文搜索工具,Laravel 下 TNTSearch+jieba-PHP 实现中文全文搜索
- 程鑫峰:3.1余威未散鲍威尔再度归来,伦敦金、长江金业行情分析
- Smart3D系列教程6之 《案例实战演练3——倾斜数据正射影像及DSM的生产》
- Fortran中输出Tecplot格式
热门文章
- 想要更好的云基础设施管理!你检查IT工具集了吗?
- 【DB】部分MySQL操作记录
- ADF12C+GLASSFISH4.1配置数据源
- 《编写可测试的JavaScript代码》——1.3 卓越的应用程序代码
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)【转】
- TYVJ P1073 加分二叉树 Label:区间dp
- CCNP实验4-2:配置多区域和NBMA OSPF
- 建立网站的全套流程与详细解释(转载)
- iphone使用linux命令apt-get也没有问题
- 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):