第2章从内核出发

原创 2012年03月26日 22:26:37

内核开发的特点

 

内核编程时不能访问C库。

内核编程时必须使用GNU C。

内核编程时缺乏像用户空间那样的内存保护机制。

内核编程时浮点数很难使用。

内核只有一个很小的定长堆栈。

由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。

要考虑可移植性的重要性。

 

 

GCC 特有的一些东西

 

内联(inline)函数

定义一个内联函数的时候,需要使用static作为关键字,并且用inline限定它。比如:

 

static inline void dog(unsigned long tail_size) 

内联函数必须在使用之前就定义好,否则编译器就没法把这个函数展开。实践中一般在头文件中定义内联函数。由于使用了static作为关键字进行限制,所以编译时不会为内联函数单独建立一个函数体。如果一个内联函数仅仅在某个源文件中使用,那么也可以把它定义在该文件开始的地方。

在内核中,为了类型安全的原因,优先使用内联函数而不是复杂的宏。

 

内联汇编

一般是在相应的体系结构里面用的,  ARM 混合 C 编程的时候这样用过.

C ARM汇编 混合编程

 

分支声明

就是把概率出现较小的分支用 宏 unlikely() 对 条件表达式定义下,应该就是物理内存尽可能不出现他.
例如,下面是一个条件选择语句:

if (foo) {  
        /* ... */  
} 
如果想要把这个选择标记成绝少发生的分支:

/* 我们认为foo绝大多数时间都会为0... */  
if (unlikely(foo)) {  
        /* ... */  
} 

相反,如果我们想把一个分支标记为通常为真的选择:

/* 我们认为foo通常都不会为0 */  
if (likely(foo)) {  
        /* ... */  
} 

没有内存保护机制

....

第2章 从内核出发

1 获取内核源码   内核是开源的, 可以从http://www.kernel.org下载或者用git从git.kernel.org克隆。   内核源码一般 内核源码的结构 目录 说明 ...
  • liao20081228
  • liao20081228
  • 2017年12月06日 22:08
  • 28

从内核出发(2-1)

内核基本常识:从何处获取源代码,如何编译它,如何安装新内核 一、获取内核源码: 内核官网:http://www.kernel.org 二、内核源代码树: ...
  • qq_30120725
  • qq_30120725
  • 2015年07月26日 02:22
  • 122

第二章 从内核出发

内核开发的特点: 内核编程时既不能访问 C 库,也不能访问标准的 C 头文件。 内核编程时必须使用 GNU C。 内河编程时缺乏像用户空间的那样的内核保护机制。 内核编程时难以执行浮点数运算。 内核给...
  • lizuobin2
  • lizuobin2
  • 2017年01月30日 16:40
  • 213

《Linux内核设计与实现》——从内核出发

一、获取源代码  1、使用git获取
  • Explorer_day
  • Explorer_day
  • 2014年10月27日 15:39
  • 527

Linux内核中断处理体系分析

前一篇博文中:linux内核初始化阶段通过early_trap_init()函数完成了把异常向量拷贝到0xFFFF0000开始的地方,这些异常向量大部分指向通过vector_stub宏定义的那段代码,...
  • u011549260
  • u011549260
  • 2015年03月19日 00:18
  • 1077

第2章 配置与编译内核

配置内核 几种配置方式 1. make config 基于文本的最为传统的也是最为枯燥的一种配置方式,但是它可以适应任何情况。这种方式会为每一个内核支持的特性向用户提问。如果用户回答“y”...
  • mdd18703649811
  • mdd18703649811
  • 2015年09月02日 10:54
  • 159

第2章 内核导言

文件子系统 索引节点表 文件表 用户文件描述符表 内核在逻辑级上只涉及文件系统,而不涉及磁盘。由磁盘驱动程序实现逻辑设备(文件系统)地址和物理设备(磁盘)地址之间的转换。 文件系统由一个逻辑块序列组成...
  • weixiaoyiri
  • weixiaoyiri
  • 2015年12月10日 00:49
  • 128

要出发公司笔试题

前言招聘高峰期来了,大家都非常积极地准备着跳槽,那么去一家公司面试就会有一堆新鲜的问题,可能不会,也可能会,但是了解不够深。本篇文章为群里的小伙伴们去要出发公司的笔试题,由笔者整理并提供笔者个人参考答...
  • woaifen3344
  • woaifen3344
  • 2016年02月25日 21:16
  • 1298

《Linux内核完全注释》 第2章 内核体系结构

本书使用Linux  V.11版内核代码: 1. 完整的操作系统分为4大部分:用户应用程序、操作系统服务、操作系统内核、硬件系统。 用户应用程序:字处理程序、网络通信程序、程序员自己编写的应用程序...
  • aaronca0
  • aaronca0
  • 2015年02月11日 20:18
  • 266

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计

《算法竞赛入门经典》读书笔记 第二章 循环结构程序设计 2.1 For循环 知识点1:For循环语法结构  for(int i = 1; i        printf("%d\n",i)...
  • yzzxliuchao
  • yzzxliuchao
  • 2015年03月23日 10:24
  • 275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第2章从内核出发
举报原因:
原因补充:

(最多只允许输入30个字)