大家好,今天小编关注到一个比较有意思的话题,就是关于linux内核学习 知乎的问题,于是小编就整理了3个相关介绍Linux内核学习 知乎的解答,让我们一起看看吧。
linux内核编程书籍有那些比较经典?
学习内核不是件容易事,前面有很多前续课程要读。
1.C语言,推荐Theprogrammginclanguage被称为圣经的书,不过没有中文版,不过C语言不太难,而且读内核也不需要你对C有多深了解。学习到指针和结构体就够你用了。
2.数据结构,不懂这个想学是不可能的,推荐《数据结构》C语言版本。
3.操作系统,任何一个大学的教科书都可以。一定要看,虽然是纯理论。但不看这个,想看懂内核,那是不可能的。
4.微机原理,内核和底层相关,不知道微机原理是不行的。我学的时候书上是以INTEL8086为蓝本,非常简单。后来看内核时候,补充了80386以后出现的保护模式,非常复杂。但还是先看下老版的微机原理,先从简单的下手。
5.linux系统管理,推荐《linux系统管理手册》,被linux的作者推荐的系统管理书籍。 6,终于到内核了,我看的是《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内核的源码?
我觉得有时间的话是可以看看的
首先,题主是一名大三的学生,即将会面临找工作的问题,而且根据问题中提到的内容,我猜测可能选择的方向是WEB后端开发,那么在面试过程中对于深层次的问题是一定会被提及的,因为基础的大家都会,所以这时候都学习和了解是尤为重要的,至于是否要自己造轮子,这个对于你现在的情况,估计短时间内不会接触到。WEB开发对效率往往要求很高,需要在短时间内就要上线产品抢占市场,所以很少会有自己造轮子的时候,当然也不是永远都用不到
其次,相信很多已经参加工作的人都多多少少会有这种感觉:参加工作之后,学习的热情会不断的降低,工作时间越长,接触新知识越难,题主还是大三,而且还这么有探索精神,所以还是学学的好。
到此,以上就是小编对于linux内核学习 知乎的问题就介绍到这了,希望介绍关于linux内核学习 知乎的3点解答对大家有用。