大家好,今天小编关注到一个比较有意思的话题,就是关于如何开始学习linux内核的问题,于是小编就整理了3个相关介绍如何开始学习Linux内核的解答,让我们一起看看吧。
我想学习x86下的linux内核,该怎么起步?
1.不防从引导程序(bootloader)开始,可以选择u-boot,熟悉u-boot启动代码,比如初始化内存、启动的汇编代码是如何跳转至C程序的、bootloader引导Linux有哪些要求(基于CPU架构不同而不同,比如ARM引导Linux可参考《Booting ARM Linux》)、启动后是如何传递参数给Linux内核的、;
2.bootloader将内核映像载入物理内存后,压缩的内核映像是如何自解压、head.S文件中对MMU操作、单/多核是如何跑起来的、start_kernel;***w.内核引导启动这个过程建议结合一些操作系统的理论知识一起熟悉,比如MMU页表的建立,若不熟悉对应CPU架构下的MMU,即使懂汇编但代码看起来可能比较吃力。
熟悉内核的引导过程,个人觉得将大学时学的操作系统理论知识与实践相结合起来了,好多上学时模糊的概念一下清晰了许多。
接下来再来说下内核编程:
1.make menuconfig等配置内核,构建及更新内核;
2.熟悉内核Makefile文件;
3.从Hello World开始学习模块编程,熟悉file_operations尝试编程简单的驱动;
4.掌握(熟悉使用、区别)内核提供竞争方面的API,spinlock/semaphore/rw_semaphore/completion/rw_lock/mutex,以及RCU等;
5.内核态下动态内存API,get_free_pages/kmalloc/vmalloc等(关于内存管理这块可暂时先了解接口的使用,后续有精力再去熟悉Linux内存管理,里面太多东西太复杂了,呵呵,我也是略知皮毛);
不懂汇编可以学Linux内核吗?
1.汇编占kernel的极少部分。看你希望学习哪一块了。本人认为不影响你学习kernel,即便是汇编也是嵌入到c语言的汇编,所以不用担心。
2.汇编并不是一个非常苦难的东西。只要你熟悉 计算机体系结构,程序的基本原理(函数堆栈,内存寻址),然后找一下官方的指令手册,一行一行慢慢看,慢慢就熟悉了!
未来想从事Linux后台开发,需要学习linux内核吗?像读内核源码。还是学好linux网络编程,C,算法。学习内核的意义有哪些呢?
后台不等于内核开发,但了解内核肯定有助于后台开发,内核集精华为大成,理解内核精髓,你就离大咖不远了。
程序逻辑抽取器支持c/c++/esqlc,数据库支持oracle/informix/mysql,让你轻松了解程序干了。
本站正在举办注解内核赢工具活动,你对linux kernel的理解可以传递给她人。
如果想从事 Linux后台开发,需要学习 linux内核。但,且听我说完。
学习linux网络编程,如果要学好,也是得学习Linux内核的。
C,算法这些是作为程序员的基础,现在几乎任何岗位面试都要求算法了。
学习内核的意义不在于做一个操作系统,而是遇到问题的时候明白怎么去解决。比如至少是得学习完APUE(Unix环境高级编程)之后,你可能才能感受到学习Linux内核的意义在哪,对于实践工作有何帮助。
但对于一个天天curd的程序员来说,你说学Linux内核干啥,***吗?
在此之前还是先把数据结构、计网、计组、操作系统这些基础学好。
到此,以上就是小编对于如何开始学习linux内核的问题就介绍到这了,希望介绍关于如何开始学习linux内核的3点解答对大家有用。