Linux Kernel Hack (1)

  • Linux内核和Unix内核有什么区别?
  1. Linux支持动态加载内核模块。
  2. Linux支持SMP机制。传统Unix不支持SMP
  3. Linux内核可以是抢占。(Solaris and IRIX 同样支持Preemptive)
  4. 不区分Thread和Process。
  5. 忽略了Unix中一些不合适的特性。
  6. Linux体现了自由精神。
  • 内核开发的特点。
  1. 内核不能访问C库。libc太大,不适合内核开发。
  2. 内核开发必须使用GNU C。应为:
    • 支持inline 函数
    • 支持在C中嵌入汇编代码
    • 分枝申明用于优化(likely() ,unlikely())
  3. 没有内存保护机制。内核监视用户空间的内存非法访问,并强制结束用户进程,内核本身的内存错误会导致Oops ! Kernel panic
  4. 不轻易使用浮点数。内核对浮点处理不是很完美,(需要人工保存和恢复浮点处理器,很繁琐)栈的容量小而固定。32Bit机器为8K, 64位机器为16K
  5. 内核很容易出现race conditions。
    • 中断为异步的, 不考虑当前正再执行的代码段.
    • Linux内核为Preemptive.
  6. 内核注重可移值性. 代码应该和系统结构无关.
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: