• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
qianye0905
博客园    首页    新随笔    联系   管理    订阅  订阅
内核开发的特点
+ 内核编程时不能访问C库,也不能访问标准的C头文件
+ 内核编程时必须使用GNU C
+ 内核编程时缺少像用户空间那样的内存保护机制
  内核中的内存都是不分页的,每用掉一个字节,物理内存就减少一个字节。
+ 内核编程时难以执行浮点运算
  不要轻易在内核中使用浮点数
+ 内核给每个进程只有一个很小的定长堆栈
  内核栈的大小是两页,32位机的内核栈是8KB,而64位机是16KB,固定不变,
  每个处理器都有自己的栈。用户空间的栈比较大,而且通常可以动态增长,
  DOS不可以。
+ 内核支持异步终端,抢占和SMP,因此必须时刻注意同步和并发
  同步和并发
  内核很容易产生竞争。和单线程的用户空间程序不同,内核的许多特性都要求
  能够并发地访问共享数据。
  + Linux是抢占式多任务操作系统
  + Linux支持对称多处理器系统
  + 中断是异步到来的
    中断异步到来,完全不顾及当前正在执行的代码。如果不加以适当的保护,
    中断完全有可能在代码访问资源的时候到来,这样中断处理程序就有可能访
    问同一资源
  + Linux内核可以抢占。所以如果不加以适当保护,内核中一段正在执行的代
    码可能会被另外一段代码抢占,从而有可能导致几段代码同时访问相同的资
    源。
 
    常用的解决竞争的方法是自旋锁和信号量。
posted on 2012-11-24 21:04  qianye0905  阅读(327)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3