zoukankan      html  css  js  c++  java
  • 进程同步

    1.进程同步的主要目任务是为多进程(含线程)的运行进行协调:

    有两种协调方式:

    (1)进程互斥方式

    (2)进程同步方式

    2.进程的三种基本状态

    1)就绪状态 2)执行状态 3)阻塞状态  

    他们之间的相互转化方式及条件

    3.进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。

    4.对于临界资源进程间采取互斥的方式实现资源的共享。生产者--消费者问题

    5.把在每个进程中访问临界资源的那段代码称为临界区。保证进程互斥的进入自己的临界区,实现诸进程对临界资源的互斥访问。

    6.信号量机制(Dijkstra提出)P(wait()操作-1),V(signal()操作+1)操作

    1)整型信号量

    2)记录型信号量

    3)AND型信号量(一个进程要先获得两个或更多的共享资源后方能执行其任务)可能发生死锁。

        将进程在整个运行过程中需要的所有资源,一次性全部的分配给进程,待进程使用完后再一次释放。

    4)信号量集

     7.信号量的应用

    1)利用信号量实现进程互斥

    2)利用信号量实现前驱关系

    8.经典进程的同步问题

    生产者-消费者问题  读者-写者问题  哲学家进餐问题

    mutex是用作互斥的,而semaphore是用作同步的。

    也就是说,mutex的初始化一定是为1,而semaphore可以是任意的数,

    所以如果使用mutex,那第一个进入临界区的进程一定可以执行,而其他的进程必须等待。

    而semaphore则不一定,如果一开始初始化为0,则所有进程都必须等待。

    同时mutex和semaphore还有一个区别是,获得mutex的进程必须亲自释放它,而semaphore则可以一个进程获得,另一个进程释放。

  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5655582.html
Copyright © 2011-2022 走看看