[架构之路-38]:目标系统 - 系统软件 - Linux OS硬件设备驱动必须熟悉的六大工作机制之(并发与互斥、阻塞与非阻塞、异步通知)

目录

前言:

第4章 内核程序并发与互斥机制

4.1 内核程序优先级机制

4.2 内核线程状态:并发与竞争

4.3 内核锁的类型

4.4 乱序问题

第5章 阻塞与非阻塞机制

5.1 什么是阻塞问题

5.2 应用程序如何设置阻塞方式

5.3 内核驱动如何阻塞应用程序(等待队列模型)

5.4 内核驱动如何实现阻塞操作

第6章 异步通知机制


前言:

Linux驱动程序员,要熟悉Linux的硬件驱动,必须关注两个大的框架:一、Linux内含的六大分离的思想与主要的驱动程序框架;二、驱动程序六大工作机制。只有掌握了这两大机制,才算真正的掌握了Linux的内核驱动程序。

第4章 内核程序并发与互斥机制

4.1 内核程序优先级机制

4.2 内核线程状态:并发与竞争

 备注:上图中底半部和顶半部写反了。

4.3 内核锁的类型

 

 

4.4 乱序问题

 

第5章 阻塞与非阻塞机制

5.1 什么是阻塞问题

(1)当接收时,没有数据的时候该怎么办?

(2)当发送时,设备正忙的时候该怎么办?

这就是阻塞问题。

阻塞:当设备没有ready时,操作线程直接进入等待队列,直到设备准备好,并唤醒等待线程。

非阻塞:当设备没有ready时,操作线程直接带错误信息返回。

5.2 应用程序如何设置阻塞方式

5.3 内核驱动如何阻塞应用程序(等待队列模型

5.4 内核驱动如何实现阻塞操作

(1)读操作

  • 没有可用数据时,用户线程进入等待队列,直到硬件中断服务程序唤醒读线程,开始读取数据。

(2)写操作

  • 数据没有写完成时,用户线程进入等待队列,直到写完成,唤醒应用线程,继续下一次的写操作。

(1)读操作

  • 没有数据时,进入等待队列,阻塞。
  • 有数据时,直接读数据,并转交给用户空间的程序。

(2)中断服务程序 

  • 表明有数据ready,唤醒等待队列中的内核空间的读线程

5.5 信号量实现阻塞问题

5.6 用户空间阻塞+内核空间查询

 

 

第6章 异步通知机制

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值