大家好,今天小编关注到一个比较有意思的话题,就是关于怎样学习linux源码技术的问题,于是小编就整理了4个相关介绍怎样学习Linux源码技术的解答,让我们一起看看吧。
如何更深入地学习LINUX?
第一步 你可以尝试编译自己的linux系统。有一个发行版叫做 LFS,linux from scratch. 就是一个一步一步从源码最终编译成自己的linux的项目。编译过程中你可以按照你的喜好自己任意修改。
LFS官方网站上的手册有教程,可以学到很多linux知识,不过是全英文的。
第二 书店里有各种linux内核的教程,可以买来一读。
第三 没有任何方法比学习linux源码更好的方法了。 上kernel.org 或者用git clone linux内核源码,慢慢啃去吧。
Linux、Ubuntu怎样入门?
目前我也在学习linux,说说我的感悟吧。
在接触linux之前我学习的是单片机了解大概硬件的基本,同学说只是配置寄存器的话太low了去接触linux,学习linux时我是先接触命令的,当时学习的时候还是蛮有意思,就像传说中的黑客一样,说个题外的话当初看个电影叫什么“侏罗纪公园2“,那里面有个控制全局的电脑高手,我记得他好像输入ls这个命令就列出所有被龙破坏的地点,说来就有点觉得***。我学的命令是在网易上搜索“李明老师的课程”,这里不是打广告,这个课程不但是免费的,而且讲的非常详细,一节课大概接近1个小时甚至1h+,把基本原理都说的很清楚,这里做个配图:
当然这是以运维的方向来讲的,但是在linux的入门已经足够了,还有一点就是linux的版本有点低,不过不影响。里面还有服务器的配置以及shell脚本。
基本常用的命令用熟练后,可以进入下一步了,我学习的是嵌入式方向,所以我还得去学习计算机方面的知识,包括c++,c,数据结构,计算机网络,操作系统原理,汇编原理,这些知识在嵌入式方面是必学的,当我学完操作系统原理后,就对什么是线程,进程有了进一步的了解,华为再发布那个手机涡轮的强大功能就号称单线程胜多线程,到现在才理解是什么意思,哈哈这就是技术的魅力哈。
上面说的各个学科在工作方面的其实就是基础,进入工作后,若是做开发的,会进一步的接触到多线程,多进程的编程,以及网络编程,makefile等等。目前我处于学习课本的基础阶段,令我最深刻的感悟就是上面的基础不扎实,确实遇到很大的麻烦,每天都要回家看书。
若是学的差不多了,可以进一步的深入学习,那就是真的是没什么书可以看的了,想把技术学好就去看看linux内核的源代码地址就是***.kernel.org好像是这个地址,我没看过,听朋友说里面有很多很经典的结构,比如最基本的二叉树,平衡树都是常见的,最好还是把汇编学一学,了解操作系统的启动代码等等。
对于向大数据方面的研究,我不是做这一行的所以不清楚,但是是嵌入式的话,基本的路线就是这样,其实学到一定的境界了,可以去接触一下cpu是如何制作的相关的书籍,好像和vhdl语言有关系,这个时候就对芯片的架构有了整体的把握,进一步的解析操作系统的各个内核结构或许有更大的帮助,或许自己可以开发一个小的操作系统,有本书叫“30天自制操作系统”还可以,可以去学学。
Linux是如何记录进程***的?你能从C语言源代码层面分析下吗?
谢邀。
其实简单来说,进程无非就是处于运行期的[_a***_]及其相关***的总和。这里读者应该注意“相关***”一词,Linux 在内核中是如何记录进程的***的呢?
首先应该明白,Linux 内核大都是***用C语言编写的,因此要弄清楚内核如何记录进程***,只需要查看相关的C语言代码就可以了。事实上,Linux 内核是使用 task_struct 结构体描述进程的***的,它的C语言部分代码如下,请看:
task_struct 结构体很长,在我手中的 Linux 内核C语言源代码中,它占用了280行。当然了,这其中包含很多条件编译部分,在 32 位机器上,task_struct 大约要占用 1.7 KB 的内存空间,不过考虑到它可以管理完整的进程,1.7kB 其实并不算大了。
鉴于 task_struct 结构体过长,这里不可能将其成员一一介绍清楚。如果读者和我一样好奇,粗略的浏览 task_struct 结构体,应该能够发现一些比较令人熟悉的成员,例如:
通过C语言注释以及成员的变量名,能够看到 task_struct 结构体包含了文件系统,线程结构体,以及进程打开的文件等信息,这就与上一节文章的内容对应上了。其他成员在我之后的文章中会涉及到,这里暂不赘述。
在创建进程时,Linux 通过 slab 分配器分配 task_struct 结构,这样可以避免动态分配和释放带来的开销,提高内存的使用效率。
根据我手上的内核C语言源代码,Linux 中还有一个结构体 thread_info,它的其中一个成员 task 指针正好适合用于索引 task_struct 结构体,在X86_64平台上,thread_info 的相关C语言代码如下,请看:Linux 通常会在内核栈底或者栈顶保留 thread_info 结构,而内核栈通常大小都是可知的,因此每个进程都能方便的从自己的栈中找到 thread_info 结构,进而找到 task_struct 结构。
查找当前进程的 thread_info 结构,可以调用 current_thread_info() 函数,它的C语言代码如下,请看:
可见,current_thread_info() 函数其实就是通过进程栈计算的,因此它的实现与平台架构有关,上述C语言代码其实只是 arm 平台的实现方法,其他平台的实现方法,读者可自行查阅。
熟读Linux源码很久,对linux有自己的见解,能挣钱吗?
熟读LINUX源码哪几块?内核?设备驱动?文件系统?服务层?桌面系统?桌面应用?移植过Linux没?参与系统开发没?都中的话,在家呆着自然有公司找上门,给做应用的人开课没意义,给资深***丝开课没市场,你觉得呢?
题主的问题关键在于:
这世界上见解太多了,其中垃圾见解也很多,你的见解是否有价值?凭什么别人要重视你的见解,而不重视其他人的见解?
一个简单而可行的方法是:用实际产出来证明。如果你的产出质量高,别人自然会重视你的见解。产出的数量容易证明,只要github上开个号,往上推送代码就好了。
关键是:如何证明你的产出质量是过关的?方法也很简单:向Linux内核做贡献(这对于熟读Linux源码很久的人也是不难的)
既然对Linux有自己的见解,那就根据自己的见解来修改Linux好了。只要你的代码确实比Linux原有的好,把你的changeset发给Linux相关模块维护者,告诉维护者你的代码好在哪里,最终让你的代码在Linux内核里安家。
比如,对文件系统有自己的见解,那就设计一个更好的文件系统,并实现它;或者改进一个现有的文件系统,把你测试好的代码拿出来,在内核邮件列表中提出来,说说以前的文件系统差在哪里,你的改进又好在哪里,邀请其它开发者合并你的补丁进行测试。只要你的见解确实好,你的代码也过得了关,顺理成章的,你的代码就会合并到Linux主线内核里。
如果Linux内核中有不少你写的代码,放心,人在家中坐,猎头随时找。
到此,以上就是小编对于怎样学习linux源码技术的问题就介绍到这了,希望介绍关于怎样学习linux源码技术的4点解答对大家有用。