Linux内核开发概述

Linux内核开发涉及独特的挑战,如无法使用C库或标准头文件,采用GNU C,缺少内存保护,限制浮点运算,小堆栈,以及需要处理同步、并发和可移植性问题。头文件主要在include和arch目录下。
摘要由CSDN通过智能技术生成

        Linux内核开发不同于用户空间的应用程序开发,有其一些独特之处。首先内核可以做它想做的任何事,这是它的优势,但还是有一些方面区别于应用开发过程,需要特别引起注意:

  • 内核编程时既不能访问C库等外部库也不能访问标准的C头文件
  • 内核编程时必须使用GNU C
  • 内核编程时缺乏像用户控件那样的内存保护机制
  • 内核编程时难以执行浮点运算
  • 内核给每个进程只有一个很小的定长堆栈
  • 由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发
  • 要考虑可移植性的重要性
1.1 无C库或无标准头文件
        内核不能连接使用标准C函数库,因为这会增加内核空间,所以内核只能实现自己的方法,幸好大部分常用的C库函数在内核中都已经得到了实现,比如操作字符串的函数组就在lib/string.c文件中。
        那么内核编程的头文件都有哪些呢?除了自己编写的头文件以外,内核自带的头文件主要分如下两个部分:
  • 基本的头文件位于内核源代码树顶级目录下的include目录中,例如头文件<linux/inotify.h>对应内核源代码树的include/linux/inotify.h文件。
  • 体系结构相关的头文件集位于内核源代码树的arch/<architecture>/include/asm目录下。例如x86体系结构相关的头文件就在arch/x86/include/asm目录下,内核代码通过asm/为前缀的方式来包含这些头文件,例如<asm/ioctl.h>。

1.2 内核编程时使用GNU C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值