第十一章 读书笔记

第十一章  Linux驱动程序中的 并发控制

并发(concurrency)指的是多个执行单元同时、并行被执行。而并发的执行单元对共享资 源〈如硬件资摞、程序中的全局变量、静态变量等〉的访问很容易导致竞态条件( race conditions)。

自旋锁并不关心锁定的|临界区究竟是怎样的操作,不管是读还是写,都只允许同时只有一个执 行单元可以极取自旋锁, 即使有多个单元同时读取临界区资源也会被锁住。实际上,对于并发访问 共享资源时,多个执行单元同时读取它是不会有任何问题的。为了解决这个问题,自旋锁衍生出了读写自旋锁。也就是将临界区的读、写操作分开。如果开发人员认为临界区的代码只是读取了共享资源,并未对共享资源做任何修改,那么就可以使用读自旋锁,多个执行单元可以同时获取一个读自旋锁。

使用读写自旋锁的方式和普通的自旋锁类似,也需要通过定义读写自旋锁变量,初始化读写自旋锁变量飞获取读自旋锁或写自旋锁、释放读自旋锁或写面旋锁。

顺序锁与读写自旋锁类似,只是为写锁贼予了更高的权限。在读写自旋锁中,读锁和写锁的优先级是相同的。当读锁获取读自旋锁时,写锁必须等待,直到临界区的代码执行完成,并释放读自旋锁为止,反之亦然。 而顺序锁在获取读锁的时候,仍然可以款取写锁,并继续执行写临界区中的代码。也就是说,写锁永远不会被读锁阻塞。

http://www.cnblogs.com/yangsasa/

时间: 2024-10-13 07:11:24

第十一章 读书笔记的相关文章

《移山之石》第十一章 读书笔记

看了本书中有关结对编程的一章,结合本次遇到的一些问题,笔记如下 1. 作者把时间放在了项目管理三角形的底边上,这是偶然为之还是时间有其特殊性?换一种问法,在“对工作的估计”这一平衡中,这三者有什么样的关系? 2.作者谈到了时间驱动和功能驱动,那么这两种不同的驱动模式的项目在开发上有没有不同的地方? 3.关于单元测试,想起了上学期java的经验:对于某些功能复杂.参数是数组等复杂变量的单元,如何编写完善的测试用例?难道是通过不断地new新的数组去做测试吗? 4.作者讲到了开始阶段的技术研讨,结合本

《程序员的自我修养》第十一章读书笔记

本章正式开始介绍运行库,十分之难的一章,我能给大家分析多少就是多少吧.现在十分佩服这三位写书的大神,同样是研究生,水平差距太多了.这里免不了要提一句题外话,感觉周围人对操作系统原理感兴趣的不多.也许是本人闭门造车,对现在的国内外研究现状了解不深,乱说的几句,还希望大家不要喷我. 好了正式开始今天的主题,本章的一开始先从三个例子出发,我就直接给大家揭晓谜底吧,程序并不是从main函数开始的,其实在前面的章节中就已经提到过,没有main的程序一样能运行,就是得自己写个链接脚本. 接下来看看程序到底是

第十一章读书笔记

并发(concurrency)指的是多个执行单元同时.并行被执行.而并发的执行单元对共享资 源〈如硬件资摞.程序中的全局变量.静态变量等〉的访问很容易导致竞态条件( race conditions).例如,有一个设备文件.进程 A 向该个设备文件写入 1000 个“a飞而进程 B 向 设备文件写入了 2000 个“b”,每次写数据之前会清空上一次写入的数据.现在有一个进程 C, 需要先读出进程 A 写入设备文件的全部字符( 1000 个“a”〉,然后再读出进程 B 写入设备文 件的全部字符(20

第四章读书笔记 进程调度

第四章读书笔记 进程调度 什么是进程调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程). 这个管理程序就是调度程序,它的功能说起来很简单: 决定哪些进程运行,哪些进程等待 决定每个进程运行多长时间 此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断. 总之,调度是一个平衡的过程.一方面,它要保证各个运行的进程能够最大限度的使用CPU(即尽量少的切换进程,进程切换过多,CPU的时间会浪

《内核设计与实现》第一章读书笔记

<内核设计与实现>第一章读书笔记 第一章:Linux内核简介 1.1 Unix的历史 Unix强大的特点 A.简洁,几百个系统调用,明确的设计目的 B.文件对待所有东西 C.移植性强(C语言) D.进程创建快,使用fork()系统调用. E.进程间通信元语,进程间通信机制 1.2 linux的简介 Linux系统的基础是内核.C库.工具库和系统的基本工具. 1.3 操作系统和内核简介 内核:管理者,操作系统的核心 通常一个内核由负责响应中断的中断服务程序和网络.进程间通信等系统服务共同组成.

Android深度探索——第九章读书笔记及心得

HAL模块 ——第9章读书笔记及心得 通过本章学习学会了Android中特有的与linux驱动交互的方法,即通过HAL模块.HAL模块本质上就是通过linux共享库(.so)与linux交互驱动,然后利用应用程序再访问linux共享库.每一个HAL共享库指定一个ID,在利用这个ID配合一定的规则找到linux共享库.知道了HAL对于Android的意义.知道了Android HAL的架构. HAL是建立在linux驱动之上的一套不属于linux内核的程序库.它属于linux内核层之上的应用层.H

Android深度探索——第二章读书笔记及心得

Android开发环境搭建 ——第二章读书笔记及心得 通过本章的学习了解了如何对Ubuntu Linux下的Android进行搭建,包括搭建Android应用程序开发环境.Android NDK开发环境和交叉编译环境的搭建.了解了搭建Android环境所需要的各种东西,了解了配置ADT的必要性—以便ADT能够找到Android SDK.知道了底层开发所需要的各种工具.学会了如何在Ubuntu下安装JDK.以及编译交叉编译环境,当初在学习Linux交叉环境编译的时候就不是特别成功,中间出了很多的错

Android深度探索——第四章读书笔记及心得

源代码的下载及编译 ——第四章读书笔记及心得 通过阅读书籍知道了Android源代码和Linux源代码的区别,了解了什么是Android移植.知道了Android移植就是Linux内核移植,而Linux内核移植主要就是Linux的驱动移植.为了开发和测试内核环境需要对环境进行搭建,进而知道了如何搭建环境.知道了如何下载Android/Linux源代码及配置Android源代码下载环境(并且知道Android源代码的下载并非一定要将4MB多的东西全部下载,也可以挑选着自己需要的东西下载,,可以利用

Android深度探索——第三章读书笔记及心得

了解Git ——第三章读书笔记及心得 对于Android的理解是从这学期才开始,所以不可谓说是了解的太少太少.对于Linux虽然经过了一学期的学习.经过一次紧张的实训,但是了解的也不是很多.不过我终究是知道Android和Linux是开源的,这是很多老师都曾经告诉我们的.虽然Git并不是学习Android和Linux开发必须掌握的技术,但是对于想要认真学习好这门技术的我们来说应该要努力掌握好这门技术.就像书上说的学习新技术的方式不是一味的读书,只会纸上谈兵.更应该深入的理解自己感兴趣的源代码,通