后台不等于内核开发,但了解内核肯定有助于后台开发,内核集精华为大成,理解内核精髓,你就离大咖不远了。如何学习内核及编程,我觉得可以从内核的引导启动开始,如果没有具备,即使看完linux内核源码,你也看不懂liux内核的精髓,makemenuconfig等配置内核,构建及更新内核;2.熟悉内核Makefile文件;3.从HelloWorld开始学习模块编程,熟悉file_operations尝试编程简单的驱动;4.掌握(熟悉使用、区别)内核提供竞争方面的API,spinlock/semaphore/rw_semaphore/completion/rw_lock/mutex,以及RCU等;5.内核态下动态内存API,get_free_pages/kmalloc/vmalloc等(关于内存管理这块可暂时先了解接口的使用,后续有精力再去熟悉Linux内存管理,里面太多东西太复杂了,呵呵,我也是略知皮毛);6.内核线程的创建,内核与用户进程的通信方式;7.网络方面可以先从Socket的实现慢慢熟悉,比如recv系统调用是如何经过传输层、网络层把链路层的数据包一层一层传回应用程序的;8.网络驱动的编写等;这里给大家推荐一个学习linux内核的地址https。
1、我想学习x86下的linux内核,该怎么起步?
如何学习内核及编程,我觉得可以从内核的引导启动开始:1.不防从引导程序(bootloader)开始,可以选择u-boot,熟悉u-boot启动代码,比如初始化内存、启动的汇编代码是如何跳转至C程序的、bootloader引导Linux有哪些要求(基于CPU架构不同而不同,比如ARM引导Linux可参考《BootingARMLinux》http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html)、启动后是如何传递参数给Linux内核的、;2.bootloader将内核映像载入物理内存后,压缩的内核映像是如何自解压、head.S文件中对MMU操作、单/多核是如何跑起来的、start_kernel;btw.内核引导启动这个过程建议结合一些操作系统的理论知识一起熟悉,比如MMU页表的建立,若不熟悉对应CPU架构下的MMU,即使懂汇编但代码看起来可能比较吃力。
熟悉内核的引导过程,个人觉得将大学时学的操作系统理论知识与实践相结合起来了,好多上学时模糊的概念一下清晰了许多,接下来再来说下内核编程:1.makemenuconfig等配置内核,构建及更新内核;2.熟悉内核Makefile文件;3.从HelloWorld开始学习模块编程,熟悉file_operations尝试编程简单的驱动;4.掌握(熟悉使用、区别)内核提供竞争方面的API,spinlock/semaphore/rw_semaphore/completion/rw_lock/mutex,以及RCU等;5.内核态下动态内存API,get_free_pages/kmalloc/vmalloc等(关于内存管理这块可暂时先了解接口的使用,后续有精力再去熟悉Linux内存管理,里面太多东西太复杂了,呵呵,我也是略知皮毛);6.内核线程的创建,内核与用户进程的通信方式;7.网络方面可以先从Socket的实现慢慢熟悉,比如recv系统调用是如何经过传输层、网络层把链路层的数据包一层一层传回应用程序的;8.网络驱动的编写等;这里给大家推荐一个学习linux内核的地址https://ke.qq.com/course/431590?flowToken=1013767Linux服务器开发的免费学习地址:https://ke.qq.com/course/417774?flowToken=1013300。
2、未来想从事Linux后台开发,需要学习linux内核吗?像读内核源码,还是学好linux网络编程,C,算法。学习内核的意义有哪些呢?
后台不等于内核开发,但了解内核肯定有助于后台开发,内核集精华为大成,理解内核精髓,你就离大咖不远了,程序逻辑抽取器支持c/c /esqlc,数据库支持oracle/informix/mysql,让你轻松了解程序干了什么。本站正在举办注解内核赢工具活动,你对linuxkernel的理解可以传递给她人,
3、需要多久才能看完linux内核源码?
linux0.11的内核源码,结合下面这本书,我花了大概一个寒假(1个半月),看了一遍。然而,现在的内核已经膨胀的不成样子了,以还不算最新的linux-4.9.229为例:整个内核源码一共约801M:驱动代码占了大概一半,大约407M:体系相关的代码大约164M:网路子系统相关的代码29M:文件系统相关的代码38M:linux内核核心代码大约7.7M:但是就这7.7M,其实你要完全看完看懂也不容易。
文章TAG: