[架构之路-38]:目标系统 - 系统软件 - Linux OS硬件设备驱动必须熟悉的六大工作机制之(并发与互斥阻塞与非阻塞异步通知)
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-38]:目标系统 - 系统软件 - Linux OS硬件设备驱动必须熟悉的六大工作机制之(并发与互斥阻塞与非阻塞异步通知)相关的知识,希望对你有一定的参考价值。
目录
前言:
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章 异步通知机制
以上是关于[架构之路-38]:目标系统 - 系统软件 - Linux OS硬件设备驱动必须熟悉的六大工作机制之(并发与互斥阻塞与非阻塞异步通知)的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-11]:目标系统 - 架构 - 嵌入式系统软件+硬件的基本通用架构
[架构之路-56]:目标系统 - 平台软件 - 总体架构概述
[架构之路-28]:目标系统 - 系统软件 - Linux OS内核功能架构图解内核构建内核启动流程
[架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程