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函数。
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函数。
相关文章推荐
- linux 内核设计与实现(第二章笔记)
- Linux内核设计与实现--学习笔记--第三章- 2(init进程)
- Linux内核通用队列的使用笔记(读linux内核设计与实现)
- LKD (linux内核设计与实现)笔记
- Linux进程 (Linux内核设计与实现学习笔记)
- Linux内核设计与实现 第一章 第二章
- Linux内核通用队列的使用笔记(读linux内核设计与实现)
- Linux内核设计与实现 学习笔记(7)设备与模块
- 《Linux 内核设计与实现》(第三版)粗读笔记
- Linux内核通用队列的使用笔记(读linux内核设计与实现)
- Linux内核设计与实现--学习笔记--第三章- 1(task_struct等)
- Linux 内核设计与实现学习笔记之第一章Linux内核简介和第二张从内核出发
- Linux内核设计与实现——7 中断与中断处理(2)
- linux内核设计与实现摘录及 Linux的内核源代码 的阅读
- Linux内核设计与实现笔记之第一章、第二章
- linux内核设计与实现思想 – C风格的面向对象
- Linux 内核设计与实现(一)
- 每日阅读3之内核设计与实现(第三版)4.5——linux调度实现之进程选择
- linux内核设计与实现【第三版】摘记----第一章:linux内核简介
- 每日阅读5之linux内核设计与实现——linux内核调度之睡眠与唤醒