进程同步

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.经典进程的同步问题

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

时间: 2024-11-05 21:37:09

进程同步的相关文章

经典进程同步问题一:生产者-消费者问题(The producer-consumer problem)

(注:参考教材:计算机操作系统第四版 西安电子科技大学出版社) 问题描述:一群生产者进程在生产产品,并将这些产品提供给消费者去消费.为了使生产者进程与消费者进程能够并发进行,在两者之间设置一个具有n个缓冲区的缓冲池,生产者进程将产品放入一个缓冲区中:消费者可以从一个缓冲区取走产品去消费.尽管所有的生产者进程和消费者进程是以异方式运行,但它们必须保持同步:当一个缓冲区为空时不允许消费者去取走产品,当一个缓冲区满时也不允许生产者去存入产品. 解决方案:我们这里利用一个一个数组buffer来表示这个n

进程同步——经典的同步问题

本文为博主原创文章,未经博主允许不得转载 http://www.cnblogs.com/kiplove/p/6724431.html 涉及进程同步的一些概念: 互斥与同步: 临界资源(临界区):指一次只能允许一个进程使用的共享资源称为临界资源: 同步:指为完成某种任务而建立的两个和多个进程,这些进程在合作的过程中需要协调工作次序进行有序的访问而出现等待所产生的制约关系. 互斥:指两个或多个进程访问临界资源时只能一个进程访问,其他进程等待的一种相互制约的关系. 信号量与互斥量: 信号量:本身是一个

java 与操作系统进程同步问题(二)————经典消费者生产者问题

http://www.cnblogs.com/zyp4614/p/6033757.html (java 与操作系统进程同步问题(一)----互斥问题) 今天写的是最经典的生产者消费者问题,最简单的版本,即只有一个缓冲区,缓冲区中只能放一个物品,即不考虑互斥关系. 问题简单分析: 生产者在缓冲区为空的时候可以往缓冲区中放产品,消费者可以在缓冲区不空(即缓冲区中有产品时)可以取一个产品. 首先可以确定有两个信号量 第一个信号量,是缓冲区是否空,当空的时候生产者可以放入产品,初值为1,因为默认缓冲区是

进程同步和信号量

进程的同步 进城合作:多进程完成同一个任务 ? 实例1: 司机 ? ? ? ? ? ? ? ? ? ? ? ? ?售票员 while)true){ ? ? ? ? ? ? ? ? ?while)true){ 等待 启动车辆; ? ? ? ? ? ? ? ? ? ?关门; 发送信号 ? ? 正常运行: ? ? ? ? ? ? ? ? ? ?售票; ? ? 到站停车:发送信号 ? ? ? ? ? ?等待 开门; } ? ? ? ? ? ? ? ? ? ? ? ? ? ? } 两个进程如何实现同步合作

操作系统--进程同步和互斥的概念

简介 进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步. 临界资源 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源).但对于某些资源来说,其在同一时间只能被一个进程所占用.这些一次只能被一个进程所占用的资源就是所谓的临界资源.典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量

Python 3 并发编程多进程之进程同步(锁)

Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理. 1.多个进程共享同一打印终端 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('%s is done' %os.g

linux进程同步机制_转

转自:Linux进程同步机制 具体应用可参考:线程同步       IPC之信号量 为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一 定的同步机制保证进程之间不会自说自话而是有效的协同工作.比如在共享内存的通信方式中,两个或者多个进程都要对共享的内存进行数据写入,那么怎么才能保证一个进程在写入的过程中不被其它的进程打断,保证数据的完整性呢?又怎么保证读取进程在读取数据的过程中数据不会变动,保证读取出的数据是完整有效的 呢?常用的同步方式有: 互斥锁.条件变量.读

进程同步的几种机制

转自: http://www.cnblogs.com/sonic4x/archive/2011/07/05/2098036.html 多进程的系统中避免不了进程间的相互关系.本讲将介绍进程间的两种主要关系——同步与互斥,然后着重讲解解决进程同步的几种机制.       进程互斥是进程之间发生的一种间接性作用,一般是程序不希望的.通常的情况是两个或两个以上的进程需要同时访问某个共享变量.我们一般将发生能够问共享变量的程序段称为临界区.两个进程不能同时进入临界区,否则就会导致数据的不一致,产生与时间

linux应用开发-进程同步编程

linux应用开发-进程同步编程 一 进程同步 一组并发进程进行互相合作.互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步 二 生产者消费者结合信号量 进程1生产,进程2消费,进程1生产的过程进程2等待

【操作系统总结】进程同步的信号量机制

信号量机制是由dijkstra 1965年提出,是解决进程同步重要的工具 下面方法适用与几个进程访问同一个临界区 整形信号量 定义一个表示资源数目的整形信号量S,仅能同步P, V操作改变.原始值S=1,每一个进程来的时候会执行: 首先执行wait()操作,如果信号量s<=0就会一直检测并阻塞 如果不小于0就会进入临界区,并把S设为0,保证其他进程无法进去临界区 在临界区执行完,再把信号量设置回来. wait(S) { while(S <= 0);//资源如果小余0就会阻塞.一直在这边检测 S-