操作系统:进程管理

程序的顺序执行和并发执行

了解程序的如何执行的就先得明确什么是程序:
程序:是指令的有序集合,是一个在时间上按严格次序前后相继的操作序列,仅当前一操作执行完后,才能执行后继操作,它是一个静态的概念 。
一个程序只有经过执行才能得到最终结果

程序的顺序执行
一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的
程序的顺序执行特点 :

  1. 顺序性:处理器的操作,严格按照程序规定的顺序执行,即只有前一操作结束后,才能执行后继操作。
  2. 封闭性:程序是在封闭的环境下运行的。即程序在运行时,它独占整个计算机的资源,因而机器内各资源的状态(除初始状态外),只有本程序才能改变它。程序一旦开始运行,其执行结果不受外界因素的影响。程序既不会被中断也不会被重启。
  3. 可再现性:程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。只要给定相同的输入条件,程序重复执行一定会得到相同的结果。就比如我在加法程序上输入1和2,不论执行多少次得到的必然是3,不会因为CPU或者其他硬件的不同而发生改变(有问题的电脑咱就不讨论了)

利用这些特点能够极大的方便程序员检测和校正程序的错误

程序的并发执行
首先,程序的并发执行并不等同于程序的并行执行。
通俗来讲,程序的并行执行就好像大家都在同一条起跑线上,一声令下大家一起往前冲;而程序的并发执行是指在只要在这一段时间内,大家都可以上跑道进行跑动。

并发执行是指一组程序按独立的、异步的速度执行
并发执行不等于时间上的重叠

所以,程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中其执行时间在客观上互相重叠
并发执行是为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术 ,而这种操作技术有两种

  • 第一种是多道程序系统的程序执行环境的变化所引起的多道程序的并发执行

  • 第二种并发执行是在某道程序的几个程序段中,包含着一部分可以同时执行或顺序颠倒执行的代码

在这里插入图片描述

程序的并发执行,虽然提高了系统吞吐量,但也产生了下述一些与顺序执行不同的新特征:
(1)间断性
程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,致使在并发程序之间形成了相互制约的关系。例如,在图2-2中的I、C和P是三个相互合作的程序段。当计算程序完成Ci-1的计算后,如果输入程序I尚未完成Ii的处理,则计算程序就无法进行Ci处理,致使计算程序暂停运行。又如,打印程序完成了Pi的打印后,若计算程序尚未完成对Ci+1的计算,则打印程序就无法对Ci+1的处理结果进行打印。一旦使某程序暂停的因素消失,则程序便可恢复执行。简言之,相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。
(2)失去封闭性
程序在并发执行时,多个程序共享系统中的各种资源,因此这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。例如,当处理器资源被其它程序占有时,某程序必须等待。
(3)不可再现性
程序在并发执行时,由于失去了封闭性,也将导致失去其可再现性。例如,有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N=N+1操作;程序B每执行一次时,都要执行print(N)操作,然后再将N置成“0”;程序A和B以不同的速度运行。这样,可能出现下述三种情况(假定某时刻变量N的值为n)。
N=N+1 在print(N)和N=0之前,此时得到的N值分别为n+1,n+1,0。
N=N+1 在print(N)和N=0之后,此时得到的N值分别为n,0,1。
N=N+1 在print(N)和N=0之间,此时得到的N值分别为n,n+1,0。
上述情况说明,程序在并发执行时,由于失去了封闭性,其计算结果已与并发程序的执行速度有关,从而使程序失去了可再现性,亦即,程序经过多次执行后,虽然其执行时的环境和初始条件都相同,但得到的结果却可能各不相同。

posted @ 2021-04-14 20:42  Zeker62  阅读(86)  评论(0编辑  收藏  举报