php猎奇源码 织梦新闻视频图片八卦娱乐趣事资讯门户网站模板,网站建设要钱吗,做化学科普网站的目的,小程序开发公司推选北京华网天下基本概念
进程异步性特征#xff1a;各并发执行的进程以各自独立的#xff0c;不可预知的速度向前推进。
进程同步又称作直接制约关系#xff0c;他是指为完成某种任务而建立的两个或者多个进程#xff0c;这些进程因为需要在某些位置上协调他们的工作顺序而产生的制约关…基本概念
进程异步性特征各并发执行的进程以各自独立的不可预知的速度向前推进。
进程同步又称作直接制约关系他是指为完成某种任务而建立的两个或者多个进程这些进程因为需要在某些位置上协调他们的工作顺序而产生的制约关系。源于进程需要相互合作
但是因为进程本身的异步性因此需要操作系统进行处理。
两种资源共享方式互斥共享、同时共享 临界资源一个时间段内只允许一个进程使用的资源 进程互斥当某一个进程访问某临界资源时另一个想要访问临界资源的进程必须等待。
do
{进入区临界区退出区剩余区
}while(true)进入区判断能够进入临界区如果可以进入则设置正在访问临界资源的标志阻止其他进程进入临界区临界区/段访问临界资源的代码退出区解除正在访问临界资源的标志剩余区其他处理
实现进程互斥应该遵循的原则
空闲让进临界区空闲时可以允许一个进程进入临界区忙则等待如果已经有进程进入临界区则其他试图进入临界区的进程必须等待优先等待对于请求访问的进程应该保证能在有限时间内进入临界区保证不会饥饿让权等待如果进程不能进入临界区应该立即释放处理机防止进程忙等待
实现进程互斥的软件实现
单标志法
每个进程进入临界区的权限只能被另一个进程赋予 违背空闲让进、让权等待
双标志先检查法
对flag数组的访问因为进程的异步性有可能导致违反忙则等待原则
双标志后检查法
可能违背空闲让进、有限等待原则
Peterson算法 违背让权等待的原则可能需要“忙等”。但是比前面几种方法好。
进程互斥的硬件实现
中断屏蔽方法
利用“开/关中断指令”实现。即在某进程开始访问临界区到结束访问为止都不允许被中断也就不能发生进程切换因此也不可能发生两个同时访问临界区的情况。
优点简单、高效 缺点不适用多处理机只适用操作系统内核进程不适用于用户进程因为开/关中断指令只能运行在内核态
TestAndSet指令TS
也叫做TestAndSetLock(TSL)
上锁和检查操作变成了原子操作 优点实现简单适用多机处理环境 缺点不满足让权等待原则
Swap指令
也叫做Exchange指令或者简称XCHG指令 优点实现简单适合多机系统 缺点不满足让权等待
信号量机制
信号量其实就是一个变量可以用一个信号量来表示系统中某种资源的数量4 原语一种特殊的程序段其执行只能一气呵成不可被中断。用来解决检查和上锁无法一气呵成的问题
信号量S Wait(S) P操作 Signal(S) V操作
整型信号量
对信号量的操作只能有三种初始化、P、V
不满足让权等待原则会发生忙等
记录型信号量 S.value0时表示该类资源已经分配远比因此该进程自我阻塞。
当进行V操作发现S.value0时表示在将这个资源还给系统之前有进程在阻塞等待资源因此唤醒一个进程。
满足进程互斥的所有原则
信号量机制实现进程互斥 信号量机制实现进程同步
为了保证进程执行的顺序
设置同步信号量S初始化为0在需要首先进行的操作后执行V(S)操作在条件满足情况下执行的操作前执行P(S)操作 如果有多个约束关系就设置多个信号量
信号量机制实现前驱关系
对于每条边设置一个信号量然后同进程同步这也是一种进程同步 生产者-消费者问题
系统中有一组生产者进程和一组消费者进程生产者进程每次生产一个产品放入缓冲区消费者进程每次从缓冲区中取出一个产品并适用。
生产者、消费者共享一个初始为空、大小为n的缓冲区
对临界资源的访问必须互斥访问缓冲区也是一种临界资源否则多个进程同时向缓冲区写入数据可能造成数据的覆盖
PV操作题目分析
关系分析找出题目中描述的各个进程分析他们之间的同步、互斥关系确定P、V操作的大体顺序因为生产者每次要消耗一个空闲缓冲区并且生产一个产品。消费者每次要消耗一个产品并释放一个空闲缓冲区。设置信号量
对于临界资源的访问一定要满足访问条件以后再进行访问否则有可能导致死锁。即先满足进程同步条件再进行互斥操作
平时设计的时候要尽可能缩小互斥访问PV操作覆盖的区域即尽可能减少临界区中的操作不仅是为了避免死锁同时还是为了提高进程的并行性。
多生产者-多消费者问题
多类生产者和多类消费者 当缓冲区资源只为1的时候我们有可能可以不专门设置访问缓冲区的互斥信号量。不过出于良好的习惯我们还是在访问缓冲区的时候专门加上互斥信号量。需要注意的是对互斥信号量的P操作一定要在进程同步的P操作之后否则会引起死锁。
我们在分析的时候理解为事件的行为对资源的占用等等而不是进程之间的行为。
吸烟者问题 读者-写者问题 潜在的问题只要有都进程还在读写进程就要一直阻塞等待可能“饿死”。因此这种算法中读进程是优先的。 哲学家进餐问题 每个哲学家进程需要同时持有两个临界资源才能开始吃饭所以需要避免资源分配不当导致死锁。
最多只允许四个哲学家进餐对于奇数号的哲学家必须先拿左边的筷子偶数号的哲学家必须先拿右边的筷子只允许一个哲学家拿筷子