zoukankan      html  css  js  c++  java
  • 内核开发的特点

    + 内核编程时不能访问C库,也不能访问标准的C头文件
    + 内核编程时必须使用GNU C
    + 内核编程时缺少像用户空间那样的内存保护机制
      内核中的内存都是不分页的,每用掉一个字节,物理内存就减少一个字节。
    + 内核编程时难以执行浮点运算
      不要轻易在内核中使用浮点数
    + 内核给每个进程只有一个很小的定长堆栈
      内核栈的大小是两页,32位机的内核栈是8KB,而64位机是16KB,固定不变,
      每个处理器都有自己的栈。用户空间的栈比较大,而且通常可以动态增长,
      DOS不可以。
    + 内核支持异步终端,抢占和SMP,因此必须时刻注意同步和并发
      同步和并发
      内核很容易产生竞争。和单线程的用户空间程序不同,内核的许多特性都要求
      能够并发地访问共享数据。
      + Linux是抢占式多任务操作系统
      + Linux支持对称多处理器系统
      + 中断是异步到来的
        中断异步到来,完全不顾及当前正在执行的代码。如果不加以适当的保护,
        中断完全有可能在代码访问资源的时候到来,这样中断处理程序就有可能访
        问同一资源
      + Linux内核可以抢占。所以如果不加以适当保护,内核中一段正在执行的代
        码可能会被另外一段代码抢占,从而有可能导致几段代码同时访问相同的资
        源。
     
        常用的解决竞争的方法是自旋锁和信号量。
  • 相关阅读:
    JavaScript实现html购物车代码
    SQLServer2019安装教程
    SQLServer2019安装教程
    pragma指令简介
    16进制字符串转数字(C/C++,VB/VB.net,C#)
    对方网络非正常断开检测方法
    stl map高效遍历删除的方法
    memmove 和 memcpy的区别
    Socket 心跳包机制总结
    如何将内存中的位图数据绘制在DC上
  • 原文地址:https://www.cnblogs.com/qianye/p/2786350.html
Copyright © 2011-2022 走看看