您的位置:首页 > 运维架构 > Linux

linux 内核设计与实现(第二章笔记)

2014-05-19 12:12 288 查看
       最近开始学习linux 内核相关的知识,一直想对linux内核做些了解,但是时间上的问题,虽然学习了三年的linux,也玩了几乎四年的linux系统,但是从来没有对linux 内核做一个详细的了解,最近抽出课余时间对《linux内核设计与实现》进行了第一遍阅读,相关的笔记如下,如果觉得不错会做第二遍阅读。

       1、关于linux内核源码的获取。

        由于linux是一个开源的项目,所以其源码是很好获取的,几乎所以的源码在这个网站上都可以获得(https://www.kernel.org/),你可以选择http或者ftp方式来获取。

        2、对内核的配置或者移植。

         这对于一个linux用户来说很简单,进入内核源码使用make工具就可以搞定,当然不同的系统可能会有错误,但是这些都可以找到解决办法。以下是几种编译方法:

        a、make config 使命令行的方式进行内核配置。

        b、make xconfig 、make menuconfig 使用图形界面的方式配置内核。

        c、make命令。

        使用这些命令就可以完成内核的编译,但是如果你要进行改工具链或者什么的就得修改配置文件,所以的这些都是在Makefile作用下的功能,对于Makefile 的了解在这里不描述。

         3、了解内核开发与普通程序的开发的不同点。

         a、内核编译时不能访问C库,因为内核中根本就没有libc库。

         b、编写程序必须使用GUN C(开源的C代码)。

   c、内核缺少内存保护机制,所以在编写内核代码时,必须严格保证不能出现内存错误,否则会导致内核出现无法估计的错误。

         d、内核提供的浮点数运算并不完整,为了减少不必要的麻烦尽量少使用浮点运算。

          e、内核栈有限。所以在编写程序的时候时刻想到自己的栈是否有足够的空间。

          f、linux是真正多处理器操作系统,对于内核必须支持异步中断、抢占和SMP功能(在liunx内核中经常使用的一种锁机制就是自旋锁)。

          g、由于linux更很多时候用在了其他的环境,如嵌入式方面等,要充分考虑其可移植型(对齐方式,字节序的方面)。

支持的GUN C特性:

           1、内联函数(inline)

                 提高运行速度,但是会占用更多的存储空间。

            2、内联汇编

                 使用机器语言直接操作硬件,并且其执行速度也就更快。

             3、分支声明

                 使用了likely或者unlikly函数。 

      

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: