理解并发进程

一、说说你对顺序程序设计与并发程序设计的理解。

顺序程序设计:

把程序设计成顺序执行的指令序列,不同程序也按照先后顺序执行。程序顺序执行与其速度无关,即程序的最终输出仅与初始输入数据有关,而与时间无关。具有以下特征:
1、执行的顺序性(即一个程序在处理器上是严格按照顺序执行的,每个操作必须在一个操作开始之前结束)。
2、环境的封闭性(程序运行独占全机资源,注意,是全机资源!后面我们可以看到和并发设计的不同点)。
3、过程的可再重现性(简单点说就是不管你的计算机配置高还是配置低、什么时候运行、什么地方运行,它输出的结果都是惟一的。这一点当你看到下面的并发进程就会深刻体会到。因为并发程序执行的结果与时间相关)。


并发程序设计:
程序并发执行是指一组程序的执行在时间上是重叠的,所谓时间重叠就是一个程序还没运行结束另一个程序就开始执行了,或者说,多个程序处于都已开始执行但都还未执行完成。例如,A、B分别执行操作a1,a2,a3和b1,b2,b3。在单处理器上,顺序执行操作序列为a1,b1,a2,b2,a3,b3或a1,b1,a2,b2,b3,a3等,则称A和B的执行是并发的。从宏观上来看,并发性反映一个时间段内有几个程序都处于运行但尚未结束的状态。注意:这只是宏观上看来,其实处理器在同一时刻只能处理一个程序,千万不要以为同一时刻处理器在处理多个程序(要是有多个处理器那就另当别论了~)。就像你的大脑一样,让你同一时刻算多道运算题,你觉得可能吗。计算机并发地计算多道题目只不过是先计算A题,但是还没执行完,然后又去执行B题,B题还没执行完,下面说不定又去执行A题或者其他的题目。这样在用户看来好像是多个程序在同时执行。当然了这一切的保证是计算机运算速度是相当快的。如果计算机运行的速度非常慢(究竟有多慢自己脑补),你会明显感觉到cpu的控制权在各个程序之间来回交替。

进程的交互:竞争和协作
  1、竞争关系
    由于创建了多个进程,这些进程共享计算机的资源。而对于一些独占型(就是同一时刻只能有一个进程在占有这些资源)的资源,则会引发进程之间的竞争。

    进程互斥:若干进程相互争夺独占型资源而产生的竞争制约关系。举个通俗点的例子,就像多个男同学同时追一个女同学,这个女同学一次只能选择跟一个男生谈恋爱。这个时候女生就相当于那个独占型资源。
  2、协作关系
    一组并发进程共同完成一个任务需要分工协作。但是由于它们都独立地以不可预知的速度推进(为什么说不可预知,因为操作系统啥时候让你运行,让你运行多久都不是进程这种小角色能够知道的~计算机的世界里,操作系统就是最大的领导),但是他们在先后次序上又有一些约束。上个例子,有三个进程协作完成数据读入、加工和打印任务,在一块数据还未读入之前是不能进行够加工处理的,在加工处理完一块数据之前是不能打印输出的,这就是他们之间的协作关系。

 进程同步:并发进程之间协作完成共同的任务,但是在先后次序等等条件上有一些制约关系。

进程之间的互斥关系是一种特殊的同步关系。因为它们在那群男生在排队和那一个女生谈恋爱的时候,也是有一个协调关系的。一次跟一群男生谈恋爱是很容易引起群架的~所以他们之间得有个先后关系。

二、举一个例子进行说明。

   A、B分别要执行操作a1,a2,a3和b1,b2,b3。顺序程序设计的执行顺序是:a1,a2,a3、b1,b2,b3,即必须严格按照顺序执行,先完成一个进程才能进行下一个进程。而并发运行:在单处理器上,顺序执行操作序列为a1,b1,a2,b2,a3,b3或a1,b1,a2,b2,b3,a3等,则称A和B的执行是并发的。从宏观上来看,并发性反映一个时间段内有几个程序都处于运行但尚未结束的状态。但要注意:并发执行也只是宏观上的角度来说,其实处理器在同一时刻只能处理一个程序,不要以为同一时刻处理器在处理多个程序(要是有多个处理器那就另当别论了~)。就像你做数学运算,让大脑同一时刻计算多道运算题是不可能的。计算机并发地计算多道题目只不过是先计算A题,但是还没执行完,然后又去执行B题,B题还没执行完,可能又会因为不明原因又去执行A题或者其他的题目。因为进程转换的时间非常短,在用户看来好像是多个程序在同时执行,也就是宏观上的并发运行。而如果是顺序运行,计算机只能先完成一道数学题,才能切换到下一道题。总的来说,并发程序设计比顺序程序设计更充分的利用了计算机资源,运行效率也会更高,所以自然的对计算机的配置要求也会相应的提高。

转载于:https://www.cnblogs.com/heshaojian/p/10718664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值