linux 统计_Linux 内核版本 5.11rc4 代码分布简要统计

大家或许会比较想了解,Linux 内核代码里面,有这么多文件夹,各自占了多大空间,大概的代码分布是怎样的呢? 通过这篇文章,我们就可以找到相应的答案。

在写这个文章的时候, Linux 内核最新的版本是2021-01-18 发布的 5.11-rc4。我们就拿这个最新的版本作为例子做分析。

把内核下载下来发现,单linux-5.11-rc4.tar.gz 压缩包就有 181M 这么大;解压缩之后,居然达到了 1.1G, 还是大的有点吓人。如果我们回顾一下,在1994-03-13 发布的 linux-1.0.tar.gz 只有 1M , 而解压缩之后,也只有 5.8M而已。 

那现在,就让我们来看看都是什么把现在的内核撑的这么大吧。

这里,我做了两个简单的统计图,通过这两个统计图,我们就可以对内核中的代码分布一目了然了。

图1, 以kilobytes 为单位

da4bfe6b61d01f19c0fd37ba1eaa28fa.png

我们看看体积(以KB作为单位)占据前3的部分:

1. 排第一的是内核的 drivers 部分,这个是针对不同硬件的驱动,达到 66% , 达到了721344K(大约704MB)。

2. 排第二的是内核的 arch 部分,这个是针对不同体系结构的代码,比如X86, ARM,PowerPC等,达到12%, 135288K (大约132MB)

3. 排第三的是内核的 sound (声音系统相关),include (头文件等),fs(文件系统,如XFS,ext4/3 等),tools(比如 bpf,perf等 ) 这几个部分。 它们占用基本接近,达到4%, 在46820K左右(大约46MB)。

图2, 以代码(包含.c , .h 和 .S 后缀名的源码文件)的行数为单位

3abbea39fff07da22ee581ddcd9ed035.png

我们看看代码行数据前3的部分(总体上,与图1类似):

1. 排第一的是内核的 drivers 部分,这个是针对不同硬件的驱动,达到 67% , 有15973493行。

2. 排第二的是内核的 arch 部分,这个是不同体系结构的代码,比如X86, ARM,PowerPC等,达到9%,有2186299行。

3. 排第三的是内核的 sound (声音系统相关),fs(文件系统,如XFS,ext4/3 等),达到5%, 大约在1201724行左右。

最后简要总结

我们看到Linux内核为了支持多种不同的硬件,内核里面的驱动贡献了超过66%的代码量;接下来,Linux内核为了支持多种体系结构,也贡献了不少的代码量; 再往下,Linux内核为了要支持声音系统,支持多种文件系统,也贡献不少的代码量。

从这里也可以从侧面了解到,Linux 内核为了支持多硬件,多体系,使其体积越来越大;或许以后,随着新硬件的加入,保持旧硬件的兼容,其体积还是会继续膨胀下去。

如果是自己定制内核的话,刨去不用的驱动,再针对特定的体系,还是可以编译出自己的精简内核。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值