• 《Linux设备驱动程序》 笔记1


    驱动程序的任务

    通常来讲,驱动(模块)要执行两类任务:

    1. 模块中的某些函数作为系统调用的一部分执行(按照既定规则填补必需的系统调用模块)
    2. 其他函数负责终端处理

    内核中的并发

    为什么考虑并发问题:

    1. Linux系统中通常正在运行多个并发进程,并且可能有多个进程同时使用我们的驱动程序
    2. 大多数设备能够中断处理器,而中断处理程序异步运行,并且可能在驱动程序正试图处理其他任务时被调用。
    3. 有一些软件抽象(比如内核定时器)也在异步运行着
    4. 可能同时有不止一个CPU运行我们的驱动程序

    驱动程序编写人员所犯的一个常见错误是,认为只要某段带代码没有进入睡眠状态(或者阻塞),就不会产生并发问题,但即使在先前的非抢占式内核中,这种假定也是错误的。在2.6版本的代码中,内核代码(几乎)始终不能假定在给定代码段中能够独占处理器。

    一些细节

    • 应用程序拥有一块很大的栈空间,内核具有非常小的栈,它可能只有4096字节的大小。如果我们需要大的结构,则应该在调用时动态分配该结构。
    • 内核代码不恩你各市县浮点数运算。如果打开了浮点支持,在某些架构上,需要在进入或退出内核空间时保存和恢复浮点处理器的状态。这种额外的开销没有任何价值,内核代码中也不需要浮点运算。
  • 相关阅读:
    es操作
    MySQL逻辑架构
    ceshimd
    mysql资料
    已解决 : VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色
    MySQL数据库操作
    phpstorm配置laravel语法提示
    MySQL日志之慢查询日志(slow-log)
    456
    topcoder srm 553
  • 原文地址:https://www.cnblogs.com/catmelo/p/4296203.html
Copyright © 2020-2023  润新知