Linux Kernel学习004——内核开发特点

2019-01-24  本文已影响36人  若梦儿

相对与在用户空间内的应用开发,内核开发有很多独特之处:

无libc和标准头文件

libc的实现是依赖于内核的,因此,内核中不存在可以直接使用的libc。但是,大部分常用的C语言库函数都在内核中得到了实现(在lib目录下)。

头文件,基本的头文件都位于include目录和arch/<处理器架构>/include中。

GNU C

虽然C语言有国际化的标准比如C90、C99、C11等,但是内核并不仅仅使用了便准C语言,它的开发还依赖于gcc体统的很多拓展功能。比如attribute

没有内存保护机制

在用户空间中的进程,如果进行非法内存访问,则内核会发现错误,并进行相应的处理。但是,若在内核中发生了非法内存访问,则后果很难控制。内存错误可能的会导致oops。

难以进行浮点数

内核中使用浮点数很繁琐,需要人工保存和恢复浮点寄存器,一般情况下,不要使用浮点操作。

很小的定长堆栈

内核栈的准确大小随体系结构而变化,一般是两页。

同步和并发

内核的许多特性要求能够并发地访问共享数据,这就要求同步机制一保证不出现竞争条件。

可移植性

Linux是一个支持多种架构的可移植操作系统,大部分内核代码应该与体系结构无关。

上一篇下一篇

猜你喜欢

热点阅读