美文网首页
同步和互斥

同步和互斥

作者: 菜根小友 | 来源:发表于2019-04-17 17:46 被阅读0次

同步和P-V操作

  • 同步和互斥的概念
  • P-V操作的概念
  • P-V操作解决互斥问题
  • P-V操作解决同步问题
  • 经典同步问题

4.5.1 同步和互斥的概念

1. 进程的互斥关系

  • 多个进程由于共享了独占性资源,必须协调各进程对资源的存取顺序:确保没有任何两个或以上的进程同时进行存取操作
  • 互斥和资源的共享有关
  • 资源:临界资源
  • 存取操作区域:临界区

2. 进程的同步关系

  • 若干合作进程为了完成一个共同的任务,需要相互协调运行步伐:一个进程开始某个操作之前必须要求另一个进程已经完成某个操作,否则前面只能等待。

4.5.2 P-V操作概念

  1. 信号灯的概念
    信号灯是一种桌有成效的同步机制。
    进程在运行过程中受信号灯控制,并能改变信号灯状态
  • 进程受控制:信号灯的状态可以阻塞或唤醒
  • 改变信号灯:信号灯的状态可以被进程改变

信号灯的数据结构

  • 信号灯变量定义为一个二元矢量(S,q)
  • S:整数,初值非负(S又称为信号量)
  • q:PCB队列,初值为空
struct SEMAPHORE
{
  int S;  //整数,初值非负
  pointer_PCB q;
}

两个操作

  • P操作(函数或过程,P(S,q))
    • S-1
    • 若差大于或等于0,该进程继续
    • 若差小于0,则该进程阻塞并加入到队列q中,并转调度函数
P(S,q){
  S=S-1;
  if(S<0){
    Insert(Caller,q);
    Block(Caller);
    转调度函数;
  }
}
  • V操作(函数或过程,V(S,q))
    • S值加1
    • 若和大于零,该进程继续
    • 若和小于或等于零,该进程继续同时从q中唤醒一个进程
V(S,q){
  S=S+1;
  if(S<0){
    Remove(q,pid); //pid:进程ID
    Wakeup(pid);
  }
}

4.5.3 P-V操作解决互斥问题

实质是实现对临界区的互斥访问,允许最多1个进程处于临界区。
应用进程:

  • 进入临界区之前先执行P操作
  • 离开临界区之后再执行V操作


    image.png

P-V操作解决同步问题

同步机制实质:

  • 运行条件不满足时,能让进程暂停
  • 运行条件满足时,能让进程立即继续

P-V操作应用于进程同步的基本思路

  • 暂停当前进程:在关键操作之前执行P操作
    • 必要时可暂停
  • 继续进程:在关键操作之后执行V操作
    • 必要时唤醒合作进程
  • 定义有意义的信号量S,并设置合适的初值
    • 信号量能明确地表示运行条件

经典同步问题

相关文章

  • OpenMP多线程——Parallel for

    多线程——线程同步 数据竞争问题 线程互斥同步——critical 线程互斥同步——atmoic 线程互斥同步——...

  • 同步和互斥

    同步和P-V操作 同步和互斥的概念 P-V操作的概念 P-V操作解决互斥问题 P-V操作解决同步问题 经典同步问题...

  • 程序多线程运行下怎样保证线程安全

    保证线程安全以是否需要同步手段分类,分为同步方案和无需同步方案。 1.互斥同步 互斥同步是最常见的一种并发正确...

  • 并发与多线程

    1线程的同步与互斥。解决线程的同步与互斥 synchronied 和cas乐观锁 还有 lockcas是读取数...

  • 理解JVM(六):线程安全和锁优化

    线程安全的实现方法 互斥同步 互斥是因,同步是果;互斥是方法,同步是目的。 synchronized关键字 syn...

  • 操作系统

    同步互斥 生产者与消费者(既有同步又有互斥) 读者-写者问题(同步) 哲学家进餐问题(同步) 信号量 初始值和当前...

  • 网络之美

    线程安全问题----互斥锁和递归锁 互斥锁线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制就是引入互斥锁...

  • Thread-Per-Message模式

    并发编程领域的问题总结为:分工,同步和互斥。同步和互斥相关问题更多地源自微观,而分工问题则是源自宏观。 Threa...

  • 锁分类

    是否锁住资源分为悲观锁(互斥同步锁)和乐观锁 悲观锁 典型的就是synchronize锁和Lock锁互斥同步锁, ...

  • 线程安全的实现方法(2)---非阻塞同步

    上文说到了线程安全的互斥同步实现方法,这里说一下非阻塞同步。 非阻塞同步 互斥同步的主要问题是线程阻塞和唤醒所带来...

网友评论

      本文标题:同步和互斥

      本文链接:https://www.haomeiwen.com/subject/dtnnwqtx.html