Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1951410
  • 博文数量: 383
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 4061
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-24 18:53
文章分类

全部博文(383)

文章存档

2011年(1)

2010年(9)

2009年(276)

2008年(97)

我的朋友

分类: LINUX

2008-11-18 21:04:09

今天读了第一章 - linux内核简介。收获如下:

    1、处理器在任何指定时间点上的活动范围可以概括为下列三者之一:

    •  运行于内核空间,处于进程上下文,代表某个特定的进程执行。

    •  运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。

    •  运行于用户空间,执行用户进程。

    2、Linux内核和传统UNIX内核特点的比较

    •  Linux支持动态加载内核模块。

    •  Linux支持对称多处理(SMP)机制

    •  Linux内核可以抢占。

    •  Linux内核并不区分线程和其他的一般进程。

    3、Linux内核编程与用户空间内应用程序开发的差异

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

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

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

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

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

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

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

    4、likely()和unlikely()

    对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现(likely()),或者该条件很少出现时(unlikely()),编译器可以根据这条指令对条件分支选择进行优化。内核将该指令封装成了宏。

    在你想要对某个条件选择语句进行优化之前,一定要搞清楚其中是不是存在这么一个条件,在绝大多数情况下都会成立。如果你的判断正确,确实是这个条件占压倒性的地位,那么性能会得到提升,如果你搞错了,性能反而会下降。

阅读(793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~