Linux内核体系架构

 1. Linux内核和用户层的应用程序都有自己的保护地址空间。每个用户空间的进程都有自己的虚拟地址空间,内核则有独立的地址空间。一般情况下应用程序时无法直接访问内核空间的,要通过一个特殊的系统调用接口来访问。但是又有一个问题,当频繁的使用系统调用时,会加大系统的开销等。这就好比去银行取钱,假如我们要取1000元,那么你是一次取1000元好呢,还是分十次每次取100元好。很明显,我们是一次性就搞定的。所以,在发生系统调用的时候内核也是希望你一次就搞定,不要老是来麻烦他。在这种情况下有些高手们就开发了一个标准C库这个新的链接内核的接口,这些接口的本质还是通过系统调用来跟内核打交道的。唯一的好处是这些表尊库函数都带有缓冲区,将应用程序的多次请求操作合并为一次,有效的提高了内核的效率。这样就好比去银行1000元钱是一次取而不是分十次取。
  1. 虚拟文件系统(VFS):虚拟文件系统是一个很重要的组件,VFS在SCI 和内核所支持的文件系统之间提供了一个交换层。在VFS向上是对一些如read、write、open、close等的一些SCI 的抽象, 向下是对内核所支持的文件系统的抽象。在内核所支持的文件系统之下(注意不是VFS而是内核实际所支持的一些文件系统如ext3,ext4,fast,nfs等)有一个缓冲区缓存,用于跟设备驱动程序打交道,这个缓冲区缓存可以优化对特殊设备接口的访问。

    3.内核源码目录中的usr是存放一些打包压缩的算法。

  2. 内核驱动的移植:
    a、将自己的源代码复制到Linux内核代码的对应的目录下。
    b、在该目录的Kconfig文件中增加自己代码的配置选项。
    c、在该目录的Makefile中增加对自己的源代码的编译选项。
    比如在内核的drivers/led中添加一个驱动:
    第一步:在该目录下添加自己的源码:led_dri.c
    第二步:在该目录下的Kconfig中添加自己的菜单选项

config  LED_DRI_XXX
    tristate "XXX Soc LED driver"
    depends on ARCH_EXYNOS
    help
        xxxx
第三步:在该目录下的Makefile中使能自己的编译开关
obj-$(CONFIG_LED_DRI_XXX)  +=led_dir.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值