大家好,今天小编关注到一个比较有意思的话题,就是关于怎么学习linux kernel的问题,于是小编就整理了3个相关介绍怎么学习linux kernel的解答,让我们一起看看吧。
为什么要学习Linux内核?
1 学习一些操作系统的理论知识,一些概念。比如:进程,内存管理,文件系统等等。
关于这一方面的书籍太多了,自己找一本就行了2 学习x86汇编,虽然linux用的是AT&T汇编,但二者只是格式不同而已。
而且学习x86汇编有助于了解x86系统结构。书籍推荐王爽的《汇编语言》 ,我学的时候用的不是这个,后面看到这本书,才觉得自己做了“苦功了”。
学完大部分汇编指令时,找些汇编程序读读,熟悉这些指令的用法。
不需要有写汇编程序的能力,能读就行了,当然会写更好3 赵炯的《Linux内核0.11完全注释》。
这个linux内核版本低,作者也讲得很详细。不过关于x86体系的那一部分,作者讲得很繁琐,这一部分一定要大体看懂,那后面章节的内容就没有多大的问题了。
我先把书通看了一遍,用了1个月的时间。
后来,再返回来一个一个研究,用了2个月。
之所以看这本书,是让自己对内核有个实质的感受,不仅仅只是理论上的东西。
4 毛德操的《linux内核情景分析》。linux内核版本2.4.0,这本书很厚,上下两册。
我通读一遍,用了2个月时间。
后来,再返回来一个一个研究,现在已用了2个月,正在研究中。。。。
就我个人觉得,linux内核最难的是内存管理,这2个月我就只大体搞清内存页面的周转,但搞清了这个,就会对内核的整体结构有个大致的了解,因为你已经清楚了用户进程和内核的其它部分是怎样使用内存页面的。
5 学习linux内核最需要的是坚持和思考。
这是一个很长的过程,也许你会发现学了linux内核,并不会给你带来什么,我现在就是这样觉得的,感觉自己什么都不会做,真希望有人能我一些建议!不过学习学习也是有好处的,比如看了赵炯的《Linux内核0.11完全注释》后,你再去看UCOS-II,会感觉那太容易了!也许学习linux内核会对将来的工作有所帮助吧!
linux kernel功能有哪些?
kernel 包含内核管理的核心代码,瞅这名就知道,这货是个重量级目录,所有的处理任务的程序,包括fork、exit、调度程序(sched.c)以及一些系统调用(sys.c)、信号处理(signal.c)、时间函数(time.c),还有中断异常处理、电源管理等等一系列调用关系错综复杂的函数。
怎样快速调试linux内核?有哪些需要注意的问题?
谢谢邀请,
这个问题就比较专业了,linux内核调试还是在调试内核驱动的时候用过,涉及的程度不是特别深,但是可以说下大致的思路,linux虽然贵为操作系统,但是归根到底还是一个程序,既然是程序就能用debug的方式去调试,只不过由于环境的差异,使用的方法和工具不尽相同,在linux下面常见的调试工具gdb,在windows上面更多的调试工具是界面化的,直接对应的中间变量的数值以及申请内存的地址都会直观的展示出来,在linux上主要是通过命令的方式查看,开始会觉得很不习惯,觉得很深奥,其实就是命令的行的使用也就是常见的几个命令。
回到正题linux内核调试用的kgdb,一种专门针对linux内核的调试工具,所谓的内核的调试,主要还是在嵌入式板卡上用的比较多,需要掌握一个概念交叉编译,这个是玩嵌入式的必备概念,通俗点讲,在主机电脑上将程序编译好,然后放在嵌入式板卡里面运行,在这就不一一举例如何去运行,这种教科书般的教程随手就能在网上获取,现在只是把一些关键技术步骤或者细节点归纳几条分享给大家:
1.生成的调试库以及驱动ko文件都会比较大,所以准备的磁盘空间至少20G左右
2.需要让内核支持支持kgdb调试功能,需要打开配置开关,正常的编译内核用make menuconfig,进入kernel hacking一项
3.在编译工程中注意文件的备份,一旦生成有问题,可以拿着之前的版本进行恢复
4.linux内核的调试其实就是vmlinux的调试,在这涉及到一个很关键的概念,远程调试,内核的调试一般***用串口连接的方式,现在linux应用远程调试用网络的居多
5.调试内核,很多命令使用还是基于gdb完成,gdb的命令还是要熟悉
简单呢归纳到这里,希望能帮到你。
到此,以上就是小编对于怎么学习linux kernel的问题就介绍到这了,希望介绍关于怎么学习linux kernel的3点解答对大家有用。