zoukankan      html  css  js  c++  java
  • 第十一章 读书笔记

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

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

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

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

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

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

  • 相关阅读:
    docker 容器简单使用
    C++ | 程序编译连接原理
    C++ | 虚拟地址空间
    python学习笔记(十)——进程间通信
    菜鸟教程-c
    现代操作系统-第三版-疑问
    小米C++面经
    面经积累-杂
    哈希表相关题目-leetcode简单
    字符串相关题目-leetcode简单(6-10/共51道)
  • 原文地址:https://www.cnblogs.com/yangsasa/p/5651612.html
Copyright © 2011-2022 走看看