读书频道 > 系统 > linux > 深度探索Linux操作系统系统构建和原理解析
3.1.3 有效载荷——vmlinux
2013-09-28 15:34:21     我来说两句 
收藏    我要投稿   
全书一共8章:第1章介绍了如何准备工作环境。在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章中,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链  立即去当当网订购

在编译时,kbuild分别构建内核各个子目录中的目标文件,然后将它们链接为vmlinux。为了缩小内核体积,kbuild删除了vmlinux中一些不必要的信息,并将其命名为vmlinux.bin,最后将vmlinux.bin压缩为vmlinux.bin.gz。在默认情况下,内核使用gzip压缩,当然也可以在配置时指定使用lzma等压缩格式。gzip的压缩比相对较小,但是压缩速度相对较快。

那么为什么内核要进行压缩呢?

1)最初,因为在某些体系架构上,特别是i386,系统启动时运行于实模式状态,可以寻址空间只能在1MB以下,如果内核尺寸过大,将无法正常加载,因此,对内核进行了压缩。在内核加载完毕后,CPU切换到保护模式,可以寻址更大的地址空间,于是就可以将压缩过的内核展开了。

2)另外一个原因是,2.4及更早版本的内核,需要可以容纳在一张软盘上,所以内核也要进行压缩。

以上都是历史原因了,如今有些Bootloader,如GRUB,在加载内核期间就已经将CPU切换到保护模式了,寻址空间的限制早已不是问题。而且,如今软盘基本已经被其他介质替代,容量已不是问题。

但是内核的压缩还是保留了下来,毕竟还要考虑到某些尺寸受限的情况。而且,现代CPU解压的速度要远大于IO的速度,在启动时虽然解压要耗费一点时间,但是更小的内核也减少了加载时间。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.1.2 二级推进系统——内核非压缩部分
下一篇:3.1.4 映像的格式
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站