第十一章心得体会

通常一个Linux 驱动并不是为某个特定的用户空间程序编写的。

调用Linux 驱动的程序可能会很多,也很有可能会有很多程序

同时对Linux 驱动进行读、写等操作。由于Linux 驱动可能使用

全局数据(也称为共享数据〉,如果同时对这些共享数据进行

读写,可能会出现脏数据,这就要求Linux驱动具有控制对其字

数据访问的能力,例如,在读共享数据时不能修改共享数据;

不能同时菁两个或两个以上的执行单元修改共享数据。为了达

到这些目的,就需要本章要讨论的并发控制技术。这些技术主

要包括原子操作、自旋锁、RCU、信号量、互斥体和完成量。

本章还为每一种并发控制技术配有完整的示例,并比较了这些

并发控制技术的优点和缺点以及它们的不同。这一章介绍的并

发控制技术也是Linux 内核的基础,因为在Linux 内核中会大量

使用这些技术处理并发问题。

Linux 驱动的休眠和唤醒是Lim肌肉核的技术,利用wait_event_interruptible

、wake_ up_ interruptible 等宏可以休眠和唤醒内核进程,当被

唤醒线程满足condition 条件后wait_ event_ interruptible 宏就会

立即返回以便执行后面的操作。当应用程序以阻塞方式访问

休眠的内核进程,应用程序将被阻塞。如果应用程序以非阻塞

方式访问休眠线程,虽然并不会被阻塞,但应用程序要想知道

Linux 驱动什么时候被唤醒,就需要使用轮询检测技术,也就是

select 和poll 函数。当然, 在poll 函数中还需要使用poll_wait 函数

将等待队列头添加到轮询表Cpoll_ table ) 中, 并返回相应的掩码。

时间: 2024-12-16 07:51:12

第十一章心得体会的相关文章

阅读《软件工程—理论方法与实践》第十一章心得体会

软件维护是必然的,软件的不断修改会导致软件的退化,开发效率与投入资源无关.软件维护指软件运行或维护阶段对软件产品所进行的修改.软件维护分为改正性维护.适应性维护.完善性维护.软件维护受开发过程影响大.困难多.成本高.软件维护过程包括维护申请.维护分类.影响分析.版本规划.变更实施.软件发布等步骤.软件再工程是将现有系统重新构造成为新的形式.软件再工程包括对象选择.反向工程(设计恢负).文档重构.代码重构(常见).数据重构和正向工程等活动.

阅读《软件工程—理论方法与实践》第四章心得体会

阅读第四章所得体会.软件需求是决定软件开发是否成功的一个关键因素.开发人员应当学会正确地理解软件需求,实行开非完善但是高质量的需求开发和管理,最大限度地降低软件需求风险.软件需求可以划分为业务需求(定义了项目的远景和范围).用户需求(使用该系统需要完成的任务).系统需求.功能需求(说明了需要开发实现的功能)和非功能需求(功能需求的补充)等型.需求工程是应用已证实有效的原理和方法,并通过合适的工具和符号,系统地描述出待开发系统及其行为特征和相关约束,其过程包括需求获取.需求分析.需求规格说明.需求

大道至简第一章心得体会

大道至简——编程的精义  心得体会      谨以此用于苦恼编程序不得入门的人,不对之处敬请指出 “虽我之死,有子存焉:子又生孙,孙又生子:子又有子,子又有孙.子子孙孙,无穷匮也.而山不加增,何苦而不平?” ——<愚公移山>,<列子-汤问篇> 编程究其本身对大数人而言是一件很苦恼而又无法避免的事情,但是有点可笑的是编程本身实在是一件简单的事,因为“程序=算法+结构”,所谓的编程就是把一件事情交给计算机去做,然后把你的想法“告诉”计算机就行了.但是编程又是一件很“无语”的事情——因为

大道至简-第二章 心得体会

大道至简——是懒人造就了方法    心得体会 “ 僰道有蜀王兵蘭,亦有神作大潭江中.其崖崭峻不可破,(冰)乃积薪烧之.” ——<华阳国志> 从这段历史文献中我们可以看到,李冰同样是凿山但是他懂得方法,懂得怎样快速的破山凿山.这大概就是愚公和李冰的区别了(李冰是‘积薪烧之’而愚公是‘碎石击壤’)这两种方法的结果差距是很大的. 很明显李冰的方法更高级一点,那么问题来了,李冰为什么会找到这种方法而愚公没有找到呢?如果李冰也和愚公一样每天都忙东忙西“受命以来,夙夜忧叹”每天连吃饭的时间都没有,那他可以

《Android深度探索》(卷1)HAL与驱动开发 第九章心得体会

本章主要学习了硬件抽象层:HAL. Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间.为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间

Android深度探索-卷1第六章心得体会

这章主要介绍了第一个linux驱动程序:统计单词个数.Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,都保存在/dev目录中.大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与文件交换数据,也就是文件操作. 编写Linux驱动程序的步骤 第一步:建立Linux驱动骨架(装载和卸载Linux驱动) 第二步:注册和注销设备文件 第三步:指定于驱动相关的信息 第四步:指定回调函数 第五步:编写业务逻辑 第六步:编写Makefile文件 第七步

第三章 心得体会

第三章的GIT的安装与使用 1:安装Git 在安装的时候可以使用以下命令安装! # apt-get install git # apt-get install git-doc git-svn git-small git-gui gitk 在低版本的Ubuntu Linux中,如果Git这个名字被另的软件包占了,为了加以区分需要将用于版本控制的Git软件包改为git-core. 2:查看Git文档 在Linux下可以直接使用man命令查看指定命令的帮助文档,查询git-checkout命令的帮助文

第二章 心得体会

第二章主要学习了搭建Android底层开发环境的步骤和Android应用程序开发环境的步骤 通过学习搭建Android应用程序开发环境的步骤,在安装JDK以及配置Windows上JDK的变量环境的时候就出现了错误,导致环境一直搭建不好. 后来请教同学还有网上搜索,还有之前搭建环境的经验,解决了自己搭建环境时的问题. 下载安装Eclipse之后环境基本搭建完毕 下载安装Android SDK . 为Eclipse安装ADT插件.Android应用程序开发环境就这样搭建完了. Android底层开发

阅读《软件工程—理论方法与实践》第五章心得体会

阅读第五章所了解到的基本知识,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.主要目的是保证软件的正确性.已建立的形式化方法可分为操作类和描述类.操作类方法基于状态和转移;描述类基于数学公理和概念.形式证明与验证技术主要包括模型检测(适用于有穷状态系统,完全自动化并且验证速度快)和定理证明(采用逻辑公式来表示系统规约及其性质,分为自动和交互式两种).一阶线性时态逻辑是一阶谓词逻辑的扩展.对汉诺塔操作规划问题有了更深一步的理解.计算树逻辑是